代码注入(上)

有了应用重签名的基础,已经能把其他App(比如WeChat)安装到自己的设备上了。

既然都安装上了,那能不能搞点事情呢?比如:调试、破解或者让安装在我们设备上的WeChat执行我们的代码呢?想要实现这些便有了代码注入

1、代码注入原理

一个App在执行的时候会执行3部分代码,第一部分为MachO文件的代码,第二部分为加入的FrameWork库,第三部分为系统库。
因为非越狱手机不能修改系统库,首先这个PassMachO是二进制文件,都是汇编,虽然也能修改,但是比较麻烦,目前我们不考虑;所以最简单就是再往App里面添加一个FrameWork库即可。

2、FrameWork库运行的规则

既然能Run起来,那加入一个FrameWork库就太简单了,但是我们加入的FrameWork库是在我们新建的工程(WeChatDemo)里面的,而当前运行的是WeChat.app里面FrameWork库。
那么如何让WeChat调用我们的FrameWork库,WeChat调用自己的FrameWork的规则是什么呢?这就涉及到了MachO文件,MachO中会明确的说明调用了那些FrameWork库。

3、初识MachO文件

MachO文件是什么呢?我们之前打开WeChat.app的时候有一个黑色的名称为WeChat的文件,这个就是MachO文件。

MachO

MachO只是一种格式而已,就和Windows上的.exe差不多。想到打开MachO需要一个叫MachOView的工具。用MachOView打开WeChat.MacO,就是下方所示。

MachOView

我们也可以用终端输入otool -l WeChat查看一下WeChat.MacO发现MachOView工具就是帮我们把终端显示的内容整理成可视化的而已。

WeChat.MachO

我们能看到FrameWorkLoad command下呢,打开MachoViewLoad command发现了之前重签名的FrameWorkmarsbridgemetwork.framework,原来只要WeChat.MachO文件中Load command标明了的FrameWork库都会被调用。

image.png

那我们如何将我们的FrameWork库插入到Load Comands中去呢?

4、Load Commands 关联 FrameWork 库

首先在Targets下新建一个FrameWork

新建FrameWork
WeChatHook

编译之后在/WeChat.app/FrameWorks下就会看到我们新建的FrameWork库,

image.png

插入的FrameWrok

运行一下很遗憾的发现没有执行我们加入的代码,因为打开MachOLoad Commands发现是没有我们的WeChatHook.frameWork的。

WeChat.machO

想要在Load Commands中关联我们的WeChatHook.frameWork库还需要一个工具yololib。建议把yololib放在/usr/local/bin下,ls后会看到pod也在这个文件夹下,因为这个文件夹下的Shell指令在任何地方都可以执行。

yololib

/usr/local/bin

接下来找到WeChaDemo工程下方的WeChaDemo.app,右键显示包内容。

在当前目录下向WeChat.machO中关联我们的FrameWork,终端输入yololib WeChat Frameworks/WeChatHook.framework/WeChatHook,就是给 WeChat.machO中注入了一个相对于WeChat路径下的FrameWork,因为WeChatHook.framework是文件夹,真正的FrameWork/WeChatHook.framework/WeChatHook

WeChatHook.framework
注入FrameWork

终端显示注入成功了,我们打开WeChat.MachOLoad Commands查看一下,发现了我们WeChatHook

WeChatHook

因为脚本的原因,脚本里面写的是先解压再覆盖,随意我们需要将WeChat.ipa重新压缩一下,不然就会覆盖我们现在已经注入的WeChatHookWeChat.machO文件。

将我们的修改成功的WeChat.machO拷贝出来到我们工程的WeChatDemoAPP下,然后对微信-7.0.5(越狱应用).ipa解压,替换PayloadWeChat.app中的WeChat.machO,删掉Payload之外的其他文件,然后重新压缩Payload

image.png

拷贝WeChat.machO

终端输入 zip -ry WeChat.ipa Payload,压缩后就重新得到了WeChat.ipa,如果不想重新压缩更改自动重签名脚本即可。

压缩

重新Run,发现输出了我们刚才注入的代码。

Logs

5、修改Shell脚本一步到位

我们既然用了Shell脚本那就希望更简单些,我们修改一下Shell脚本。

Shell脚本的最后添加上 yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/WeChatHook.framework/WeChatHook"

注意:我的FrameWorkWeChatHook.framework你叫什么自行修改。

6、DYLib注入

当前使用的是Framework注入的,也可以使用Library注入,原理是一样的,但是有一些细节要注意。

Library

Library生成的Target直接就会有.h.m文件不需要再新建,然后.m文件添加我们的+ (void)load;方法

image.png

Run一下,Show in Finder我们工程中的DYLib.app查看我们替换的WeChat.app中的FrameWork文件夹,并没有发现我们刚才新建的WeChatHook

image.png

注意:我们新建的WeChatHook.dylibMacOS的所以我们需要修改一些配置。
我们需要将MacOS的修改成iOS

image.png

image.png

配置一下,让Xcode帮我们把这个库Copy.app中去

image.png
image.png

修改添加的位置

位置修改

然后Show in Finder我们的DYLib.app/FrameWork中就能看到我们的WeChatHook了。

image.png

最后修改我们的自动重签名脚本

#注入
yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/libWeChatHook.dylib"

最后就成功的打出了我们注入的代码

image.png

以上就是代码注入(上篇)的内容,下篇正在努力整理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容