首页
社区
课程
招聘
[求助] 如何使用ida在apk执行前动态调试其so中的函数
发表于: 2013-9-11 22:39 71767

[求助] 如何使用ida在apk执行前动态调试其so中的函数

2013-9-11 22:39
71767
按照 《已解答: 关于用ida远程调试android native c 的so文件的问题》  这个帖子的方法,可以对程序进行动态调试了,非常感谢。

问题是,我想要分析的so中的函数,在进入程序界面之后就已经执行完毕了,因此,我在想在某个apk启动前,就对他进行调试,看到“开发者选项”中有个一个“等待调试器”选项,但是不会用。。。

我看了《Android软件安全与逆向分析》,但没找到,请大大们帮忙

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (43)
雪    币: 202
活跃值: (118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
开始调试选项那个好像得针对eng Build的机型,置为waitdebugger啥的,我只是看了下理论但是没有实践过。

不过我最近也遇到这种问题,迫于时间压力没时间研究那个waitdebugger了,想了个相对好上手的办法:

1、解包对方APK,插入一个:
对应SMALI:    android.os.SystemClock.sleep(20000);
const-wide/16 v0, 0x2710   #20秒
invoke-static {v0, v(X-1)}, Landroid/os/SystemClock;->sleep(J)V
这里(X-1)对应.local X,我想你懂该怎么写的

2、另外有的包在你要调试的那个SO里面有签名保护,反正你重新打了包之后会导致程序运行崩溃,这个相比JAVA修改困难些,建议你用那个签名漏洞来打包。事实上我调试那个SO也遇到过这样,然后打了个签名漏洞的包嵌入的延时函数就大丈夫了
2013-9-12 10:06
0
雪    币: 118
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好办法 真是好办法 我也遇到过类似的问题
2013-9-12 11:06
0
雪    币: 9
活跃值: (653)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
1) am start -D -n 包名/类名

2) IDA pro attach 进程, 设置新线程,加载so时断点,continue

3) 打开ddms, 查看调试端口, jdb attach port

4) 这个时候应该已经断在新线程,或者加载so处了,在你感兴趣的so处停下来

5) 另外用ida 打开so,查看你感兴趣的函数偏移, 加上你感兴趣的so的基地址,打上断点,continue, 就大功告成了。
2013-9-12 14:13
0
雪    币: 27
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢!,周末回去试试看。
2013-9-12 22:28
0
雪    币: 27
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我在尝试第三步 jdb attach port 时,提示无法连接到vm,无法附加调试,请问怎么解决?
2013-9-14 23:32
0
雪    币: 9
活跃值: (653)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你是windows吧,
jdb -connect com.sun.jdi.SocketAttach:port=xxxx
2013-9-15 09:10
0
雪    币: 27
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8

非常感谢,达到目的了,呵呵。
2013-9-21 21:03
0
雪    币: 507
活跃值: (130)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
嗯,先睡一会儿,然后再链接,否则断不了程序
2013-9-21 21:48
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请问下第二步要怎么做?设置新线程,加载so时断点,continue。不太理解
2013-10-11 17:16
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
前三步都成功了。但是第四步一直都没有出现预期的效果。ida   始终没有中断住。试了四五个不同的apk都是这样。求调教
2013-11-3 01:53
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
windows下ida6.1不行,linux ida 6.4可以,不知是ida的问题还是windows的问题,你可以在linux下用wine测一下
2013-11-3 10:43
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
在你的apk进程上attach,设置调试设置,在加载so时break
2013-11-3 10:46
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢! 我已经换成ida 6.4了,希望能行!
果然是好人啊!真心感谢,三个周了,问了很多论坛您是第一个给我回复指导的. 即使这样的一个小问题.对我们刚入门的人来说也是很难逾越的障碍啊.因为出了问题往往都认为是自己操作失误..再次多谢
2013-11-8 12:44
0
雪    币: 32
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
请问 linux平台的 ida 6.4 哪有下载?
2013-11-11 10:59
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我使用wine的.linux版的我只有找到5.5版本的.用wine ida pro6.4很正常运行
2013-11-11 13:15
0
雪    币: 32
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
您使用的6.4版本能共享下吗
2013-11-11 14:27
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
百度ida pro 6.4可以下载到。
2013-11-11 18:02
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
求助: 在debug options中设置stop at load lib.  然后F9之后,会跳出一个:“got SIGSTOP signal (Stop unblockable)”, 然后,无论点击yes还是no,都就退出了!请求帮助,我哪里出现问题了??
2013-11-11 18:11
0
雪    币: 53
活跃值: (280)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
ida 6.4的android_server 谁有下载的地方?
2013-11-12 20:07
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
这个问题我也遇到过,没具体研究过什么原因,根据提示,应该是说程序出错退出了,猜测是调试的apk跟android_server不兼容,可能是sdk版本的问题,尝试解决方案:
1. 在exception option里把所有的都删掉
2. 重启手机
3. 换个版本android_server或者换个android版本的手机
2013-11-13 17:39
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
你好, 三种方法都已经试过,
手机试过:联想某4核,索尼x26某, 三星i5500, 华为MT6 , 都不可用,
android_server 分别换用过ida pro6.1的, ida pro6.3的和ida pro6.4的.
并且发现 ida pro6.3的android_server 不可与ida pro6.1,ida pro6.4连通。。

我是在分析com.tebs3.cuttherope这个apk的so文件时报的错误,sigstop. 是在本论坛某大神发布的分析so文件的技术文档,然后按照步骤尝试的时候出的错误。
2013-11-14 23:50
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
然后发现,这个com.tebs3.cuttherope这个apk也是 Android安全与逆向分析那本书中分析的叫做Kungfu的病毒。 他们是同一个。。
2013-11-14 23:51
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24


请教一下,已经这样设置了,第4部还是断不下来.....
windows 下jdb -connect com.sun.jdi.SocketAttach:port=8700也无法连接到目标vm........
linux+wine ida6.1试了还是断不下来,ida6.4用wine运行出错,然后我第2部用windows下的ida6.4 wifi连接设备ip attach,也断不下来.....

请问下是什么原因?有什么好的解决办法吗?
上传的附件:
2013-11-26 18:58
0
雪    币: 53
活跃值: (280)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

楼上各位,谁有好用的ida6.4私信发个地址嘛
2013-11-27 22:57
0
游客
登录 | 注册 方可回帖
返回
//