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

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


二、iOS逆向之《代码注入两种方式》_第1张图片
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) 完毕

你可能感兴趣的:(二、iOS逆向之《代码注入两种方式》)