二、iOS逆向之《代码注入两种方式》

概论
通过操作演示流程可以得知一个知识点:就是通过把framewrok文件或者dylib文件写入程序中,系统会通过自动调用LC_LOAD_DYLIB的方式读取framework或者dylib文件,从而调用我们自己写的代码。通过MachO软件可以查看到MachO文件中所链接到的dylib文件。如图所示:


MachO软件读取MachO文件查看dylib

如图所示:HQHook便是我自己注入进去的

一、通过framework方式注入

1.0 新建工程WeChat,并引入自动签名shell脚本。
  • 通过上一篇文章的知识点做一下几个操作:
    (1) 新建工程WeChat,然后通过手机运行一次,并通过手机验证描述文件。
    (2) 在工程中引入appSign.sh自动签证脚本
    (3) 在project根目录下新建文件夹APP,把越狱版的微信拷贝进去。
    (4) 运行Xcode,测试能否运行微信。
    (5) 成功则继续下一步
2.0 创建.framework,并复制到.ipa包内

(1) 增加一个名为HQHook(选择Cocoa Touch Framework)的Target
(2) 并在生成的HQHook文件夹中添加一个类Inject.{h,m},在.m文件中添加如下方法

- (void)load {
    NSLog(@"framework:❄️❄️❄️❄️❄️❄️❄️");//如果代码注入则会打印小雪花
}

(3) 编译此Target生成HQHook.framework
(4) 将HQHook.framework复制到已越狱微信WeChat.ipa包内的frameworks文件夹内。
(5) 使用yololib对包内的WeChat MachO文件进行注入动态库HQHook.framework。在WeChat包内容目录下执行如下代码命令

# WeChat 是微信包内的MachO文件,就是对这个文件进行注入。
# Frameworks/HQHook.framework/HQHook 通过yololib注入的其实是这个路径的文件。
# 使用yololib之前,先把下载好的yololib文件拷贝到系统目录(/usr/local/bin)下,这样就可以直接使用yololib命令了,否则必须使用全连接执行。
$ yololib WeChat Frameworks/HQHook.framework/HQHook

(6) 重新打包生成.ipa包,在可以看到PayLoad文件夹目录下执行下面的命令即可完成打包操作,

$ zip -ry WeChat.ipa PayLoad/

(7) 打包好后,将其他不用的东西都删除,仅保留WeChat.ipa文件,将此文件复制到跟目录下新建的APP文件目录中。
(8) 最后再次运行Xcode至手机上
(9) 完毕

  • 补充:上面

二、通过dylib方式注入

1.0 新建工程WeChat,并引入自动签名shell脚本。
  • 通过上一篇文章的知识点做一下几个操作:
    (1) 新建工程WeChat,然后通过手机运行一次,并通过手机验证描述文件。
    (2) 在工程中引入appSign.sh自动签证脚本
    (3) 在project根目录下新建文件夹APP,把越狱版的微信拷贝进去。
    (4) 运行Xcode,测试能否运行微信。
    (5) 成功则继续下一步
2.0 创建.dylib,并复制到.ipa包内

(1) 增加一个名为HQHook(选择Mac OS下的Libray)的Target
并在Build Setting 中将Base SDK 的值改成iOS,再将Code Signing Identity的值改成 iOS development即可。
(2) 并在生成的HQHook文件夹中添加一个类Inject.{h,m},在.m文件中添加如下方法

- (void)load {
    NSLog(@"dylib:❄️❄️❄️❄️❄️❄️❄️");//如果代码注入则会打印小雪花
}

(3) 编译此Target生成HQHook.dylib
(4) 将HQHook.framework复制到已越狱微信WeChat.ipa包内的frameworks文件夹内。
(5) 使用yololib对包内的WeChat MachO文件进行注入动态库HQHook.dylib。在WeChat包内容目录下执行如下代码命令

# WeChat 是微信包内的MachO文件,就是对这个文件进行注入。
# Frameworks/HQHook.dylib 通过yololib注入的其实是这个路径的文件。
# 使用yololib之前,先把下载好的yololib文件拷贝到系统目录(/usr/local/bin)下,这样就可以直接使用yololib命令了,否则必须使用全连接执行。
$ yololib WeChat Frameworks/HQHook.dylib

(6) 重新打包生成.ipa包,在可以看到PayLoad文件夹目录下执行下面的命令即可完成打包操作,

$ zip -ry WeChat.ipa PayLoad/

(7) 打包好后,将其他不用的东西都删除,仅保留WeChat.ipa文件,将此文件复制到跟目录下新建的APP文件目录中。
(8) 最后再次运行Xcode至手机上
(9) 完毕

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容