越狱调试Reveal、debugserver、Class-dump、命令行工具、LLDB手动砸壳

一、Reveal

Reveal:界面、轻量级
Cycript:可以对内存访问
LLDB:可以看函数调用栈、下断点

1.1 Mac电脑安装Reveal
1.2 (越狱)iPhone,Cydia安装Reveal Loader

安装Reveal Loader之后,系统设置中会出现Reveal

打开系统设置页面进入Reveal设置打开对应APP

1.3、环境配置

导入dylib文件,由于新版本的Reveal只有Framework文件,所以需要修改Framework的可执行文件为dylib库

找到相关库

RevealServer拷贝到桌面,然后重命名为libReveal.dylib,然后拷贝到手机目录中。
在手机的/Library 目录下新建目录$mkdir RHRevealLoader,需要把libReveal.dylib拷贝到RHRevealLoader中。scp -P 12345 ~/Desktop/libReveal.dylib root@localhost:/Library/RHRevealLoader

重启手机(Reveal支持USB链接和Wi-Fi链接,如果使用Wi-Fi链接必须让手机和Mac保持统一局域网)
重启Mac的Reveal


二、debugserver

我们Xcode中的lldb可以调试手机中的应用,是因为手机中的debugserver开启的相关服务。所以在越狱环境中,我们只需要开启debugserver服务就可以利用LLDB远程调试三方应用了。

Mac中的debugserver,在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/中可以看到对应不同iOS系统版本的镜像文件


打开DeveloperDiskImage.dmg文件,进入usr/bin目录可以看到debugserver。这就是xcode安装到真机中的文件。

1.1、iPhone启动debugserver、Mac连接debugserver(这里是Wi-Fi链接)
  • iPhone中开启debugserver服务。
    $debugserver 主机地址:端口号 –a 应用进程 eg:./debugserver *:12346 -a WeChat
    由于主机地址是当前手机,可以使用*代替
    端口号:启动server服务,开放端口,让远程的LLDB通过sever调试进程

  • Mac上启动LLDB连接iPhone
    启动LLDB,$lldb
    连接debugserver,(lldb)process connect connect://手机IP:服务端口号 eg:process connect connect://192.168.254.240:12346

1、将debugserver先拷贝到桌面,然后拷贝到手机上 scp -P 12345 ~/Desktop/debugserver root@localhost:~/,最后会把debugserver放在/usr/bin/目录下,可以在任何地方都可以用debugserver
2、./debugserver *:12346 -a WeChat,iPhone中开启debugserver服务,手机WeChat界面已经没法动了

3、启动LLDB $lldb,链接debugserver process connect connect://192.168.254.240:12346,这个是Wi-Fi链接有点慢

(lldb) c 就能动了
(lldb) exit 退出,一退出应用就挂掉了,相当于杀掉应用

1.2、usb链接

1、端口映射

2、./debugserver *:12346 -a WeChat,iPhone中开启debugserver服务,手机WeChat界面已经没法动了
3、启动LLDB $lldb,链接debugserver process connect connect://localhost:12346,这个是usb链接

(lldb) process interrupt 进入暂停状态

pvcpviewspo 0x156911000 只有在暂停状态这些指令才有用哦

找到target和action

(lldb) p [(UIButton *)0x157ef94e0 allTargets]
(__NSSetM *) $7 = 0x0000000157abb4f0 1 element
(lldb) po 0x0000000157abb4f0
{(
    <WCAccountNewPhoneVerifyViewController: 0x156aa5200>
)}

(lldb) p [(UIButton *)0x157ef94e0 actionsForTarget:(id)0x156aa5200 forControlEvent:64]
(__NSArrayM *) $9 = 0x0000000157f45f00 @"1 element"
(lldb) po 0x0000000157f45f00
<__NSArrayM 0x157f45f00>(
onNext
)

(lldb) methods WCAccountNewPhoneVerifyViewController

(lldb) b 0x100479e38

0x10208c670 方法地址(物理地址)

