美文网首页iOS安全
微信逆向砸壳笔记

微信逆向砸壳笔记

作者: wdsh | 来源:发表于2017-08-01 14:42 被阅读86次

    我们需要用到的工作有

    dumpdecrypted-github

    class-dump-github

    class-dump-安装包(不会编译class-dump下载安装包)

    一台越狱的iPhone

    (Cydia) openSSH

    (Cydia) iFile

    (Cydia) Cycript

    上面提到的工具都要准备好,接来下我们就可以开始操作砸壳了。我们就拿微信来练练手吧~~

    解密微信可执行文件

    当然,我们从App Store下载安装的应用都是加密的,所以我们需要用一些工具为下载的app解密,俗称“砸壳”。

    首先我们需要一台已经越狱了的iPhone手机,然后进入Cydia安装需要的三款工具openSSH、Cycript、iFile。(调试程序时可以方便地查看日志文件)

    PS:笔者砸壳用的手机是iPhone5C  iOS版本:8.0.2(12A405)

    在电脑上打开iTunes下载一个最新版本的微信,然后连上iPhone,用iTunes装上刚刚下载的微信。(建议把原有的微信删掉再安装)

    连接ssh

    打开Mac的bash,用ssh连上iPhone(确保iPhone跟Mac在同一个网段)。openSSH的root密码默认为:alpine

    Mac连接iPhone的ssh

    寻找微信可执行文件

    接下来我们需要找到微信的可执行文件的具体位置 ,我们先把iPhone上的所有程序都关掉,唯独留下微信。然后输入命令ps -e | grep WeChat 或 ps -e | grep /var/mobile

    微信的可执行文件路径

    寻找Documents具体路径

    最后我们需要用Cycript找出微信的Documents具体路径。输入命令cycript -p WeChat

    进入cy#模式输入

    NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, ES)[0]  

    或 

    [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

    就能找出Documents的具体路径

    control+Z 可退出模式

    Documents具体路径

    编译dumpdecrypted

    进入dumpdecrypted源码的目录,输入指make来编译dumpdecrypted。一般make后会在当前目录下生成一个dylib文件。

    编译dumpdecrypted

    scp拷贝指令

    使用scp指令把dumpdecrypted.dylib拷贝到iPhone的Documents路径目录下输入指令:scp 源文件路径:目标文件路径

    例如: scp dumpdecrypted.dylib root@192.168.2.7:/var/mobile/Containers/Data/Application/BAE4C92C-1B94-4E80-984D-1D6BE4ED415E/Documents/

    scp

    开始砸壳!!!

    回到手机的ssh上,输入dumpdecrypted的指令。

    dumpdecrypted的具体用法:DYLD_INSERT_LIBRARIES=/PathFrom/dumpdecrypted.dylib /PathTo

    例如:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/C25B88DE-CCC3-4AC2-87BF-A8642B4B4B81/WeChat.app/WeChat

    dumpdecrypted敲壳

    mach-o decryption dumper

    DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.

    [+] detected 32bit ARM binary in memory.

    [+] offset to cryptid found: @0x56a4c(from 0x56000) = a4c

    [+] Found encrypted data at address 00004000 of length 38748160 bytes - type 1.

    [+] Opening /private/var/mobile/Containers/Bundle/Application/2C920956-E3D6-4313-BD88-66BD24CEBE9B/WeChat.app/WeChat for reading.

    [+] Reading header

    [+] Detecting header type

    [+] Executable is a FAT image - searching for right architecture

    [+] Correct arch is at offset 16384 in the file

    [+] Opening WeChat.decrypted for writing.

    [+] Copying the not encrypted start of the file

    [+] Dumping the decrypted data into the file

    [+] Copying the not encrypted remainder of the file

    [+] Setting the LC_ENCRYPTION_INFO->cryptid to 0 at offset 4a4c

    [+] Closing original file

    [+] Closing dump file

    这样就代表砸壳成功了,当前目录下会生成砸壳后的文件,即WeChat.decrypted。同样用scp命令把WeChat.decrypted文件拷贝到电脑上,接下来我们要正式的dump微信的可执行文件了。

    scp远程下载到本地,此操作不用登录到手机窗口运行,打开要存放WeChat.decrypted文件的本地目录即可

    输入指令:scp -r root@ip:文件目录/文件名 /目的地

    例如:scp -r root@192.168.2.7:/var/mobile/Containers/Data/Application/BAE4C92C-1B94-4E80-984D-1D6BE4ED415E/Documents/WeChat.decrypted ./

    scp远程下载

    dump微信可执行文件

    现在可以开始编译刚刚从Github下载下来的class-dump源码了,然后用xcode编译即可生成class-dump。(不会编译的可以去下载dmg版)

    导出微信头文件

    使用class-dump为刚刚砸壳后的文件WeChat.decrypted进行头文件提取。

    指令:class-dump -s -S -H --arch armv7 WeChat.decrypted -o ./hearder8.1-armv7

    注意:--arch armv7 根据手机指令集的具体情况来定

    指令集对照表:

    armv6设备:iPhone,iPhone2,iPhone3G

    armv7设备:iPhone3GS,iPhone4,iPhone4S

    armv7s设备:iPhone5,iPhone5C

    arm64设备:iPhone5S,iPhone6,iPhone6S

    参考文:

    链接:http://www.jianshu.com/p/5533c36947d5

    相关文章

      网友评论

        本文标题:微信逆向砸壳笔记

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