IDA动态调试SO文件

  • 前言
  • 一、启动android server,以调试方式启动APK
  • 二、调试步骤
  • 三、调试技巧

前言

此篇博文仅仅记录下本人学习 IDA pro 动态调试so文件过程。

工具:IDA pro 7.5

参考博文及APK来源:

  • https://blog.csdn.net/hbhgyu/article/details/81321923
  • https://blog.csdn.net/tabactivity/article/details/78492377

一、启动android server,以调试方式启动APK

  • 进入 [安装路径]\dbgsrv\dbgsrv 目录,将对应android版本的 android serverandroid server64发到手机 /data/local/tmp/ 目录,并设置可执行权限,运行。(建议android serverandroid server64都发送,避免某些apk只有32位或64位so包。)

    # 同理,将android server64同样设置
    adb push [安装路径]\dbgsrv\android_server /data/local/tmp/
    adb shell
    su
    chmod 777 /data/local/tmp/android_server
    ./data/local/tmp/android_server  # 启动
    
  • 手机端设置端口转发

    adb forward tcp:23946 tcp:23946
    
  • 调试方式启动APK,启动后,手机端出现 Waiting For Debugger 弹窗。

    adb shell am start -D -n [aok包名]/[主活动]
    
  • 启动 DDMS(进入Sdk安装目录 \Sdk\tools下,运行 monitor.bat 脚本启动),在DDMS上选择相应进程后,使用指令使apk继续运行,成功后,DDMS上进程将显示绿色,否则是红色。

    jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700 # localhost可以填127.0.0.1
    

二、调试步骤

  1. 首先,IDA 加载so文件(此时,可以先查看需要设置断点的函数,位置,然后设置断点。)

  2. 选择调试器,点击:Debugger=>Select debugger(或直接按快捷键F9),选择 Remote ARM Linux/Android debugger,点击OK。(若弹出 PLEASE READ CARFULLY 窗口,点击YES)

  3. 点击:Debugger=>Debugger options,根据需要,设置如下三个选项,会在相应位置暂停,按F9可继续调试

    • 第一个:在APK程序入口处停止。
    • 第二个:有线程启动运行或者退出时,暂停。
    • 第三个:当动态库(apk中的so文件)加载或者取消加载时,暂停。

  4. 点击:Debugger=>Process options,此处设置远程主机(android手机)和调试端口号(IDA 默认为23946),点击OK

  5. 点击:Debugger=>Process options,选择当前待调试的apk进程,点击OK。(可按 CTRL+F 或者 ALT+T搜索包名查找)

  6. 在IDA中,按 F9 开始调试,如果在调试前设置过断点和Debugger options,调试会在相应断点位置或满足选项时停止。

三、调试技巧

  1. 可以在启动调试前,使用静态分析设置相应断点。

  2. ARM中没有NOP指令,可通过以下指令替代

    MOVS R0,R0   # 十六进制为:00 00 A0 E1
    
  3. 当调试函数遇到无法设置断点弹窗,或者到一个 DCB 定义数据处无法 F9 继续时调试和返回时,可按 G 键跳转到 LR 寄存器地址处,再按F4,函数运行到当前指针位置。

  4. 使用F5快捷键将ARM指令转化为可读的C代码,同时可以使用Y键,对JNIEnv指针做一个类型转换,从而对JNI里经常使用的JNIEnv方法能够识别;同时,可以通过选项 Copy to assembly ,将C代码注释到ARM指令中,增加Patch so 的便利性,甚至可以直接看到答案显示。

    5. 32位ARM下,函数参数保存在 R0~R3寄存器中(多余的参数入栈),可以将 Hex View 和 寄存器同步,查看函数参数数据。

IDA动态调试SO文件相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 未root手机 ida动态调试安卓so文件—— 学习实践 《教我兄弟学Android逆向09 IDA动态破解登陆验证》

    参考: https://www.52pojie.cn/thread-742686-1-1.html https://www.pianshen.com/article/6759779793 本文基本为h ...

  10. 使用IDA Pro动态调试SO文件

    (1)在IDA的安装路径中找到android_server文件. (2)将android_server拷贝到手机的/data/local/tmp目录下面. (3) 将手机插上电脑,打开命令提示符,  ...

最新文章

  1. 精度 召回率 F score
  2. 自学ng2 -生命周期钩子
  3. 安装labelImg(win10,macOS)
  4. VTK:几何对象之Line
  5. 创造包容的环境和上升空间
  6. php导出csv数据在浏览器中输出提供下载或保存到文件的示例
  7. 董明珠的“接班人”出现了!这个22岁的小姑娘,凭什么?
  8. ESP32开发 0.windows Vscode开发环境搭建,基于esp-idf-V4.2 | Cmake | Vscode插件
  9. TX2Ubuntu16.04上安装 kinectV2
  10. 51单片机12864的使用方法
  11. 数据产品经理面试提问集
  12. iOS 之 OBJECTC 调用C、OBJECTC调用C++
  13. 第一个小程序demo
  14. ATtiny85简单引脚配置
  15. Unix时代的开创者Ken Thompson (zz.is2120.bg57iv3)
  16. 什么是html5页面ui,H5页面UI设计和APP设计有什么区别?
  17. 练习:jsp页面输出九九乘法口诀表
  18. [译]PG15加速排序性能
  19. application.yaml配置详解
  20. 华科计算机电路理论实验报告,华科计算机数电第四次实验报告.docx

热门文章

  1. IBM 存储管理软件IBM DS Linux Storage Manager安装(Linux)
  2. ThinkPHP5学校宿舍管理系统
  3. Ubuntu安装配置tftp服务器
  4. 翻译: 深入神经网络概览Dive into Deep Learning
  5. 如何修改SAO用户密码
  6. 基于Linux下的Nand (Nor) Flash读写速度测试
  7. 3D打印笔 画出模型
  8. [渝粤教育] 西南科技大学 高等数学2 在线考试复习资料
  9. kali linux安装QQ linux版教程
  10. Jad批量反编译class