参考这边文章一步步操作:
http://dev.qq.com/topic/577e0acc896e9ebb6865f321
砸壳
目的:只有砸壳应用才能class-dump出头文件。
1. 首先通过pp助手,将dumpdecrypted.dylib放到微信的Documents目录中。
2. 进入微信安装目录,用dumpdecrypted.dylib进行砸壳
find / -name “WeChat”
进入这个目录后执行:
DYLD_INSERT_LIBRARIES=./Documents/dumpdecrypted.dylib ./WeChat.app/WeChat
在tmp目录找到砸壳后的文件:WeChat.decrypted
疑问1:dumpdecrypted.dylib能否在越狱手机上进行砸壳的原理是什么?
动态分析-cycript
目的:找到微信的消息处理入口。
- 找到微信对应的进程ID
ps aux | grep WeChat
疑问2:当微信没有进行时,该进程ID指得是什么?
- 打开微信,动态调试微信程序。
结果:
3.从中间的UIViewControllerWrapperView一步步往上推,
可以看到,这里并没有笔者所说的BaseMsgContentViewController类。
通过class-dump命令找到微信所有的头文件:
class-dump –arch armv7 -S -s -H WeChat.decrypted -o ./
在结果中确实可以找到BaseMsgContentViewController.h。
- 用Logify(通过名字可以猜测其作用是打印日志)为.h文件中的函数增加代码,以打印输入参数和输出参数:
logify.pl ./Headers/BaseMsgContentViewController.h > Tweak.xm
theos创建tweak
通过nic.pl创建tweak,可以先修改环境变量:
vi ~/.bash_profile
在最后增加这两行:
export THEOS=/opt/theos
export PATH=”/opt/theos/bin:$PATH”修改Makefile为“
执行make package install 时报错:
暂时未能解决Tweak.xm中的编译问题。先跳过吧。
动态分析-lldb
将手机连接xcode,执行命令debugserver *:19999 -a WeChat,输出错误:
adminde-iPhone:~ root# /Developer/usr/bin/debugserver *:19999 -a "WeChat"
debugserver-310.2 for armv7.
Attaching to process WeChat...
error: failed to attach to process named: "" unable to start the exception thread
Exiting.