本文为看雪论坛优秀文章

看雪论坛作者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_serveradb 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连接

1

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

修改so_新手向总结:IDA动态调试So的一些坑相关推荐

  1. Android IDA 动态调试最完善攻略,跨过各种坑

    From:https://www.pianshen.com/article/3409449384/ IDA 静态分析 与 动态分析:https://zhuanlan.zhihu.com/p/38983 ...

  2. IDA动态调试技术及Dump内存

    IDA动态调试技术及Dump内存 来源 https://blog.csdn.net/u010019468/article/details/78491815 最近研究SO文件调试和dump内存时,为了完 ...

  3. android ida多线程调试,C/C++知识点之ida动态调试.so 动态加载(必须真机)

    本文主要向大家介绍了C/C++知识点之ida动态调试.so 动态加载(必须真机),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助. 第一步连接安卓手机 查看设备 localhost: ...

  4. IDA——动态调试Linux上的ELF文件(整合他人博客)

    先查看机器之间是否可以ping通 0x00:环境 待调试ELF文件 IDA 7.0 主机:Windows 虚拟机:Linux 达成效果:在Window上利用IDA远程动态调试linux里的ELF文件 ...

  5. 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)

    1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 ): 1. 在 AndroidMainfest.xml ---> application 标签下,设置或者添加属性 and ...

  6. 【reverse】buu-[Zer0pts2020]easy_strcmp——main函数的启动过程+IDA动态调试ELF

    文章目录 依赖 思路 代码 CPP实现 Python+libnum库 IDA动态调试 参考资料 依赖 IDA7.7 Ubuntu20.04 作者:hans774882968以及hans77488296 ...

  7. ida 动态调试so库 (连接夜神模拟器)

    本文参考: 夜神模拟器 结合IDA 动态调试SO文件 打开夜神模拟器,然后进入夜神模拟器安装目录下(有nox.exe那个文件夹) 输入命令 nox_adb.exe connect 127.0.0.1: ...

  8. Android逆向之旅---Android中分析抖音和火山小视频的数据请求加密协议(IDA动态调试SO)

    一.前言 最近萌发了一个做app的念头,大致什么样的app先暂时不说,后面会详细介绍这个app的开发流程和架构,不过先要解决一些技术前提问题,技术问题就是需要分析解密当前短视频四小龙:抖音,火山,秒拍 ...

  9. arm ida 伪代码 安卓 符号表_使用IDA动态调试及ARM指令学习笔记

    本文介绍如何用IDA进行动态调试及部分ARM指令的学习. 环境:已root的安卓手机一部,IDA pro 6.8,win7系统. 下载样本app,并已确认可调试(debuggable = true), ...

最新文章

  1. 如何根据原理图画封装_生物水处理专用消泡剂是如何根据生物水处理工艺原理进行消泡的?...
  2. 错误消息“禁止您没有访问此服务器上的权限/”(关闭)
  3. Palindrome Linked List
  4. 一定是你想要的微服务资源springboot、springcloud、docker、dubbo
  5. UNIX再学习 -- 记录锁
  6. 行列式、LGV、矩阵树学习笔记
  7. java 比特币私钥生成_如何生成自己的比特币私钥
  8. python之(re)正则表达式下
  9. HDU-简易版之最短距离(最短路)
  10. java登陆拦截器_SpringBoot拦截器实现登录拦截
  11. [NOIP2013]华容道 题解(搜索)
  12. 保利威视视频云平台 新版本(Version 1.1.0) 上线通知
  13. java 幻影_Java之抽象
  14. 基于django搭建收集QQ账号和密码系统
  15. 2020 深圳 Gopher Meetup 上线啦!
  16. Jack Server--Android N AOSP编译--Failed to contact Jack server
  17. 【理论】操作系统导论
  18. Java 字符串数组转化为对象
  19. 四川峰创教育咨询有限公司:目前跨境电商适合做的类目有哪些?
  20. Design:设计目录

热门文章

  1. 六周第四次课(1月18日)
  2. Python--day8--Socket编程/异常处理
  3. mysql分区方案的研究
  4. nginx负载均衡集群
  5. JSP页面空指针异常调错办法之weblogic
  6. dataguard中MRP无法启动的问题分析和解决
  7. mysql metadata lock(一)
  8. table中tr使用toggle不好,选择换一张方式
  9. mysql更新日志问题
  10. 为什么中国的程序员技术偏低