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把该文件导入项目中,可以查看头文件信息啦。
一、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把该文件导入项目中,可以查看头文件信息啦。
相关文章推荐
- iOS常见bug-持续记录
- iOS OC -date日期的类的一些关键用法
- 【iOS学习】六、protocol的使用方法
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- [iOS Keychain本地长期键值存储]
- iOS OC07_NSDate
- 关于TImer的两种初始化方法总结,自学iOS的哥们过来看看
- ios框架
- 浅思OC的语言的动态特性
- IOS 图片折叠效果实现
- 关于iOS自动布局学习心得
- iOS高仿城觅项目(开发思路和代码)
- iOS调整状态栏字体颜色
- 使用ReactiveCocoa实现iOS平台响应式编程
- Nagios 利用NSClient++的check_nrpe方式使用自定义脚本监控windows
- IOS学习网址
- iOS开发学习笔记三 —— Reveal
- iOS OC06.2_字典
- 一个iOS开发者的修真之路
- iOS开发多线程篇—线程安全