0x100054000 去掉1(_PAGEZERO),0x000054000 偏移地址(ASLR)

方法地址(物理地址) = 偏移地址(ASLR) + 文件偏移地址(.hop中的地址,包含了1(_PAGEZERO))

1.3、手机中的debugserver
  • 系统自带的debugserver/Developer/usr/bin/

  • 自己的debugserver,配置到/usr/bin/目录中

1.4、把手机上的MachO拷贝到电脑

scp -P 12345 root@localhost:/var/mobile/Containers/Bundle/Application/1C5755EA-C7FD-4828-BCE2-40E38D467121/WeChat.app/WeChat ~/Desktop/

三、Class-dump

Class-dump是一个命令行工具,它通过查找MachO文件的相关段可以导出未经加密的APP的头文件。在逆向开发中,砸壳之后的第二件事就是使用它导出头文件。

安装
官网
下载class-dump $ git clone https://github.com/nygard/class-dump 拉下来
编译项目,生成命令行工具。直接使用。
将命令行工具导入/usr/local/bin/class-dump , 上权限 $sudo chmod +x class-dump

使用
命令格式:
单一架构:$class-dump –H MachO文件 -o 头文件存放目录 eg:class-dump -H WeChat -o ./headers/class-dump -H WeChat -o ./headers
多种架构:加上--arch 架构 如arm64:$class-dump --arch arm64 –H MachO文件 –o 头文件存放目录 eg:class-dump --arch arm64 -H Course -o ./Headers

1.1、Monkey中集成了Class-dump
1.2、Monkey项目中使用Class-dump

a、创建一个Monkey项目
b、TargetApp中添加越狱的.ipa包(eg:微信-7.0.5(越狱应用))
c、TARGETSMonkeyClassDumpBuild Settings中搜索MONKEY,把MONKEYDEV_CLASS_DUMP 改为 YES

d、build一下,会出现WeChat_Headers文件下,里面就是head了

四、命令行工具

一个命令行工具,其实就是一个程序。只要架构正确就可以执行

1、创建一个工程,写入如下代码

2、build一下,Show in Finder显示包内容,找到可以执行文件

3、来到文件夹下,./执行,file查看。arm64只能在手机上执行,然后移动到手机中

4、拷贝到手机中 scp -P 12345 DYZCmdTool root@localhost:~/,然后执行

5、带参数的,重复以上操作

./DYZCmdTool
./DYZCmdTool -a -b -c -d

五、LLDB手动砸壳

原理把手机内存中解密的部分拷贝出来,然后和加密的MachO对比,覆盖掉加密的

利用lldb导出内存中解密了的二进制数据

1、将手机上运行的微信的MachO拷贝到电脑桌面 scp -P 12345 root@localhost:/var/mobile/Containers/Bundle/Application/1C5755EA-C7FD-4828-BCE2-40E38D467121/WeChat.app/WeChat ~/Desktop/

cryptoff 16384 从这里开始加密。这里是十进制
cryptsize 101646336 这么大的大小是加密了的。这里是十进制
cryptid 1 加密算法为1

2、获取手机上微信MachO的物理地址0x00000001000b8000
2.1、DYZyueyu5s:~ root# debugserver *:12346 -a WeChat
2.2、(lldb) process connect connect://localhost:12346

3、内存文件拷贝(LLDB指令) memory read --force --outfile 输出文件路径 --binary --count 文件长度 内存地址(开始地址)
memory read 命令
--outfile 导出文件
--count 指定读取的数据大小
eg: memory read --force --outfile ./decryption.bin --binary --count 101646336 0x00000001000b8000+16384

4、合并文件(终端指令) dd seek=开始合并地址 bs=1 conv=notrunc if=输入文件路径 of=输出文件路径
dd命令写入源文件
seek 指定偏移
conv=conversion 保留没有替换的部分
eg: dd seek=16384 bs=1 conv=notrunc if=./decryption.bin of=~/Desktop/WeChat

5、把Crypt ID 改为 0,保存

6、class-dump -H ~/Desktop/WeChat -o ./Headers

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335