最近开始使用Cydia Substrate框架进行逆向分析。
Cydia是什么东东我就不多说了,自行百度,听说它可以越狱什么的,修改手机配置什么的,但这里只是通过一个例子,介绍如何使用Cydia Substrate框架进行hook Android java代码。
相比Xposed框架,Cydia是有一定的优势的,根据我目前使用的情况,暂时有如下两点:
一是,Cydia能hook除了第一个smali文件夹外的第二第三个smali文件夹(如下图)。
这话怎说?APKTool反编译一个APK时,有时会分割成好几个smali文件,Xposed只能hook第一个smali文件夹下的smali文件,有点坑,但Cydia却都可以hook。
二是,Cydia能hook本地方法,而Xposed不可以。
基于以上两个优点,个人认为Cydia比Xposed好用,Xposed局限性较大,起码目前是这么认为的~
但有个技巧的方法只能在Xposed上用,就是通过刻意抛异常,根据异常日志找方法调用路径,这个在逆向分析常用的技巧无法再Cydia上用,因为Cydia抛异常后貌似不会以日志的形式打印出来,反正我试了很多次都不行。。。
开始说说如何使用吧
-------------------------------------------------------
1. 首先,下载com.saurik.substrate.apk,然后安装,手机必须得root过。这个是Cydia Substrate框架,需要另写模块加载进去。
安装之后点击 “Link Substrate Files” 即可。
2. 确定需要hook的对象APK中的方法,编写模块代码。
这里,我将hook一个apk里被混淆过的方法,并说明注意点。
因为混淆过,所以类名和方法名都被改成a,b,c等
该方法所在类:com.dianping.h.f.a.o
方法名:b,
参数:com.dianping.nvnetwork.u 类
返回值 :com.dianping.nvnetwork.u 类
好,开始写模块,先在Android Studio里创建一个工程,该工程不需要Activity,在工程创建一个java文件,该文件就是模块代码,然后下载Cydia Substrate SDK,解压后将其放到libs