"专注实践:解析lldb砸壳实战技巧"

上一篇文章: "举一反三:iOS逆向App签名"

"金蛋破壳:iOS应用砸壳工具解密",介绍了如何通过工具砸壳,读者朋友可以先阅读一下。

本篇文章,我们将使用LLDB进行手动砸壳操作,以增强对iOS应用程序的逆向分析能力。

  • LLDB砸壳实现的原理

使用lldb砸壳是一种常见的逆向工程技术,旨在绕过iOS应用程序的加密保护,以便进行更深入的分析和调试。

通过lldb连接到运行中的应用程序,找到其可执行文件的内存地址,并将其内容dump到本地文件中。

这样,我们就可以绕过加密保护,获得对应用程序的完全访问,并进行后续的逆向分析工作。

本篇以某App为例,进行砸壳

下载好你想砸壳的App
  • 我们找到App的可执行文件
 ps -ax | grep app

 4215 ??         0:13.06 /var/containers/Bundle/Application/5C560292-9C39-4080-9D7A-3D83413EB127/app/app
  • 把可执行文件拷贝到电脑,通过otool 查看二进制文件的信息
otool -arch arm64 -l 二进制 | grep -C5 LC_ENCRYPTION
       cmd LC_MAIN
   cmdsize 24
  entryoff 2361676
 stacksize 0
Load command 12
          cmd LC_ENCRYPTION_INFO_64
      cmdsize 24
     cryptoff 16384
    cryptsize 34504704
      cryptid 1
          pad 0
cryptid为1,即为加密
  • 我们通过lldb进行进程附加
(lldb) image list
[  0] E11692A0-C528-3ADD-8B12-6BA7F7F8D51F 0x0000000100b80000 /private/var/containers/Bundle/Application/5C560292-9C39-4080-9D7A-3D83413EB127/app/二进制 (0x0000000100b80000)
  • memory read --force -outfile ./Decrypted.bin --binary --count 34504704 0x0000000100b80000+16384
34504704 bytes written to 'Decrypted.bin'

获取解密的数据Decrypted.bin

  • 用解密后的数据替换原加密数据
dd seek=16384 bs=1 conv=notrunc if=./Decrypted.bin of=二进制 
  • MachOView -> LC_ENCRYPTION_INFO 修改cryptid为0

在脱壳后,我们需要验证一下class-dump是否可行,以确认解密的Mach-O文件是否成功解密。

砸壳成功后,使用工具对其进行分析,例如 class-dump、Hopper、IDA 等,以查看其中的内容。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容