为什么说第一个,因为之前做的tweak比较小,比如在别人的tweak上作了个小修改,在打包deb;或是网上找了源码,做了个anti-antidebug的小插件。本次我将逆向别人的一个app,并将dylib直接嵌入这个app。本人菜鸟,真的很菜,这里只是做个记录,给自己看,或是给新入坑菜鸟参考。
本来想分析这个app的验证算法,自己hook它的NSURLConnection类的这个方法:
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse * _Nullable *)response error:(NSError * _Nullable *)error
然后在这个方法里写入自己的服务器验证代码,无奈,这个app在调用这个方法的前后用了加密和解密,实在很难分析。当然也可以nop掉这些加密解密代码,但这样对原app改动太多,容易出错。因此,现在想简单化处理:nop掉app里对有无注册的验证后的跳转,让这个程序直接不需要注册。然后,我在合适的地方插入自己的服务器注册验证。下面开始:
1、用reveal 看关键几个viewcontrol 类。(有个叫Flipboard/ FLEX (Flipboard Explorer),更强大,能在手机上直接看,不需要连接电脑,以后有空试试这个。)
2、用logify.pl 生成这几个viewcontrol 类的tweak.xm。刚生成后,编译会有问题,需要修改。比如
提示:
(1)error: expected selector for Objective-C method - (void).cxx_destruct;
这是因为class_dump 头文件后,头文件里会有这个方法。只要在tweak.xm中把这个方法删掉即可。
(2) error: unknown type name 'CDStruct_c3b9c2ee'
经查找发现是一个方法的参数类型,因此我从class_dump 头文件中找到这个类型的定义,是个结构体,我把这个结构体定义放到tweak.xm中,结果报错更多,不知道啥原因,我只能先把CDStruct_c3b9c2ee 改成 id,先通过编译再说。