美文网首页
LLDB 解密Framework

LLDB 解密Framework

作者: 77168ddcf2c6 | 来源:发表于2018-07-19 10:40 被阅读20次

除了使用dumpdecrypted去解密APP和framework的内容以外,也可以使用LLDB直接从内存中dump出解密后的模块。

0x1

获取framework文件,查看文件对应的偏移
以下是要执行的命令以及解释:

lemons-iPhone5S:~ root# ps aux | grep WeChat  //查看Wechat的沙盒目录
mobile    2636   0.0  2.7  1019472  27476   ??  Ss    9:14AM   0:15.37 /var/containers/Bundle/Application/4C23658C-1FC4-4616-A9CD-84E328C4A5CD/WeChat.app/WeChat
root      3316   0.0  0.0   525920    224 s001  R+    4:52PM   0:00.01 grep WeChat
lemons-iPhone5S:~ root# /var/containers/Bundle/Application/4C23658C-1FC4-4616-A9CD-84E328C4A5CD/WeChat.app
-sh: /var/containers/Bundle/Application/4C23658C-1FC4-4616-A9CD-84E328C4A5CD/WeChat.app: is a directory
lemons-iPhone5S:~ root# cd /var/containers/Bundle/Application/4C23658C-1FC4-4616-A9CD-84E328C4A5CD/WeChat.app
找到对应的MMCommon.framework,将MMCommon.framework复制到mac

0x2

在mac查看MMCommon.framework的加密偏移

cd MMCommon.framework
otool -hf MMCommon  //查看MMcommon的文件头部的基础信息
otool -arch arm64 -l MMCommon | grep crypt //获取64位机器加密数据信息

0x3

使用LLDB附加越狱机器,查看MMcommon进程的偏移
image list MMCommon
通过如下命令dump出解密后的二进制数据
memory read --force --outfile ~/Desktop/outputStream --binary --count 3928342 16384+0x00000000384829894

  • 3928342 是在上述otool -arch 命令中获取到的cryptsize的值,表明当加密数据的的大小
  • 16384 是在上述otool -arch命令汇总获取到的cryptoff的值,代表加密的数据在MMCommon中偏移
  • 0x00000000384829894 是在上述image list MMCommon中的模块基地址

上述命令执行完成之后会在桌面生成一个outputStream文件

0x4

修复文件,因为dump出来的文件都没有mach-O文件头,所以需要把dump出来的数据放回原来的framework里面,替换原来加密的数据

dd seek=2384834 bs=1 conv=notrunc if=/Users/lemon/Desktop/outputSteam of=./MMCommon

lipo MMCommon -thin arm64 -output MMCommon_arm64

  • 2384834是上述otool -hf的时候architecture 1中的offset的值加上16384(加密数据偏移的值),两者相加,得到了写入的加密数据在文件中的偏移值。
  • 替换之后,使用lipo 从FAT文件中提取arm64架构的文件。将MMcommon_arm64拖到MachOView中,修改cryptid为00000000。

相关文章

网友评论

      本文标题:LLDB 解密Framework

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