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

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

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

将解压出来的classes.dex,通过Andorid逆向助手反编译dex,会产生classes这个目录,这个目录都smali代码。
根据博主的经验,直奔目标MD5.smali
F:\boss\base\classes\com\monch\lbase\util\MD5.smali
相信大多数人没接触过smali都是一脸懵逼,这代码太难懂了。不过不用担心,利用一些大牛写的工具我们完全可以不用懂smali代码也能进行逆向和添加我们的代码。

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

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







通过adb install base_sign.apk安装到手机中去。
这里需要注意:如果没有签名会安装失败,安装之前将原来的应用要卸载,因为签名不一样了。如果代码有问题安装成功了程序也会崩掉,请通过adb logcat | findstr “包名”查看日志,找出问题代码的位置,
如果安装成功,程序没有崩溃就可以看日志了,输入adb logcat | findstr "ghost"

到这儿我发现并没有什么用,因为毫无利用价值。于是我有从另外一个方向入手,抓包。
直接上我们的神器,Fiddler->Tools->Connections->Allow remote computers to connect打勾




总结:分析dex中的代码,然后通过Android stuido将需要插入的代码编译成smali代码,插入到目标文件中后打包签名调试。
文中用到的工具:
逆向助手(集合了多种命令行工具的图形工具)
jadx-gui apk,dex反编译工具,反编译出来的代码比dex2jar反编译出来的代码更容易懂
fiddler web调试神器
java2smaliAndorid Stuido中的直接反编译java代码的插件
网友评论