逆向分析某招聘app

今天看了一篇文章《另辟蹊径的网络协议分析方法》,决定也来分析分析博主分析的这个app

首先从app入手,将已经安装到手机中apk文件导出来

上面那个base.apk是从Andorid 5.1系统中导出来的,下面com.hpbr.bosszhipin-1.apk是从andorid 4.4.2系统中到导出来的。

分析classes.dex

解压base.apk重点分析dex文件


反编译class.dex

将解压出来的classes.dex,通过Andorid逆向助手反编译dex,会产生classes这个目录,这个目录都smali代码。

根据博主的经验,直奔目标MD5.smali

F:\boss\base\classes\com\monch\lbase\util\MD5.smali

相信大多数人没接触过smali都是一脸懵逼,这代码太难懂了。不过不用担心,利用一些大牛写的工具我们完全可以不用懂smali代码也能进行逆向和添加我们的代码。



通过jadx-gui分析classes.dex代码

利用jadx-gui这个工具直接打开classed.dex就可以看到原来的代码逻辑,我们只需将str这个字符串通过Log日志打印出来就可以看到加密前的字符串了。把我们的代码加入到原来的18行之前就可以了。


Android Stuido编写需要添加的代码

通过Android Studio ->Build->Compile to smali这个菜单就可以将java代码编译成smali代码了,如果没有这个菜单请安装java2smali这个插件


编译MD5.java 成MD5.smali


需要插入的代码


将这两行代码粘贴到update这行代码之下


插入后重新打包classed.dex


替换原来base.apk中的classes.dex


签名


安装

通过adb install base_sign.apk安装到手机中去。

这里需要注意:如果没有签名会安装失败,安装之前将原来的应用要卸载,因为签名不一样了。如果代码有问题安装成功了程序也会崩掉,请通过adb logcat | findstr “包名”查看日志,找出问题代码的位置,

如果安装成功,程序没有崩溃就可以看日志了,输入adb logcat | findstr "ghost"


日志过滤

到这儿我发现并没有什么用,因为毫无利用价值。于是我有从另外一个方向入手,抓包。

直接上我们的神器,Fiddler->Tools->Connections->Allow remote computers to connect打勾



配置fiddler


抓包过滤信息


直接通过浏览器访问连接
格式化后的信息

总结:分析dex中的代码,然后通过Android stuido将需要插入的代码编译成smali代码,插入到目标文件中后打包签名调试。

文中用到的工具:

逆向助手(集合了多种命令行工具的图形工具)

jadx-gui apk,dex反编译工具,反编译出来的代码比dex2jar反编译出来的代码更容易懂

fiddler web调试神器

java2smaliAndorid Stuido中的直接反编译java代码的插件

你可能感兴趣的:(逆向分析某招聘app)