iOS 逆向工程的工具

       研究iOS APP,很想知道别人使用了什么样的技术,如何完成API请求的,但是,你没有他们的代码怎么办?“工欲善其事,必先利其器” 我们可以通过工具注入代码,探测别人的API请求和加密的方式。通过逆向技术,学习别人,使自己成长。

HTTP工具
  • Charles
          Charles 是一个代理HTTP/HTTPS工具,能够拦截网络请求,通过分析请求的URL来查看APP的API是如何请求的。有些APP通过SSL加密了请求,可以通过替换加密证书(中间人攻击)的方式来解决这个问题。在Charles中,可以看到网络交互的所有内容。
代码注入工具
  • Cycript
          如果是越狱设备,注入代码到APP中,Cycript可以让你看到别人的代码。Objective-C 和 Javascript 的混合 app,只用输入 Objective-C 的代码到控制台里,就能在 app 运行这些代码。它的交互编程环境(REPL)比 LLDB 的要好很多。尽管它不能中断,设置断点等等,但他对运行时代码非常友好。你可以直接输入下面的代码,基本上都是 Objective-C。
          作为开发者,要确定设置 ACL 来防止特定 api key 的权限问题。如果 app 能拿到这些 key,那 Cycript 也一定能拿到。对你自己的 app 的话,并不需要越狱。在Cycript官网上,提供了一些如何把这个工具嵌入到你自己的 app 的文档。
文件分析工具
  • 解密可执行文件工具 dumpdecrypted
          苹果有能力重签名我们的设备,所以苹果会加密商店里所有的 app,防止 app 被大家共享。然而,对于一个越狱设备来说,所有的这些加密的 app 都是可以被解密的。
          用它的时候,你只要简单的 clone 到本地,然后执行 make,再在你越狱后的设备上对 app 执行一下。我对 Lyft 的 app 执行了这个,很快就解密了所有的文件。你看这些文件的时候,会发现所有的 framework 都以 .decrypted 后缀结尾。

  • 分析可执行文件工具:IDAHopperclass-dump
          分析导出的文件,需要查看源代码,可以用到的以上的工具。当在编译一个 app 的时候,XCode 会创建一个由汇编组成的可执行文件。IDA 能很漂亮的输出这些可执行文件里的汇编代码,并且相互连接起来,你因此会看到一个由汇编代码组成的图。尽管 IDA 很贵,但是它的免费版本已经够用了。除了 64 位以外,基本都有。


      这篇逆向工程的博客未来会持续更新,加上一些图片和文字介绍来逐步细化操作。ReleaseNotes:

  • Add 2017-04-28 version 0.1

参考资料:

  1. iOS App 的逆向工程: Hacking on Lyft