首先我们如果想要在调试的so的初始化JNI_OnLoad的函数里面下断点,去测试是否有反调试等操作,首先应该以启动调试模式去操作。

第一步:首先以debug模式去启动调试的app程序。

命令为: adb shell am start -D -n 包名/.activity名字

以debug模式启动后,打开ddms工具,查看下是否有小红蜘蛛出现了,如果出现了则说明关联上了。

第二步:启动android_server 脚本,把android_server 拷贝到data/local/tmp文件夹下,设置上权限,并且以root用户权限去运行。

第三步:这时候我们手机端的端口已经开启了监听了,接下来再把端口数据转发到ida上面去。

我上面手机端监听的23946端口(默认端口),转发的就是23946的默认端口。

第四步:转发成功后,启动ida工具,32位的,选择remote ARMLinux/Android debugger 调试模式

第五步:设置本机ip和端口号信息

第六步:设置debug options,点击上方的debug options ,将下方的 事件监听全部勾选上,接下来点击ok。

第七步: 接下来就能看到此设备上面所有的进程了,选择我们要调试的进程信息,选中,并点击ok。

第八步:点击ok后,其实就已经进入系统断点中了,我们从下图可以看到系统断在了libc.so 中,这个是加载的系统关键类的so文件,我们再次设置下 debug options ,再次勾选上面三个event事件的选项,并点击确定。

第九步:此时我们需要让他继续执行,因为在modules list 加载列表中,我并没有看到我自己的so被加载进去。我们按下f9,继续执行。

第十步:由于我在c层跳过了并让他继续执行,但是java层还是处于一个调试的状态,此时应该输入如下命令

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1, port=8600

让java层也继续执行下去。 此时去查看下ddms里面调试的进程的端口信息。

如上面我这个进程的端口信息是8600或者8700都可以,执行后效果如下图一样。就表示启动了jdb调试。

此时我们看下ddms的蜘蛛的状态变为了绿色,已经是可调试的状态了。

第十一步:接下来我们看到app的界面从wait for debug状态变为了黑屏,我们继续回到ida中去查看,发现已经自动断在linker.so上面了,这个是链接加载器,初始化so用的,此时我们打开modules list窗口,查找我们需要调试的so。

第十二步:双击找到我们需要调试的so,如下图我已经找到了JNI_OnLoad方法了。双击进去,然后就跳到该方法处了。

第十三步:如下图所示,我已经下好了断点了,接下来就f9继续执行吧。让他进入断点处。

以上就是ida以启动模式去下断点,适合在较早的时机去下断点,方便进行脱壳和反调试。

IDA动态调试so 指南相关推荐

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

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

  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. Android IDA 动态调试最完善攻略,跨过各种坑

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

  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. ida调试linux程序,[原创]IDA动态调试ELF

    0x00:环境 待调试ELF文件 IDA 7.0 主机:Windows 虚拟机:Linux 达成效果:在Window上利用IDA远程动态调试linux里的ELF文件 0x01:Unbuntu里运行ID ...

最新文章

  1. 从洗牌算法谈起--Python的random.shuffle函数实现原理
  2. 2019展望:超级智能崛起,人类智慧与机器智能将深度融合
  3. Zabbix实现微信告警
  4. 对集合使用Comparator
  5. Oracle导出excel
  6. Sybase和mysql语法_主流数据库复制表结构(SqlServer/Mysql/Oracle/Sybase)[语法差异分析]...
  7. 大学学计算机的有作业吗,有没有电脑高手,大学计算机专业的作业
  8. 【ArcGIS微课1000例】0014:ArcGIS中如何将kml(kmz)文件转shp,并进行投影转换?
  9. ElasticSearch 动态映射与静态映射_08
  10. Java字符字符串类
  11. C# 使用Process调用外部程序中所遇到的参数问题
  12. 数据结构上机实践第三周项目3- 求集合并集
  13. pygame安装教程(小白入手)
  14. Response.Redirect() 打开新窗口的方法
  15. 运维小知识---If you insist running as root, then set the environment variable RUN_AS_USER=root......
  16. python 两幅图片融合成一张图片
  17. 用不可描述的图片做可以描述的事情
  18. Java——使用多线程模拟真实高并发业务并保证安全性(一)
  19. 通话过程中显示呼叫失败_iphone怎么总是打电话出现呼叫失败求大神解救
  20. 端午假期整理了仿天猫H5 APP项目vue.js+express+mongo

热门文章

  1. 0202了,你会用手机操控电脑吗?
  2. 集群策略--集群(clustering)
  3. 【解决思路】Spring Boot:Error creating bean with name ‘xxxDao‘
  4. 联想小新air13pro重装系统_联想小新Air 13怎么装win10系统|联想小新Air 13用u盘重装win10系统教程-系统城...
  5. 有n堆石子,每次取出两堆合成一堆,每堆石子的个数即为合并石子所需要耗费的体力,求出合并所有石子堆所需要耗费的最小体力
  6. 检测样本分布是不是正态分布,绘制其正态分布概率图及异常值检测-python代码实现
  7. 前端学习: 用css设置文字样式
  8. EasyExcel设置行中单个单元格的样式
  9. linux mint 卸载桌面,Linux Mint 默认桌面 Cinnamon 1.6 正式发布
  10. 1 STM32F407ZG的简单介绍