LLDB解密(砸壳)

作者: KinKen | 来源:发表于2018-12-27 15:58 被阅读19次

前言

前段时间学习过利用工具来对加密的应用ipa包砸壳,dumpdecrypted砸壳Clutch砸壳frida-ios-dump砸壳,这次通过LLDB自己手动操作可执行文件,dump出解密的文件(实际上dumpdecrypted就是这个原理),简单了解砸壳的原理。

一、原理

加密内容在手机启动执行加载到内存后,是解密的,可以根据Mach-O文件记录的加密内容开始偏移值以及加密内容大小,从内存中dump出已经解密的部分,再将dump出的部分写回原执行文件,这样就得到一个完整的解密的可执行文件。

二、从越狱手机拷贝出原可执行文件

以WeChat为例


查看可执行文件路径
拷贝
查看可执行文件加密字段信息
arm64架构

了解到了这两个数据信息,就可以利用LLDB进行解密,下面选择64位架构进行解密

三、使用LLDB砸壳

参考LLDB+debugserver调试第三方应用进入lldb调试界面,并且附加到目标进程,如下:

LLDB调试
查看主模块加载地址
image.png
我们使用的物理地址为:0x0000000100014000,先记录下来,接着根据cryptoofcryptsize字段dump出解密部分,如下:
dump出解密部分

这样dump出的文件是没有Mach-O header,因此要将dump出文件Patch回原可执行文件(可以先备份原可执行文件),Patch之前先说个注意点:

注意:手机上拷贝出的Mach-O文件含有两种架构,因此我们在Patch的时候要找对架构起始偏移

从下面的Mach-O头信息可知,我们需要将dump出的文件写回70041600 + 16384 =70057984的位置

架构起始偏移

Patch操作如下(过程会有点久,耐心等待):


到这一步,原可执行文件的arm64架构文件已经解密,最后修改一下对应的加密标识cryptID即可。

提取arm64架构的文件

lipo -thin arm64 WeChat -output /Users/kinken_yuen/Desktop/WeChat_arm64

使用Mach-OView修改字段


修改加密标识字段

最后使用class-dump能够正常dump出工程的类头文件,砸壳成功。

四、脚本调用LLDB砸壳

Github:https://github.com/BlueCocoa/dumpdecrypted-lldb

python脚本dump

参考

使用lldb砸壳

相关文章

  • LLDB解密(砸壳)

    前言 前段时间学习过利用工具来对加密的应用ipa包砸壳,dumpdecrypted砸壳,Clutch砸壳,frid...

  • LLDB 解密-砸壳 Framework

    准备工作 找出程序的可执行文件路径 root# ps aux | grep Snapchat 列出所有的 Fram...

  • 砸壳简介

    为何砸壳 appstore 给应用加密了 砸壳:不知道解密的确切方法,调用苹果的解密程序 砸壳的方式 两种砸壳方式...

  • 应用砸壳

    砸壳 软件脱壳,顾明思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密) 砸壳原理 应用加壳(加密) 应用砸...

  • iOS逆向与安全8.1:砸壳、初识Theos

    砸壳 软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 砸壳原理 应用加壳(加密)提交给...

  • iOS砸壳

    一、砸壳 软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 1.1 砸壳原理 1.1.1...

  • iOS 越狱应用砸壳

    应用砸壳:一般在客户端的应用为了防止别人反编译会对可执行文件进行加密保护(加壳),我们的砸壳就是解密的过程 静态砸...

  • 十、iOS逆向之《越狱砸壳/ipa脱壳》

    砸壳原理 砸壳顾名思义就是对软件进行逆向操作,对已加密的软件进行解密,从而获取真实软件源码。App Store下载...

  • [iOS逆向]18、砸壳

    软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 1、砸壳原理 1.1、应用加壳(加密)...

  • 使用 lldb 对应用砸壳

    进行 iOS 越狱开发的第一步,通常就是对从 AppStore 上下载安装的应用进行砸壳。我们常用的工具就是 du...

网友评论

    本文标题:LLDB解密(砸壳)

    本文链接:https://www.haomeiwen.com/subject/oalllqtx.html