(1)在IDA的安装路径中找到android_server文件。

(2)将android_server拷贝到手机的/data/local/tmp目录下面。

(3) 将手机插上电脑,打开命令提示符, 
先输入”adb shell”,然后输入”su root”获取root权限。
接着输入” chmod 777 /data/local/tmp/android_server” 给android_server加上相应的权限。 
接着输入” /data/local/tmp/android_server”启动android_server。

(4)重新打开一个命令提示符,
输入”adb forward tcp:23946 tcp:23946”进行tcp端口转发

(5)adb root模式下执行” am start -D -n com.example.testjniso/com.example.testjniso.MainActivity”命令,启动所要调试的Activity。注意这里选择的Activity名的获取有个技巧可获得,先打开DDMS或者Monitor,下面的窗口日志。然后手动打开APP,在前面会提示启动的Activity名,如下图:

输入调试运行的APP后, app会弹出”Waitting for debugger”对话框,如下图所示:

(6)启动ida pro,点击”Debugger - > Attach -> Remote ArmLinux/Android debugger”,会看到以下对话框:

点击”Debug options”按钮,在”Suspend on process entry point”, ”Suspend on thread start/exit”, ”Suspend on library load/unload” 等选项的前面打上勾,如下图所示:

点击”ok”后会在以下对话框的hostname中填上”localhost”

在弹出的”Choose process to attach to”窗口中找到”com.example.testjniso”进程,选中该进程,然后点击”ok”按钮。

(7)打开eclipse ddms在Devices窗口中可以看到以下内容:

其中可以看到com.example.testjniso进程的端口为8700。

(8)打开命令提示符,输入以下命令:jdb -connect com.sun.jdi.SocketAttach:port=8700,hostname=localhost
   如下图所示:

(9)点击ida中的继续执行按钮,下图中的绿色三角形按钮(或者按F9)。

在ida弹出的”Add map”窗口中,一律点击”Cancle”按钮。

(10)点击app中的”点击加载so文件”按钮,确保so文件已经加载到了手机内存中。点击ida中的”Debugger -> Debugger windows -> Module list ”。在”Modules”窗口中找到libTestJni.so

点击ida中的暂停调试按钮,暂停当前的调试,如下图所示:

右击libTestJniSo.so文件,在弹出的框中点击”Jump to module base”,跳转到libTestJniSo.so文件的起始地址。

按下Alt+T,弹出查找对话框中输入” Java_com_example_testjniso_MainActivity_helloFromJni” 如下图所示:

点击”ok”按钮后,即可跳转到 Java_com_example_testjniso_MainActivity_helloFromJni 函数所在的起始地址。

然后在地址处下断点:

再按F9重新开始调试,点击app中的”点击加载so文件”按钮重新加载libTestJniSo.so,即可看到程序成功地停在了断点处:

到此处就可以正常地调试so文件了。

原文参照:http://blog.csdn.net/pengyan0812/article/details/43990791

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

  1. IDA Pro动态调试Android so文件

    网上的教程坑太多,记录一下 使用apktool或者Android Killer反编译apk,在androidmanifest.xml添加以下代码将程序设置为可调试模式 <application ...

  2. Android逆向笔记-IDA Pro动态调试Android程序(真机)

    这里的安卓版本是: Android 5.1.1(Lollipop, API 22) LGE Google Nexus 5 arm 使用的IDA为:IDA Pro 6.8 将android_server ...

  3. 路由器+Gdbserver+IDA Pro远程调试

    最近在复现路由器漏洞,也踩了不少坑,记录一下,希望能对需要的人有一些帮助.使用的路由器型号为RT-AC68U,ARM架构,小端序,Linux内核版本2.6.36,很老,主要的时间也花费在找能支持这个L ...

  4. 通过QEMU 和 IDA Pro远程调试设备固件

    0x00 背景与简介 这篇文章主要讲了如何在模拟环境下调试设备固件. 作者:Zach Cutlip 原文链接:http://shadow-file.blogspot.gr/2015/01/dynami ...

  5. ida调试linux程序,MAC使用IDA PRO远程调试LINUX程序

    1 背景 在学习Linux系统上的一些漏洞知识的时候,往往需要进行"实地测试",但是在Linux系统上进行调试并不太方便,因为LINUX自带的GDB调试工具真的不太人性化,即使有G ...

  6. 双鱼直播动态调试 .so文件输出密匙

    在我们反编译完android源码后,发现密匙被藏在了.so文件中. 我们解压apk获得.so文件,我们可以自己新建一个工程来调用这个.so,输出密匙 好了,我们新建一个test功能,然后把解压的.so ...

  7. 安卓逆向_20 --- 模拟器检测、反调试检测、ELF动态调试、__libc_init 下断

    From( 模拟器检测实战分析 ):https://www.bilibili.com/video/BV1UE411A7rW?p=65 怎样过 app 的模拟器检测:https://bbs.pediy. ...

  8. Android 5.0 + IDA 6.8 调试经验分享

    现在升级快,网上的资料只能做参考.  学到了NDK逆向这一块,昨天为了能让IDA 能动态调试SO,瞎折腾了很久,这里分享一下我的经验. 工具:  IDA pro 6.8  Android 5.x ID ...

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

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

最新文章

  1. C2065 “__m128d”: 未声明的标识符
  2. javaee实训报告总结_程力汽车集团隆重召开专业厂暨集团成员厂上半年经营工作总结表彰会。2、程力集团专汽公告培训会圆满结束...
  3. 暮色森林模组_我的世界暮色森林mod全攻略,尤其是Boss击杀顺序,一定要牢记...
  4. 商品评价 - 信息脱敏
  5. 动态更新纹理闪烁问题
  6. ArcGIS Server 9.3 beta 体验三 -- 简阅 ADF 框架
  7. spring注解 annotation
  8. .net byte转java byte_「Java知识收集整理」Java语法的基础
  9. Intellij IDEA远程debug教程实战和要点总结
  10. SegNet论文理解
  11. IntelliJ Idea 向上/下插入空行快捷键
  12. 工作中沟通和执行力的重要性-开发、项目经理、需求之间的矛盾冲突
  13. 会长大人的《从小麦到馒头的过程》
  14. hutool压缩文件
  15. 线性规划模型详解及实际应用反思
  16. 解决ZeroDivisionError: integer division or modulo by zero问题
  17. vimium 成神之路-键盘党的胜利
  18. 地铁车辆主传动系统实时仿真测试平台ETest研究
  19. 操作系统基础知识用户态和内核态的区别
  20. 源码免杀教程 源码免杀思路详解

热门文章

  1. 2022年中国AI芯片行业深度研究
  2. CreateFile
  3. 认识Windows Communication Foundation
  4. 2015Cocos游戏开发大赛作品——人鱼塞壬
  5. Php通过gsoap调用c++ websevice
  6. javascript高级程序设计-Array迭代及归并
  7. vb6 枚举对象属性
  8. iOS6新特征:UICollectionView介绍-非常棒 -转
  9. 【转】如何让ucgui支持24位色(24bpp)
  10. JavaScript获取URL参数