一步一步用debugserver + lldb代替gdb进行动态调试

IOS 设备是5S IOS 8.12
cache 用ITOOLS 下载下来的 然后 dyld_decache导出,有两个 一个是armv7s 一个是arm64
arm64 导出的全是指针
armv7s 导出中 有libobjc.A.dylib
操作全是按照书上操作的~~
但是最后搜不到指定函数

问题就出在这里:5s是arm64,而dyld_decache不兼容arm64,所以你用IDA和lldb分析的不是同一个lib

2 个赞

我dyld_decache 导出的是 armv7s的 ,不是 arm64的 ,
问题解决了,发现用 dyld_decache 导出的armv7s 的dylib 不是正在调试的dylib
最后 我直接复制 本机的dylib 发现是同一个dylib~~~~

[121] 0x0000000005564000 /Users/panda/Library/Developer/Xcode/iOS DeviceSupport/8.1.2 (12B440)/Symbols/usr/lib/libobjc.A.dylib

(lldb) dis

libobjc.A.dylib`objc_msgSend:

→ 0x19793bbc0: cmp x0, #0

0x19793bbc4: b.le 0x19793bc30 ; objc_msgSend + 112

0x19793bbc8: ldr x13, [x0]

0x19793bbcc: and x9, x13, #0x1fffffff8

0x19793bbd0: ldp x10, x11, [x9, #16]

0x19793bbd4: and w12, w1, w11

0x19793bbc0-0x0000000005564000 = 00000001923D7BC0 这里是IDA 的地址
感觉自己搞的好麻烦,明明可以直接从本机导出dylib的,却要用dyld_decache去导出
那么问题来了,dyld_decache 到底什么时候才用啊???

当你在本机找不到lldb中调试的二进制文件时,那个文件就在cache里,需要decache

原来如此!!!感谢大神解惑!
最后再来一发问题:
在Cycript 脚本语言中 的例子
[objc_getClass(“CNFRegController”) controllerForServiceType:1] 获取掌管iMessage 账号的CNFRegController 实例,
那么我在Xcode 的文档中没有查到 CNFRegController 是什么 也没有查到 controllerForServiceType 方法
想问问这些函数在哪里查到的,是在官网吗,还是另外下载 AIP 文档???

你买书了吗?

是啊!!! 都要出新版了,我买了正版的旧版
widnows 转IOS 啥都不懂~~~~
5555555
按照书上写的~~~刚看到 Cycript 那里写脚本

那你应该了解私有和公开的区别,逆向工程的主要用途之一就是研究非公开API

好吧~~~发现可能问题出在没有看完书~_~

多谢分享,可是卡死了
xiaominde-iPad:~ root# debugserver *:1234 -a “SpringBoard”
debugserver-300.2 for armv7.
Attaching to process SpringBoard…
Spawning general listening thread.
Spawning kqueue listening thread.
Listening to port 1234 for a connection from *…

接下来就什么都没输出了,然后设备也卡主不能动了要重启

这个时候debugserver已经附加了SpringBoard,它在等你的LLDB连过去之后操作,进程本来就是处在卡死状态

:titter:多谢狗神威武

xiaomindeiMac:~ xiaomin$ process connect connect://iOSIP:1234
-bash: process: command not found
提示这个怎么解决

已经解决看教程不认真没有进入lldb

多谢已经成功!

调armv7的代码,默认di -l反编译出来的代码模式错了,用了di -A thumb依然有很多无法识别的opcode,现在只能用capstone的python脚本来反编译,lldb版本320.4.152,不知道lz是怎么解决的这问题?

这个帖子的回复里已经解答了,自己找找看

那这样就只能attach一个进程,不能从一个应用来run了???

lldb-310及以上版本反汇编错误的解决方案
http://bbs.pediy.com/showthread.php?p=1346743

unexpected reserved to gdb server memory read packet

lldb连上后总提示这个错误 求教。。