「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
为什么学习逆向
- iPhone越狱机一台, 毕竟巧妇难为无米之炊嘛.
- 学习逆向有助于我们了解iOS底层的实现逻辑, 进而学习其编程逻辑和思维方式, 提高自己的编码能.
- 看到别人APP中有实现的牛X的功能, 想仿做一个但是又不知道其实现方式, 那么就可以通过逆向的能力来查看其实现的逻辑.
- 当然了想对应的, 别人如果有了逆向的能力, 那么你的APP在他眼中就是裸奔. 所以学习逆向可以保护你APP的关键信息的安全(毕竟你也知道如何破解,那么相对应的就有一定的防护能力).
逆向是个好知识, 但是管好自己, 仅做学习, 莫伸手伸手必被抓
逆向入门必备知识
言归正传, 逆向不是一个好的选择, 相对于正向而言是难的, 并且需要一定的底层基础知识
- iOS的正向知识是必须有的, 就好比警察抓小偷, 要先带入小偷的人设思维才能理解小偷为什么要这么做.
- APP的签名机制也是必须要了解的, 当然这个基础
- 还有iOS逆向的一些工具使用(MonkeyDev, frida-ios-dump, class-dump, restore-symbol, LLDB, IDA, Charles)等.
- ARM汇编的能力, 这个能最为重要也是必要考验你的基础实力的, 当然如果不是特别了解汇编的话, 我们还有强大的IDA, 用做一般的逆向直接看伪代码也是可凑合的
逆向简单的入门流程
前置流程
- 首先你要拿到目标APP的ipa包
- 然后将ipa包中的二进制文件进行脱壳操作
- 再使用class-dump将二进制文件的头文件导出
- IDA反编译二进制文件
逆向流程
- 一般逆向都可以从界面入手, 定位到具体的类和控制器
- 然后在类的头文件中通过方法名, 查看是否有我们需要的方法
- 找到这个方法名, 通过IDA中查看该方法的汇编实现(当然可以看伪代码)
- 通过查看汇编来还原该方法的实现逻辑及调用顺序
逆向成果
拿到目标APP中的核心代码后, 就可以制作插件
- 修改目APP中的核心代码
- 制作动态插件
- 将插件打包进原先的APP中