iOS-砸壳app并导出头文件

AppStore下载的程序都会加壳,这个时候想要拿到程序中的头文件来做分析就需要砸壳,然后才能用classdump来导出头文件。
这里用微信来举例:

  • 1.先定位微信文件位置。
    有很多方法可以定位到微信进程的文件。这里用ps命令来查找(当然你的手机得安装ps工具)。
    Kaitode-iPhone:~ root# ps -e | grep WeChat
     3742 ??         0:11.24 /var/containers/Bundle/Application/5C6E85D3-691F-4C75-A563-4EB426FB60B0/WeChat.app/WeChat
     4113 ttys000    0:00.01 grep WeChat
    
  • 2.使用dumpdecrypted砸壳WeChat
    • dumpdecrypted可以Mac上使用git clone https://github.com/stefanesser/dumpdecrypted.git命令直接下载然后make就会生成dumpdecrypted.dylib文件。
    • 拷贝dumpdecrypted文件到手机上。
      Kaito:dumpdecrypted Kaito$ scp dumpdecrypted.dylib [email protected]:/tmp
      
    • 获取WeChat沙盒路径。
      这里用到了Cycript工具,先在Cydia上搜索Cycript进行安装。
      Kaitode-iPhone:/tmp root# cycript -p WeChat
      cy# dir = NSHomeDirectory()
      @"/var/mobile/Containers/Data/Application/7BCD8E9F-0783-4668-85C5-243DFCFF6998"
      cy# 
      
    • 进入沙盒Documents文件夹。
      Kaitode-iPhone:/tmp root# cd /var/mobile/Containers/Data/Application/7BCD8E9F-0783-4668-85C5-243DFCFF6998/Documents
      
    • 拷贝dumpdecrypted.dylib到Documents文件夹下。
      cp /tmp/dumpdecrypted.dylib .
      
    • 砸壳(ios9.3.2以上版本先执行su mobile 命令否则会失败报错:kill 9)
      DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/5C6E85D3-691F-4C75-A563-4EB426FB60B0/WeChat.app/WeChat
      
  • 4把砸壳后的WeChat.decrypted拷贝到Mac上
    scp  WeChat.decrypted [email protected]:/tmp
    
  • 5导出头文件
    这里用到了classdump工具可以将Mach-O文件中的Objective-C运行时的声明的信息导出,即编写OC代码时的 .h文件。安装和详细信息查看可以去官网http://stevenygard.com/projects/class-dump/
    class-dump -s -S -H WeChat.decrypted -o WCHeaders
    

这样在WCHeaders文件下就会有导出的微信头文件了。

你可能感兴趣的:(iOS-砸壳app并导出头文件)