iamonion
(iamonion)
1
逆向个app,在xcode中,device 找到奔溃日志,提示
Thread 3 Crashed:
0 libsystem_kernel.dylib 0x383a41f0 __pthread_kill + 8
1 libsystem_pthread.dylib 0x3840e792 pthread_kill + 54
2 libsystem_c.dylib 0x38354fd8 abort + 72
3 xxx 0x000d24d8 0x7c000 + 353502
4 xxx 0x000d2642 0x7c000 + 353610
然后 我再lldb,给这个位置下断点,怎么都断不下来。这个是啥子原因呐。
iamonion
(iamonion)
3
感谢张总解答。
我lldb,进入地址空间,找到程序基地址,在基地址+353610(转化为16进制)处下断点。在基地址+353502(转化为16进制)处也下断点了。
下断点 我就用 b xxx (xxx就是基地址+353610十六进制的值)。这样对不?
然后 c, 结果直接报错了
iamonion
(iamonion)
5
报错如下:
[AMapFoundationKit][Info] : Key验证失败, Error Domain=NSURLErrorDomain Code=-1009 “似乎已断开与互联网的连接。”
707] bundleId:xxx open:no
Process 1122 exited with status = 0 (0x00000000)
我就是想把这个断下来,到代码的地方去看看啥情况。咋就断不下来,我哪里有问题呢[可怜]
iamonion
(iamonion)
8
网上查了资料,好像理解错了。
xxx 0x000d24d8 0x7c000 + 353502 这个0x7c000 并不是image list -o -f 找到的基地址。需要用.dsYM文件结合奔溃日志才能找到代码位置。
但这种逆向的,如何根据奔溃日志找到奔溃位置呢?
ElvisRuan
(Elvis Ruan)
9
这样下断点当然错了呀。。。应该先找到崩溃的位置在二进制文件里的偏移量(0x000d24d8-0x7c000),然后在调试的时候用当前基地址+偏移量。
lemon4ex
(lemon4ex)
10
xxx 0x000d24d8 0x7c000 + 353502
xxx 0x000d2642 0x7c000 + 353610
这个日志很奇怪啊,正常情况下,0x000d24d8 应该等于 0x7c000 + 353502 才对,但是这里明显不正确。
以往的经验,可以直接开IDA,跳转到353502看为毛闪退
iamonion
(iamonion)
11
是的。这个数据我自己改了下,我怕暴露我在弄哪个app,所以我改了下。0x7c000 + 353610 是应该等于前面的值,不好意思,带来困扰了。
353502 转化为16进制,再调试,image list -o -f 找到基地址,再加上353502的十六进制,下断点,结果断不下来。。。。
难道两次程序执行走的路径不一样?一次直接运行,一次是调试运行,
崩溃日志我是直接在手机上运行程序,然后在xcode里找奔溃日志的。似乎调试时无法产生崩溃日志,我在xcode里没有找到
iamonion
(iamonion)
12
不对吧,0x000d24d8-0x7c000 这个的值 因该是 代码在app二进制中的绝对地址吧
ElvisRuan
(Elvis Ruan)
13
要的就是这个值啦。直接去ida或者hopper直接找就能找到是哪个地方了、我一直都这么找的,从来没错过。