首页
论坛
课程
招聘
[原创]新手关于ida动态调试so的一些坑总结
2020-5-20 14:00 16167

[原创]新手关于ida动态调试so的一些坑总结

2020-5-20 14:00
16167

目录

 

虽然Java层代码包含了许多有用的信息,但是一般稍微注重安全的应用都会把核心代码放到Native层,所以对Native层的调试就显得尤为重要了。

动态调试步骤

使用工具:

am + pm +IDA, 其中am和pm为安卓系统自带

复制android_server到设备中,并执行。

android_server的目录为:IDA目录>dbgsrv>android_server

注意:

android_server分版本的,使用对应的版本。

//复制到设备上
adb push android_server /data/local/tmp

//修改权限,使之能执行
chmod 777 /data/local/tmp/android_server

//执行
cd /data/local/tmp
./android_server

adb forward tcp:23946 tcp:23946

等待附加。

 

pm确定要调试apk的包名

pm(package manager)包管理工具.

 

列出所有的包信息:pm list packages [filter]

  • pm过滤器
    • -d:只显示禁用的应用的包名
    • -e:只显示可用的应用的包名
    • -s:只显示系统应用的包名
    • -3:只显示第三方应用的包名

am启动被调试应用

am是activity manager的缩写

 

am启动程序命令:am start -D -n com.example.testarm/.MainActivity

am start -D -n调试模式打开应用

com.example.testarm要调试启动的包名

.MainActivityLunch Activity

 

启动后等待调试器的链接。

<img src="upload/attach/202005/869791_NVBFYY56EP86ZF6.jpg" style="zoom: 25%;" />

设置IDA调试器

  • 用IDA打开想要调试的so库。

  • 选择Remote ARM Linux/Android debugger

  • 设置调试选项

开始附加程序

设置主机和端口

 

 

 

选择要调试的程序进行附加

 

弹出对话框表示全部加载完成了.

 

 

此时会显示出PC的位置

 

 

IDA 按F9,继续执行.

jdb连接

   jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700

8700为apk运行的端口, 根据实际情况更改.

 

确定port的方法

  • 使用ddms(monitor)

    注意:以前monitor为Android Studio自带, 从2019年下半年开始的Android Studio删除了这些工具.

    提取的ddms:https://www.jianguoyun.com/p/DWps1OsQ9oe6CBjP15oD (访问密码:HrhFnH)

触发断点

 

same

 

 

Yes

调试快捷键

F2下断点

 

F7单步步入

 

F8单步步过

 

F9执行到下个断点

可能的错误

  • 由于没有设置参数,所以经常有下面的错误提示, 忽略或者随便给个参数

  • 没有进行端口映射

    adb forward tcp:23946 tcp:23946

  • android_server未开启

  • 可附加的程序过少

    启动android_server的用户权限低.用root用户运行android_server来监听.

  • ida调试版本的so和正在运行的so不一致

  • jdb连接失败

  • ida打开的so文件名要和运行apk中的so名一致. 如果不一致会导致断点无效.

[注意] 欢迎加入看雪团队!base上海,招聘CTF安全工程师,将兴趣和工作融合在一起!看雪20年安全圈的口碑,助你快速成长!

最后于 2020-5-20 17:44 被nisodaisuki编辑 ,原因: 增加和修改错误
收藏
点赞5
打赏
分享
最新回复 (24)
雪    币: 445
活跃值: 活跃值 (322)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
猫子 活跃值 2020-5-20 16:35
2
0
gdb 应该是jdb吧
雪    币: 271
活跃值: 活跃值 (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nisodaisuki 活跃值 2020-5-20 17:46
3
0
猫子 gdb 应该是jdb吧
是的, 已经修改了
雪    币: 1804
活跃值: 活跃值 (518)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
拍拖 活跃值 2 2020-5-21 13:06
4
0
非常感谢分享。
其实可以把安卓常见的一个ANTI DEBUG的也一起整理下。 就更赞了
雪    币: 14752
活跃值: 活跃值 (23628)
能力值: (RANK:75 )
在线值:
发帖
回帖
粉丝
Editor 活跃值 2020-5-25 11:09
5
0
感谢分享哦
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_eoyexdco 活跃值 2020-5-28 22:27
6
0
请问楼主使用是哪个版本IDA,本人使用7.0版本IDA运行在Catalina上,设置完suspend on library load,并F9运行后,启用jdb调试,好像仍然会被反调试线程干掉。
jdb crash堆栈信息:
java.io.IOException
       at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:238)
       at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:245)
       at jdk.jdi/com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:120)
       at jdk.jdi/com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:83)
       at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:530)
       at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:339)
       at jdk.jdi/com.sun.tools.example.debug.tty.Env.init(Env.java:63)
       at jdk.jdi/com.sun.tools.example.debug.tty.TTY.main(TTY.java:1117)

