@crazyboy wrote:
首先,非常感谢各位留步看帖,本人某学校计算机专业应届毕业生,业余爱好IOS逆向,最近刚刚拜读完大神的小黄书,目前正在做微信抢红包练手,目的就是为了完整地走一遍逆向的流程,熟悉逆向的通用方法,逆向技巧和工具使用,参考资料为http://mp.weixin.qq.com/s?_biz=MzA3NTYzODYzMg==&mid=2653577384&idx=1&sn=b44a9c9651bf09c5bea7e0337031c53c&scene=0#wechatredirect,虽然网上有代码,别人也做过了很多次,但自己做的过程中还是会遇到很多问题,作为一个逆向新人,发这个帖子的目的有两个,一是向各位前辈们请教问题,希望可以得到一些指导,二是提醒后来者可能会遇到的问题,避免再走弯路。欢迎各位技术爱好者一起交流,也希望有兴趣的小伙伴可以私聊我,一起踩坑,交流。最后,祝本站越办越好,各位爱好者在大牛们的带领下技术进步。
微信抢红包踩坑如下:有一些已经找到解决方法,有一些没有找到解决方法,希望了解的人可以指出。
1 使用cycripy定位到BaseMsgContentViewController后,使用logify生成的Tweak.xm替换Tweak工程定位函数时,编译报错,错误主要有这样几个:
1)错误描述:Tweak.xm:2: error: %orig does not make sense outside a method
错误原因:Tweak.xm中第一行的方法以.开头导致(猜测是因为某种机制的原因吧,具体原因不详,请了解者指 出)
解决方法:1 在Tweak.xm中第一行方法的.前面加上test字符 2 直接删除第一个方法
2)错误描述:unknown type name xx
错误原因:logify生成的Tweak.xm中的方法参数或返回值引用了微信中的类,而这些类是我们没有的
解决方法:可以通过将参数或返回值中的该类型修改为id类型,但只能使得部分方法通过编译,仍然有一些方法无法通过编译,暂时的折中方案可以直接删除这些无法通过编译的方法,但这种折中方法不具有普适性,在逆向其他应用时,可能会导致误删待定位的方法(求更好的解决方法)。
3)错误描述:no type or protocal named xx
错误原因:也是缺少协议类
解决方法:直接删除Tweak.xm中引用该协议的方法,暴力而不具普适性(此处同求解决方法)。
2 关于测试机采用ios系统导致无法使用syslog查看日志的问题:
本人测试机为ios9.3.2的ipad,无法使用syslog,据说ios9.3及以后版本都不能使用,待验证,解决方法是使用socat,具体使用方法请参考帖子http://bbs.iosre.com/t/ios-socat/139。
3 关于查看系统日志如何定位方法的问题:
微信抢红包参考贴中给出了思路,拿到BaseMsgContentViewController后,如何根据日志定位出目标函数就是addMessageNode:layout:addMoreMsg:方法?毕竟日志中触发了很多的方法,难道就是根据方法名猜测加手工验证吗?理科男,希望可以得到更好的逻辑解释。
4 关于BaseMsgContentViewControlle类的addMessageNode:layout:addMoreMsg:方法调用栈的问题:
参考贴中,作者说是为了优化抢红包功能,在不用打开群的前提下完成自动抢红包,优化的方法是通过动态调试获取addMessageNode:layout:addMoreMsg:方法的调用栈,然后定位高级的消息处理函数,本人使用http://iosre.com/t/lldb-oc/6711中的方法在addMessageNode:layout:addMoreMsg:方法中下断点,并使用bt指令输出方法调用堆栈信息,但bt指令输出的堆栈信息和参考贴有出入,参考贴中貌似是一次输出了整个调用链,而本人只得到了一个方法的地址,并且根据堆栈中的方法地址还原调用者,但是计算得到二进制文件的地址并不是一个方法的开始处,求解答。
5 试用版的hopper每半个小时就会自动关闭,使用hopper对砸壳后的微信二进制文件进行分析时,半小时内无法完成分析,想了解一下其他人都是怎么面对这个问题的,是否有备选方案。
6 未完待续。。。。。。。。
Posts: 6
Participants: 3