IOS 逆向工程之砸壳
xcrun –sdk iphoneos –show-sdk-path,查看输出,看看目前的默认SDK是什么版本,例如楼猪的是“/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk”。这里分2种情况:
或
SDK=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.X.sdk
,即iOS版本需要与SDK版本相同。 注意,5.1版SDK编译出的dylib是向下兼容的,可以用于iOS5.0,6.1版SDK同理。(注意:这个有待验证,楼猪还没这么干过)
GCC_UNIVERSAL=$(GCC_BASE) -arch armv7 -arch armv7s -arch arm64
改为
GCC_UNIVERSAL=$(GCC_BASE) -arch armv7 -arch armv7s
再将dumpdecrypted.c第76行的
if (lc->cmd ==LC_ENCRYPTION_INFO || lc->cmd == LC_ENCRYPTION_INFO_64)
改成
if(lc->cmd == LC_ENCRYPTION_INFO)
,保存。这里继续:接着直接cd到“/Users/wwc/Desktop/Code/dumpdecrypted-master/”下,然后输入“make”并回车,生成“/Users/wwc/Desktop/Code/dumpdecrypted-master/dumpdecrypted.dylib”。
1.将“锤子”放入设备中
查看iOS设备的IP地址,然后在Mac上使用scp命令将dumpdecrypted.dylib文件放到iOS设备中:
$ scp dumpdecrypted.dylib root@192.168.xxx.xxx:/var/tmp
root@192.168.xxx.xxx's password:
dumpdecrypted.dylib 100% 81KB 81.0KB/s 00:00
2.砸
选定一个让你觉得非常不爽或非常感兴趣的app,我就随便选了一个QQ。在iOS设备上打开iFunBox,查到它的可执行文件的路径为:/var/mobile/Applications/xxxxxxxx/QQ.app/QQ
然后用SSH连到iOS设备上,cd到刚刚动态库的路径:/var/tmp。
$ ssh root@192.168.xxx.xxx
root@192.168.xxx.xxx's password:
root# cd /var/tmp/
root# ls
FlipswitchCache/ com.apple.audio.hogmode.plist
L65ancd.sock= com.apple.tccd/
L65d.sock= com.apple.timed.plist
MediaCache/ cydia.log
RestoreFromBackupLock* dumpdecrypted.dylib*
SpringBoard_reboot_flag launchd/
com.apple.assistant.bundleservicecache.plist mobile_assertion_agent.log
砸壳(久等了):
- root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/xxxxxxxx/QQ.app/QQ
- 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: @0xd5a90(from 0xd5000) = a90
- [+] Found encrypted data at address 00004000 of length 3047424 bytes - type 1.
- [+] Opening /private/var/mobile/Applications/EBBD26E9-DDBA-481E-9403-84D159436889/QQ.app/QQ 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 QQ.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 4a90
- [+] Closing original file
- [+] Closing dump file
成果:
root# ls
FlipswitchCache/ com.apple.audio.hogmode.plist
QQ.decrypted com.apple.tccd/
L65ancd.sock= com.apple.timed.plist
L65d.sock= cydia.log
MediaCache/ dumpdecrypted.dylib*
RestoreFromBackupLock* launchd/
SpringBoard_reboot_flag mobile_assertion_agent.log
com.apple.assistant.bundleservicecache.plist
其中的QQ.decrypted就是目标产物
或
class-dump –arch armv7 Victim.decrypted
///////////////////////注意://///////////////////////////
楼猪直接执行了class-dump命令提取了头文件,命令如下:
class-dump -H QQ.decrypted -o /Users/wwc/Desktop/Code/headers
等待命令执行完毕,查看这个目录,你想要的东西就在里面了。
这是楼猪借鉴了各方经验,加上自己亲自动手操作得到的结论,可能某些地方存在纰漏,希望各位小伙伴积极指正。小弟在此拜谢了。
IOS 逆向工程之砸壳的更多相关文章
- IOS逆向-砸壳笔记
本人ios10.3.1 iphone6越狱机.方案三个. 方案一.dumpdecrypted.dylib 1. ssh到越狱机上,看WeChat可执行文件在哪. # ps aux|grep WeCha ...
- 最新iOS砸壳方式Frida (Mac OSX)
1. 安装Frida 首先需要安装Python3,我下载的是 macOS 64-bit installer 安装,因Macbook本机自带python为2.7.x,故需要配置~/.bash_profi ...
- ios 逆向工程文档汇总
iOS逆向工程工具集 http://www.jianshu.com/p/7f9511d48e05 移动App入侵与逆向破解技术-iOS篇 http://blog.csdn.net/heiby/arti ...
- iPhone手机越狱-逆向砸壳-代码注入
iPhone手机越狱 逆向砸壳 代码注入 工具下载 操作越狱 安装待逆向应用(app) 使用OpenSSH连接手机 找到应用二进制文件地址 找到应用document沙盒地址 拷贝砸壳工具(dumpde ...
- Talking Ben App砸壳记
需求: 导出Talking Ben app的头文件 实施: 1)准备材料: 越狱IOS设备一部,并安装Talking Ben游戏 IOS设备上安装open SSH IOS设备的/usr/bin 中安装 ...
- iOS逆向工程资料
链接: 基于iOS逆向工程的微信机器人 - 猫友会大讲坛第1期 我的失败与伟大 —— 创业必备的素质(狗神经验谈)
- 我也要学iOS逆向工程--全局变量
大家好!很久不见了.我之前去音乐学院进修爵士吉他去了.现在回来了.之前我一直在学windows开发和逆向.后来到了音乐学院,老师推荐了1个录音软件叫logic prox.可惜啊!当时我只有个索尼的笔记 ...
- iOS逆向工程,(狗神)沙梓社大咖免费技术分享。
序言 简介:本文针对于广大iOS开发者,作为一名开发者,仅仅专注于一门语言可能已经不适用现在的市场需求,曾经因高薪和需求量巨大,而火爆一时的移动端开发者(Android,ios),如今的路却是不再那么 ...
- iOS逆向工程概述(转)
逆向工程一词,对很多人来说可能很陌生,在android领域,我们经常会听到“反编译某个apk”,那么逆向工程从某种角度讲也包括反编译这项技术,这样一对比,可能我们就更容易理解逆向工程的定义了. 我们引 ...
随机推荐
- PHP流程控制语句
流程控制语句分为两种(自己学到的就有俩不过在网上看还有两种) 1:条件控制语句即(if, if else , elseif , switch case) if语句不多说了,基本上大家都知道.if el ...
- apache common包下的StringUtils的join方法
apache common包下的StringUtils的join方法: 关键字:java string array join public static String join(Iterator it ...
- json string 与object 之间的转化
1.将json string转化成object 1: public static T GetObjectFromJson<T>(string jsonString) 2: { 3: Dat ...
- MySQL多实例-精典故障案例
很久以前搭建过MySQL多实例,记得当时很顺利,呵呵!今天公司因为业务需要,我再一次搭建多实例.安装完MySQL后,初始化两个实例时,出现如下报错: 150915 1:10:36 [ERROR] C ...
- Azure Bill
MSDN的本月订阅的被用完了,所有的付费订阅均变成了不可用的状态. 信用额度为0元,还有2天能恢复 点击上方的MSDN订阅名会进入更加详细的账单,账单以月的形式提供. 邮件中也会通知您到了限定额度所停 ...
- 转学步园:jquery offset
JQuery Offset实验与应用 我们有时候需要实现这样一种功能:点击一个按钮,然后在按钮的下方显示一个div.当按钮位于角落时,div的位置设定就需要计算,使div完全显示. 我打算使用offs ...
- Yii2 composer更新后报错: Calling unknown method: yii\web\UrlManager::addRules()
网上搜了好多答案,基本上都是让你在composer.json里面添加这样一段话: "extra": { "asset-installer-paths": { & ...
- Codeforces Round #333 DIV2
D: B. Lipshitz Sequence time limit per test 1 second memory limit per test 256 megabytes input stand ...
- 日志文件切割服务logrotate配置及crontab定时任务的使用
1.下载logrotate 在Fedora和CentOS安装 yum install logrotate crontabs Debian和Ubuntu上 apt-get install logrota ...
- FFmpeg在Android上的移植之第一步
http://blog.sina.com.cn/s/blog_69a04cf40100x1fr.html 从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmpeg开发的. ...