1.空工程安装
目的:让设备接收你安装工程的描述文件,为了重签名应用能够成功.
2.将砸壳后微信的ipa包放入工程根目录APP文件夹下
3.将脚本文件放入工程根目录下
脚本执行操作内容已注释,如下图所示:
4.进⼊入⼯工程,在BuildPhases内添加脚本
4.1在⼯工程内设置脚本路路径
然后运行应用,微信就让我们重签名了
5.代码注入思路:
应用加载到iPhone的流程是DYLD将可执行文件(MachO)加载到内存中,DYLD会动态加载Frameworks中所有的动态库,那么在Frameworks中加一个自己的动态库,然后在自己动态库中hook和注入代码
5.1 动态库存放的位置:Frameworks
显示app的包内容
5.2 找到可执行文件WeChat
5.3 用MachOView打开可执行文件WeChat,在Load Commands里可以查看到动态库
5.4 自己创建一个Framework:TARGETS添加:
5.5 新建一个InjectCode类
5.6 想实现刚加载就要运行,代码就要写在load方法里
编译运行一下在包内容中的Frameworks库中就有了我们新建的Framework
5.7 运行,并没有成功,没有执行load里的代码
原因:用MachOView打开可执行文件WeChat,在Load Commands找不到HankHook.FrameWork
5.8 将HankHook.FrameWork写入MachO文件
需要用到工具:yololib
yololib同样把yololib文件放入根目录,然后用脚本执行即可
5.9 检查MachO文件的Load Commands里是否有HankHook.FrameWork
如图,注入成功!
5.10 将根目录APP文件夹下砸壳的ipa包解压缩, 将WeChat.app显示包内容,找到WeChat可执行文件,将注入成功的MachO文件进行替换,然后删除原来的砸壳后的微信-7.0.8.ipa,打包Payload
zip -ry WeChat.ipa Payload
将生成WeChat.ipa放入APP目录,删除其他文件夹
6. 运行,成功!
控制台就会将load方法中的
NSLog(@"\n\n\n注入成功!\n\n\n🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺\n\n\n");
打印出来,说明我们已经代码注入成功了!
ps:因为调用微信支付时,启动的是我重签名的微信,我就把重签名的微信删除了,暂时截取不到注入成功后的截图!
6.1 代码注入成功了,我们还可不可以有一些更骚的操作呢?
用class-dump解析WeChat的头文件目录
6.2 class-dump解析MachO可执行文件
将class-dump放入根目录
用终端定位到当前根目录,执行命令:
./class-dump -H WeChat -o ./Heaers
然后根目录下就会生成一个Heaers文件夹
然后我们可以根据我们真机调试时获取到的控制器文件及方法,然后从Heaers文件夹找到该控制器的类,就能够找到相关的属性和方法,我们就可以通过头文件中的属性获取到我们想要的信息.
以下是我代码注入的内容:
然后就可以获取到登录界面下我们输入的用户名和密码了
后续的骚操作还需要继续研究.
ps:重签名后的微信尽量不要用大号登录,微信会检测到然后被封,钱包里有钱的话可以申请解封,不过有次数限制.
我刚刚看了下,重签名微信文件有点大,推了好久还没推上去,先附上demo地址,推送成功后会自动更新的.GitHub推不上去,我放百度云了,提取码:uiks
Demo:代码注入
MachOView: 提取码: mui7
最后感谢一下逻辑教育Hank老师代码注入公开课的分享