iOS安全

微信逆向砸壳笔记

2017-08-01  本文已影响86人  wdsh

我们需要用到的工作有

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

上一篇下一篇

猜你喜欢

热点阅读