安装包来源:https://github.com/swfangzhang/IDA-pro-7-for-Catalina-OSX-15,麻烦楼主解答一下,可以联系我QQ550279039,有偿
雪    币: 8923
活跃值: 活跃值 (3903)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
浅笑不语 活跃值 2020-5-29 14:11
7
0
感谢分享
雪    币: 13
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_Iisfish 活跃值 2020-6-3 14:18
8
1
阳哥牛逼
雪    币: 271
活跃值: 活跃值 (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nisodaisuki 活跃值 2020-6-4 15:09
9
0
mb_eoyexdco 请问楼主使用是哪个版本IDA,本人使用7.0版本IDA运行在Catalina上,设置完suspend on library load,并F9运行后,启用jdb调试,好像仍然会被反调试线程干掉。 jd ...
52破解分享的ida版本。ida70
雪    币: 11
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
落花人独立 活跃值 2020-6-6 14:41
10
0
monitor 没删除,在 \sdk\tools\lib 里
雪    币: 271
活跃值: 活跃值 (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nisodaisuki 活跃值 2020-6-24 14:44
11
0
落花人独立 monitor 没删除,在 \sdk\tools\lib 里
在最新的版本中是被移除了。sdk路径下没有tools文件夹
雪    币: 1248
活跃值: 活跃值 (952)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
KerryS 活跃值 2020-6-28 13:34
12
0
lz在调试过程中,可以正常使用TAB建与f5吗 ,我调试的时候这两个都失效了
雪    币: 7936
活跃值: 活跃值 (752)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Ally Switch 活跃值 2020-6-28 14:09
13
0
感谢分享!
雪    币: 348
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Wika 活跃值 2020-6-28 20:11
14
0
在調試時,下断断不下去,提示signal error
雪    币: 256
活跃值: 活跃值 (204)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZwCopyAll 活跃值 2020-6-28 21:01
15
0
maark
雪    币: 1454
活跃值: 活跃值 (192)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
愤怒的平头哥 活跃值 2020-6-29 09:55
16
0
感谢大佬分享
雪    币: 31
活跃值: 活跃值 (284)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
苏打水 活跃值 2020-6-29 21:11
17
0
最难受的是有的时候monitor看不到端口号,很烦人。多试几次又可以了。修改过root手机debug属性,还是会出现找不到的情况,有没有哪位大佬能一劳永逸的???
雪    币: 1736
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
小hanger 活跃值 2020-8-4 21:02
18
0

!!!!!!

最后于 2020-8-4 22:13 被小hanger编辑 ,原因:
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_jgzwnuxx 活跃值 2020-8-5 06:25
19
0
感谢分享
雪    币: 6
活跃值: 活跃值 (259)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Android小材 活跃值 2021-2-22 22:06
20
0
这个问题解决了吗?
雪    币: 6
活跃值: 活跃值 (259)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Android小材 活跃值 2021-2-22 22:09
21
0
mb_eoyexdco 请问楼主使用是哪个版本IDA,本人使用7.0版本IDA运行在Catalina上,设置完suspend on library load,并F9运行后,启用jdb调试,好像仍然会被反调试线程干掉。 jd ...
这个问题解决了吗
雪    币: 1263
活跃值: 活跃值 (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_udcjdwum 活跃值 2021-2-25 08:46
22
0
正在找相关的资料~楼主的资料让我看到了希望~我目前还没空,过两天试试~感谢的分享
雪    币: 251
活跃值: 活跃值 (366)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Magic丶 活跃值 2021-7-20 20:25
23
0
nisodaisuki 在最新的版本中是被移除了。sdk路径下没有tools文件夹
得自己在SDK Manger中SDKTools自行下载
雪    币: 271
活跃值: 活跃值 (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nisodaisuki 活跃值 2021-10-22 09:08
24
0
Magic丶 得自己在SDK Manger中SDKTools自行下载
好像是的,当时安装的时候没有完全安装。
雪    币: 545
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
theodad 活跃值 2021-10-26 08:54
25
0
感谢分享
游客
登录 | 注册 方可回帖
返回