非越狱.简单的iOS逆向Hook流程

我写本篇文章的目的只是想梳理一下初探逆向流程时的步骤及开发过程中的一些心得。

1. 首先需要一个砸壳过得ipa包,对app砸壳需要用到一部越狱手机及一些砸壳工具,没有的话可以直接从"pp助手mac版"下载一些越狱应用,这些越狱应用的ipa包都是经过砸壳后的.

2. 得到砸壳后的ipa包后,需要对其进行重签名把它运行到真机上进行调试. 

(1). 打开xcode新建一个工程并保证这个工程是可以直接运行到真机上进行行调试的。因为对ipa重签名的步骤都是一样的所以一些大佬直接把这个步骤封装到了一个脚本文件里面就是"appSign.sh"文件.

(2).将脚本文件拷贝到工程根目录下

非越狱.简单的iOS逆向Hook流程_第1张图片

(3).在工程中新建一个脚本并将路径指向脚本文件.这样在运行时就会执行脚本文件里的步骤

非越狱.简单的iOS逆向Hook流程_第2张图片

(4).在工程根目录下新建一个APP文件夹并将砸壳后的ipa包放进这个文件夹里面.因为需要运行脚本对其进行重签名并且脚本文件里的路径指向了这里.

非越狱.简单的iOS逆向Hook流程_第3张图片

(5).comm+R运行这个时候砸壳后的ipa包就运行到真机上面来了.可以对其进行view debug及lldb调试 例如输入:  po "内存地址"  + 回车  就可以找到该地址下的方法或控件的名称信息(内存地址可通过右边栏复制)

非越狱.简单的iOS逆向Hook流程_第4张图片

3. 其实我们平时开发时的编译执行代码都写在了一个叫做"MachO"的文件里.这时候可以用一个叫做"class-dump"的工具将头文件从这个文件里导出来

(1)首先把"class-dump"拷贝到 /usr⁩/local⁩/bin⁩ 目录下

非越狱.简单的iOS逆向Hook流程_第5张图片

(2) 打开终端运行  sudo chmod 777 /usr/local⁩/bin/class-dump   编译成功后就将class-dump工具安装好了

(3)通过工程根目录下的 Temp->Payload路径找到应用程序并右击显示包内容.从里面找到MachO文件(结合ipa包名称比较容易找到).将这个文件拷贝到工程根目录下

非越狱.简单的iOS逆向Hook流程_第6张图片

(4) 打开终端cd到工程根目录执行 class-dump -H "你的MachO文件名称" -o "你想存放头文件的文件夹的名称"/   命令.如果文件过多这段时间会很长.  执行完成后在工程根目录下就会出现所导出的所有头文件.可以将这个文件夹拖到sublime工具下查看研究.

非越狱.简单的iOS逆向Hook流程_第7张图片

4. 此时运行工程的时候是不会执行新建工程里的代码的.因为在利用脚本重签名的作用就是把砸过可的ipa包拷贝到新建工程的products下的app包里.这样就骗过了xcode让其运行砸壳后的ipa包.如何才能让砸壳的ipa运行我们的代码呢?

(1).刚刚说过我们的代码执行都是在ipa包里的一个叫做machO的文件里.这里用到了一个叫做MachOView的工具.我们将在上面的步骤里所获取的machO文件直接拖到这个工具里进性分析会发现在load commands目录下有一个DYLIB的东西会加载一些我们开发所需要的一些系统的第三方库,而在右边显示的正是这个库所在的路径。如果我们在我们的工程里新建一个framework并且在machO文件里添加一个指向这个framework的路径,那么在编译时ipa会不会去加载我们新建的库呢?

非越狱.简单的iOS逆向Hook流程_第8张图片

(2).在我们的工程里新建一个framework库并在库里新建一个类,注入我们自己的代码

非越狱.简单的iOS逆向Hook流程_第9张图片

(3).这里用到了一个叫"yololib"的工具进行代码注入.只需将这个工具拷贝到 /usr⁩/local⁩/bin⁩ 目录下即可使用. 然后在脚本文件里添加一句代码: yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/<你的framework库名称>.<你的framework库名称>/hook"

非越狱.简单的iOS逆向Hook流程_第10张图片

(4).设置完成后再去command+r运行. 就会发现我们添加的库已经被ipa下的machO所依赖并且我们添加到库中的代码也可以被执行.此时就可以利用viewdbug及lldb调试再结合我们导出的头文件通过runtime去改变ipa中的程序让其执行我们的代码.

你可能感兴趣的:(非越狱.简单的iOS逆向Hook流程)