iOS代码注入

1.空工程安装

目的:让设备接收你安装工程的描述文件,为了重签名应用能够成功.

2.将砸壳后微信的ipa包放入工程根目录APP文件夹下
ipa包目录位置
3.将脚本文件放入工程根目录下
脚本文件目录位置.png

脚本执行操作内容已注释,如下图所示:


脚本文件.png
4.进⼊入⼯工程,在BuildPhases内添加脚本
添加脚本文件
4.1在⼯工程内设置脚本路路径
设备脚本路径

然后运行应用,微信就让我们重签名了

5.代码注入思路:

应用加载到iPhone的流程是DYLD将可执行文件(MachO)加载到内存中,DYLD会动态加载Frameworks中所有的动态库,那么在Frameworks中加一个自己的动态库,然后在自己动态库中hook和注入代码

5.1 动态库存放的位置:Frameworks

显示app的包内容


Frameworks
5.2 找到可执行文件WeChat
MachO文件
5.3 用MachOView打开可执行文件WeChat,在Load Commands里可以查看到动态库
Load Commands
5.4 自己创建一个Framework:TARGETS添加:
新建Framework
5.5 新建一个InjectCode类
InjectCode类
5.6 想实现刚加载就要运行,代码就要写在load方法里
load方法

编译运行一下在包内容中的Frameworks库中就有了我们新建的Framework

5.7 运行,并没有成功,没有执行load里的代码

原因:用MachOView打开可执行文件WeChat,在Load Commands找不到HankHook.FrameWork

5.8 将HankHook.FrameWork写入MachO文件

需要用到工具:yololib
yololib同样把yololib文件放入根目录,然后用脚本执行即可


截屏2020-05-16 下午4.51.15.png

脚本注入
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目录

用终端定位到当前根目录,执行命令:

./class-dump -H WeChat -o ./Heaers

然后根目录下就会生成一个Heaers文件夹


Heaers文件夹

然后我们可以根据我们真机调试时获取到的控制器文件及方法,然后从Heaers文件夹找到该控制器的类,就能够找到相关的属性和方法,我们就可以通过头文件中的属性获取到我们想要的信息.
以下是我代码注入的内容:


代码注入内容

然后就可以获取到登录界面下我们输入的用户名和密码了
后续的骚操作还需要继续研究.

ps:重签名后的微信尽量不要用大号登录,微信会检测到然后被封,钱包里有钱的话可以申请解封,不过有次数限制.

我刚刚看了下,重签名微信文件有点大,推了好久还没推上去,先附上demo地址,推送成功后会自动更新的.GitHub推不上去,我放百度云了,提取码:uiks
Demo:代码注入

MachOView: 提取码: mui7

最后感谢一下逻辑教育Hank老师代码注入公开课的分享

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。