iOS逆向破解

10、代码的注入

2021-04-25  本文已影响0人  Jax_YD

上一篇文章中我们已经可以将砸壳后的APP安装到我们的手机上面了,这里我们将我们自己的代码,注入到APP中,在APP运行的同时也执行我们自己的代码。

⚠️ ⚠️⚠️ :我们下面的操作是在9、应用重签名原理中最后的使用shell脚本的工程基础上做的操作。

动态库的注入

$ ./yololib <可执行文件名> Frameworks/JaxHook.framework/JaxHook

⚠️ 注意:在我们第二步执行完毕之后,需要将修改过的可执行文件从新拷贝到APP包里面去的。这里建议大家从新打包,替换之前的ipa包ipa包 -> 解压 -> 将修改后的可行性文件进行替换 -> 替换之后从新打包

///打包指令
$ zip -ry xxx.ipa <解压后的文件>

将从新打包后的ipa包,替换之前的ipa包,然后从新运行工程,运行结果如下:

运行结果

到这里,有一点大家要注意。第一不是为了搞清楚我们自己的动态库到底能不能注入到APP里面。其实如果我们已经很明确动态库的名称和注入后的地址的话,直接操作第二步就可以了。因为动态库的注入,是Xcode帮我们完成的。

./yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/JaxHook.framework/JaxHook"

3、运行我们的工程就可以了。执行效果和上面的一样。

yololib是逆向的时候,使用到的一个工具,大家可以去Google一下。


修改APP中的方法执行

上面我们讲到了怎么去在APP中注入代码,但是仅仅是注入代码是不够了。下面我们一起来探讨一下,如何去影响APP原有方法的执行。
这进行下面的探讨的之前,大家要对一个知识点有所掌握,那就是Method Swizzle
利用OC的Runtime特性,动态改变SEL(方法编号)IMP(方法实现)的对应关系,达到OC方法调用流程改变的的目的。主要用于OC方法

方法交换
$ ./class-dump -H <可执行文件名> -o ./headers
/// 将可执行文件里面的函数名全部导出到执行的文件里面(此时指定的文件为`headers`)

yololibclass-dump这两个工具这里就不为大家提供,大家可以在网上下载最新的版本使用。

上一篇下一篇

猜你喜欢

热点阅读