首页
社区
课程
招聘
[求助]IDA6.5 在apk执行前动态调试so 的问题
发表于: 2015-1-2 17:54 24978

[求助]IDA6.5 在apk执行前动态调试so 的问题

2015-1-2 17:54
24978
想用IDA 6.5调试aliEvilAPK_4。步骤如下:

1、adb shell am start -D -n com.ali.encryption/com.ali.encryption.MainActivity
2、IDA pro attach(选择进程com.ali.encryption)
3、用DDMS查看调试程序,显示8600/8700,
4、jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1, port=8700。

jdb后无输出或者报错无法附加到目标 VM。。另问端口是用8600还是8700 。无论用哪个,连接之后,调试程序还是waiting for debugger。

另外,logcat显示 Application com.ali.encryption is waiting for the debugger on port 8100...
但用了8100也不对啊。

求大牛看看,为何一直waiting for debugger?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 4522
活跃值: (2146)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
adb forward tcp:8899 jdwp:进程ID  怎么没这句呢
2015-1-4 10:25
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
-----------adb forward tcp:8899 jdwp:进程ID  怎么没这句呢

这句啥意思?从帖子中 http://bbs.pediy.com/showthread.php?t=178659 。没看到啊。
2015-1-16 15:32
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
4
无输出才是正常的。你IDA把进程挂起了啊。IDA里面点Continue process就行了
2015-1-16 15:53
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
问下 ,你们调试都是用真的手机调试吗?还是用bs?
2015-1-16 15:55
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我的做法是用DDMS(adt bundle/android sdk中tools資料夾下開monitor)
查看想要attach的process ID所開出的port(應該會在DDMS的Devices視窗中)
用:
jdb -connect com.sun.jdi.SocketAttach:port=8616,hostname=localhost     //(windows下)
來解除wait for debugger(執行jdb後回ida 按F9來continue),此步我沒有使用adb forward。

在做這步前,
在adb shell裡執行起android_server並forward他給的port(如adb forward tcp:23946 tcp:23946),
並於ida中debugger attach起想要用的process。

給樓主作參考 希望能幫到大家!
2015-1-16 17:18
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
输入jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700出现「致命错误,无法附加到指定VM」这个问题我也遇到了;
我发现:
如果你找到了地址(基址+偏移)然后G到地址,下断点
F9运行,
执行jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
断下,进行调试,
这样就会出现这个问题,而如果你在第一步不下断点就F9执行,则可以attach上,但是寄存器中的内容是错误的。

至今也不知道为什么别人能成功。。。据说IDA6.6是可以不计算地址直接G到函数名字然后dump的,IDA6.5无能为力。LZ若知道了还请通知一声。
2015-1-18 19:59
0
雪    币: 105
活跃值: (211)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
你可以使用eclipse的远程调度功能去附加呀,不需要使用jdb去附加的。
jdb老出问题。
在Eclipse的Java视图的菜单中Run->Debug Configurations,
点击左边的Remote Java Application下的任何一个项目,进行远程调试的Connect tab,按上面修改设置,把Project改为调试项目,Host改为localhost,Port改为调试端口(8600或8700什么的)。之后,点【debug】。
2015-1-19 00:33
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
可是调试的项目不在Eclipse里啊 没有源码
2015-1-21 16:35
0
雪    币: 105
活跃值: (211)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
不需要源码也能attach的呀,有源码只是多了一个编译执行的功能而已。
2015-1-21 17:37
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
11
aliEvilAPK_4这个程序怎样才能运行?真机和虚拟机都奔溃
2015-1-21 20:32
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
楼主,我试了很久发现以下方法可行:
在输入jdb -connect....之前先输入adb forward tcp:8899 jdwp:<pid>
然后再jdb -connect com.sun.jdi.SocketAttach:port=8600,hostname=127.0.0.1,注意是8600/8700中的8600,就可以成功附加了,你可以试试。进程的pid可以在logcat中找到。

用 forward jdwp:<pid> 端口映射信息来连接指定的JDWP进程.但我不知道为什么是8899端口。
2015-1-24 11:12
0
雪    币: 59
活跃值: (185)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
遇到和楼主同样的问题
2015-1-25 14:49
0
雪    币: 729
活跃值: (1306)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
14
@非洲大表哥

然后再jdb -connect com.sun.jdi.SocketAttach:port=8600,hostname=127.0.0.1,注意是8600/8700中的8600,就可以成功附加了,你可以试试。进程的pid可以在logcat中找到。

你的答案是正确的。今天上午我调了一上午,我一直以为是自己的步骤错了。看了你的回答,才调通,在此感谢
2015-9-10 12:05
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
15
我也碰到这么奇怪的情况,后来发现,原来忘记加上android:debuggable="true",狂晕啊!!!!!!!!!!!!!!!!!
2016-5-21 14:18
0
游客
登录 | 注册 方可回帖
返回
//