修改so_新手向总结:IDA动态调试So的一些坑
本文为看雪论坛优秀文章
看雪论坛作者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
要调试启动的包名.MainActivity
Lunch 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的一些坑相关推荐
- Android IDA 动态调试最完善攻略,跨过各种坑
From:https://www.pianshen.com/article/3409449384/ IDA 静态分析 与 动态分析:https://zhuanlan.zhihu.com/p/38983 ...
- IDA动态调试技术及Dump内存
IDA动态调试技术及Dump内存 来源 https://blog.csdn.net/u010019468/article/details/78491815 最近研究SO文件调试和dump内存时,为了完 ...
- android ida多线程调试,C/C++知识点之ida动态调试.so 动态加载(必须真机)
本文主要向大家介绍了C/C++知识点之ida动态调试.so 动态加载(必须真机),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助. 第一步连接安卓手机 查看设备 localhost: ...
- IDA——动态调试Linux上的ELF文件(整合他人博客)
先查看机器之间是否可以ping通 0x00:环境 待调试ELF文件 IDA 7.0 主机:Windows 虚拟机:Linux 达成效果:在Window上利用IDA远程动态调试linux里的ELF文件 ...
- 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)
1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 ): 1. 在 AndroidMainfest.xml ---> application 标签下,设置或者添加属性 and ...
- 【reverse】buu-[Zer0pts2020]easy_strcmp——main函数的启动过程+IDA动态调试ELF
文章目录 依赖 思路 代码 CPP实现 Python+libnum库 IDA动态调试 参考资料 依赖 IDA7.7 Ubuntu20.04 作者:hans774882968以及hans77488296 ...
- ida 动态调试so库 (连接夜神模拟器)
本文参考: 夜神模拟器 结合IDA 动态调试SO文件 打开夜神模拟器,然后进入夜神模拟器安装目录下(有nox.exe那个文件夹) 输入命令 nox_adb.exe connect 127.0.0.1: ...
- Android逆向之旅---Android中分析抖音和火山小视频的数据请求加密协议(IDA动态调试SO)
一.前言 最近萌发了一个做app的念头,大致什么样的app先暂时不说,后面会详细介绍这个app的开发流程和架构,不过先要解决一些技术前提问题,技术问题就是需要分析解密当前短视频四小龙:抖音,火山,秒拍 ...
- arm ida 伪代码 安卓 符号表_使用IDA动态调试及ARM指令学习笔记
本文介绍如何用IDA进行动态调试及部分ARM指令的学习. 环境:已root的安卓手机一部,IDA pro 6.8,win7系统. 下载样本app,并已确认可调试(debuggable = true), ...
最新文章
- 如何根据原理图画封装_生物水处理专用消泡剂是如何根据生物水处理工艺原理进行消泡的?...
- 错误消息“禁止您没有访问此服务器上的权限/”(关闭)
- Palindrome Linked List
- 一定是你想要的微服务资源springboot、springcloud、docker、dubbo
- UNIX再学习 -- 记录锁
- 行列式、LGV、矩阵树学习笔记
- java 比特币私钥生成_如何生成自己的比特币私钥
- python之(re)正则表达式下
- HDU-简易版之最短距离(最短路)
- java登陆拦截器_SpringBoot拦截器实现登录拦截
- [NOIP2013]华容道 题解(搜索)
- 保利威视视频云平台 新版本(Version 1.1.0) 上线通知
- java 幻影_Java之抽象
- 基于django搭建收集QQ账号和密码系统
- 2020 深圳 Gopher Meetup 上线啦!
- Jack Server--Android N AOSP编译--Failed to contact Jack server
- 【理论】操作系统导论
- Java 字符串数组转化为对象
- 四川峰创教育咨询有限公司:目前跨境电商适合做的类目有哪些?
- Design:设计目录