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”,那么逆向工程从某种角度讲也包括反编译这项技术,这样一对比,可能我们就更容易理解逆向工程的定义了. 我们引 ...
随机推荐
- WCF全面解析第二章 地址(Adress)
2.1 统一资源标识(URL) 2.1.1 Http/Https 2.1.2 Net.TCP 2.1.3 Net.Pipe WCF只将命名管道专门用于同一台机器的跨进程通信. 2.1.4 Net.Ms ...
- oracle中的记录类型
单词RECORD有“记录”的意思,因此RECORD也称为“记录类型”,使用该类型的变量可以存储由多个列值组成的一行数据. 在声明记录类型变量之前,首先需要定义记录类型,然后才可以声明记录类型的变量. ...
- Ios拦截手机短信程序
引用 1.手机要越狱,没有越狱的话,下面的可以不用看了! 2.IOS 要5.0以上,4.xx的同上 首先,声明下!由于公司移动开发的项目中,需要根据手机的内容进行逻辑处理,也就是要实现手机短信拦截 ...
- 敏捷开发之道(四)Scrum概述
上次的博文敏捷开发之道(二)极限编程XP和敏捷开发之道(三)极限编程XP续中,我们介绍了一下敏捷开发中的XP开发方法,今天咱们来了解另一个比较流行的敏捷开发方法--Scrum. 1.Scrum简介 S ...
- 如何编写好的jQuery代码
本文就是自己看,如果您不小心进到了这里,请看源处,是这个作者翻译的:http://blog.sae.sina.com.cn/archives/4157 讨论jQuery和javascript性能的文章 ...
- Sql例子Sp_ExecuteSql 带参数
Declare @i int, @projectCount int ) --参数 ) ) ) ) ) ) --循环变量起始 --得到所有的项目 select @projectCount = count ...
- html+css学习笔记 4[定位]
如何让图1中的div2移动到如图2上的位置: 思路:哪些css命令能够影响盒子显示的位置呢? relative相对定位/定位偏移量 position:relative; 相对定位 a ...
- Linux/Ubuntu常用快捷键
问题描述: Linux/Ubuntu常用快捷键 问题解决: +++++++++++++++++++ 全局系统 +++++++++++++++++++++ Alt + F1:相当于w ...
- Eclipse插件开发 swt ComboBoxCellEditor CCombo 下拉框高度
效果图: 代码如下 bindingPageTableViewer.setCellModifier(new ICellModifier() { public boolean canModify( ...
- 【Unity--Apwork框架】AOP编程--拦截,用于缓存和异常处理(Unity框架的拦截注入-Interception)
第一步:定义拦截行为:CachingBehavior 和 ExceptionLoggingBehavior 他们都继承接口:IInterceptionBehavior (程序集 Microsoft.P ...