您的位置:首页 > 移动开发 > IOS开发

iOS逆向笔记第一天

2015-07-23 20:09 330 查看
最近拜读了《iOS应用逆向工程》2,收获颇丰,以此记录。废话不多说,获取App头文件信息。

一、class-dump(OS X)

下载地址:http://stevenygard.com/projects/class-dump/

1.下载后拷到/Desktop/nq/myClassDump/class-dump,打开terminal(终端)。

2.登录管理员账户,将class-dump复制到/usr/bin下,赋予所有权限-777

sudo -s

#password(电脑密码)

cp -R ~/Desktop/nq/myClassDump/class-dump /usr/bin

chmod 777 /usr/bin/class-dump

3.将自己的App拷到/Desktop/demo/,右键属性,将App用归档实用工具打开,生成文件夹Payload

4.查找App的可执行文件(iosOpenP.app为Payload中App名称)

cd ~/Desktop/demo/Payload/iosOpenP.app

plutil -p info.plist | grep CFBundleExecutable

打印出来的即是App的可执行文件。

5.将Payload中.h文件全部复制到桌面--文件夹Headers

class-dump -S -s -H iosOpenP -o ~/Desktop/Headers

注意:该App是你自己的App,从AppStore下载的App都是经过加密的,像核桃一样,不能直接使用class-dump。

那怎么办呢?不要着急,可以先用工具(dumpdecrypted)把核桃壳砸开,然后使用class-dump。在使用dumpdecrypted之前需要安装工具OpenSSH。

二、OpenSSH(iOS)

1.首先你的移动设备必须越狱,越狱这里不再赘述。

2.移动设备在cydia安装OpenSSH

3.打开terminal(终端),通过无线网连接到你的设备(电脑和移动设备需在同一网段)

ssh root@192.168.135.114

alpine(默认密码)

注意:192.168.135.114为iOSIP

您唯一要配置的就是修改iPhone越狱后默认的Root账号密码,因为这个账号和密码将作为OpenSSH远程登录的凭证。iPhone有两种账户,默认下,账户的密码是alpine,如果被别有用心的人利用会给您的隐私或者iOS系统稳定带来麻烦,所以,密码建议一定要改。

passwd root

passwd mobile

三、dumpdecrypted(iOS)

下载地址:https://github.com/stefanesser/dumpdecrypted/archive/master.zip

1.下载后解压拷到文件夹(Desktop/nq/myDumpdecrypted/dumpdecrypted-master),打开terminal(终端),跳转到文件夹dumpdecrypted-master。(进入电脑用户操作,如在设备用户,ctl +
d 退出)

cd ~/Desktop/nq/myDumpdecrypted/dumpdecrypted-master

2.生成dumpdecrypted.dylib文件

make

3.连接到设备(192.168.135.114为iOSIP)

ssh root@192.168.135.114

alpine(默认密码)

4.运行程序你想砸壳的App(比如微信)

ps -e | grep Application

(如果-sh: ps: command not found,设备在Cydia中安装adv-cmds)

5.找到应用地址

/var/mobile/Containers/Bundle/Application/62B2C56F-342B-4745-8D8D-3BFB49EA05BB/WeChat.app/WeChat

WeChat即为可执行文件

6.找到file地址

cycript -p WeChat

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

得到地址

#"file:///var/mobile/Containers/Data/Application/1D8AB6C4-6088-48EF-92EC-857BADC545F1/Documents/"

7.将dumpdecrypted.dylib(榔头)放入应用file地址中。(进入电脑用户操作,如在设备用户,ctl + d 退出)

scp ~/Desktop/nq/myDumpdecrypted/dumpdecrypted-master/dumpdecrypted.dylib root@192.168.135.114:/var/mobile/Containers/Data/Application/1D8AB6C4-6088-48EF-92EC-857BADC545F1/Documents/dumpdecrypted.dylib

8.使用dumpdecrypted.dylib砸壳

ssh root@192.168.135.114

alpine(默认密码)

cd /var/mobile/Containers/Data/Application/1D8AB6C4-6088-48EF-92EC-857BADC545F1/Documents/

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib/var/mobile/Containers/Bundle/Application/62B2C56F-342B-4745-8D8D-3BFB49EA05BB/WeChat.app/WeChat

9.将砸壳成功生成的WeChat.decrypted文件拷回电脑。(进入电脑用户操作,如在设备用户,ctl + d 退出)

scp root@192.168.135.114:/var/mobile/Containers/Data/Application/1D8AB6C4-6088-48EF-92EC-857BADC545F1/Documents/WeChat.decrypted ~/Desktop/demo/wechat/

10.将WeChat.decrypted中.h文件复制到/Desktop/demoHeaders/wechat

class-dump -S -s -H ~/Desktop/demo/wechat/WeChat.decrypted -o ~/Desktop/demoHeaders/wechat

11.打开文件夹wechat,其中就是微信的头文件。用xcode把该文件导入项目中,可以查看头文件信息啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: