查看原文
其他

新手向总结:IDA动态调试So的一些坑

nisodaisuki 看雪学院 2021-03-06
本文为看雪论坛优秀文章
看雪论坛作者ID:nisodaisuki



目录

动态调试步骤

        复制android_server到设备中,并执行

        用pm确定要调试apk的包名

        用am启动被调试应用

        设置IDA调试器

        开始附加程序

        jdb连接

        触发断点

        调试快捷键

可能的错误


虽然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

 

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





设置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名一致,如果不一致会导致断点无效。




-End -





看雪ID:nisodaisuki

https://bbs.pediy.com/user-869791.htm 

*这里由看雪论坛 nisodaisuki 原创,转载请注明来自看雪社区。


推荐文章++++

*   .NET 恶意代码分析入门

*   一款最简单的关于动态注册的APP分析

*   java函数转Native化的一些实践

*   2020网鼎杯玄武组_babyvm

*   中毒应急处置流程1.0



好书推荐








公众号:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com



“阅读原文” 一起来充电吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存