美文网首页
二、iOS逆向之《代码注入两种方式》

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

作者: Hanfank | 来源:发表于2018-12-13 22:17 被阅读103次

概论
通过操作演示流程可以得知一个知识点:就是通过把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) 完毕

相关文章

  • iOS逆向 代码注入+Hook

    iOS逆向 代码注入+HookiOS逆向 代码注入+Hook

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

    概论通过操作演示流程可以得知一个知识点:就是通过把framewrok文件或者dylib文件写入程序中,系统会通过自...

  • iOS逆向二-代码注入

    iOS逆向二-代码注入 脚本自动重签补一下上一篇的尾巴!重签过程其实完全可以通过脚本完成,我们啥都不用干的下面这个...

  • iOS逆向之 代码注入

    一 framework注入 新建工程001--Demo,根据我上一篇文章的重签名方式之三 脚本重签名的xcodeC...

  • iOS逆向之代码注入

    准备工作 已去壳ipa,重签运行,可参照iOS逆向之砸壳与重签[https://www.jianshu.com/p...

  • iOS逆向三:代码注入二

    这部分需要对MethodSwizzle有一定了解会用,这里不对MethodSwizzle讨论 对某信静态分析加动态...

  • iOS逆向-代码注入

    代码注入 一般修改原始的程序,是利用代码注入的方式,注入代码就会选择利用FrameWork或者Dylib等三方库的...

  • iOS逆向之代码注入(framework)

    题外话:此教程是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,笔者一概不负责哟...

  • iOS逆向之代码注入(十)

    代码注入过程 1、新建一个工程;2、将微信Payload文件夹放入新建的工程中的APP文件夹里面; 3、在Buil...

  • iOS逆向之代码注入(dylib)

    题外话:此教程是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其他非法途径上,笔者一概不负责哟...

网友评论

      本文标题:二、iOS逆向之《代码注入两种方式》

      本文链接:https://www.haomeiwen.com/subject/aqlbhqtx.html