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

本文主要向大家介绍了C/C++知识点之ida动态调试.so 动态加载(必须真机),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

9d955cf8071596a6aa17f9a557469fa1.png

第一步连接安卓手机 查看设备

localhost:~ liuhailong$ adb devicesList of devices attachedCVH7N15A28004365    devicelocalhost:~ liuhailong$

第二步 上传调试器的服务端 可以 32 位 64 位都上传这里 32 位命令

adb push /Applications/IDA\ Pro\ 7.0/ida.app/Contents/MacOS/dbgsrv/android_server /data/local/tmp/server

上传 apk 到 app目录下 或者直接安装进入 android先提权 修改/server  777 命令

安装命令例如:adb install /Users/liuhailong/Desktop/testandroid/4010.apk 上传命令例如:adb pull /data/app/c1.apk进入 androidadb shell提权 su修改属性chmod 777 server root用户运行server运行monitor 调试必须要启动它monitor &以调试方式启动 apk 例如:localhost:~ liuhailong$ adb shell am start -D -n com.ReverseMe2015/com.ReverseMe2015.MainActivityStarting: Intent { cmp=com.ReverseMe2015/.MainActivity }localhost:~ liuhailong$ 映射端口localhost:~ liuhailong$ adb forward tcp:23946 tcp:23946localhost:~ liuhailong$ 调试运行  端口默认为8700 可以在monitor上面看localhost:~ liuhailong$ jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700设置未捕获的java.lang.Throwable设置延迟的未捕获的java.lang.Throwable正在初始化jdb...>

用 ida (mac版本用 6.8 7.0 有 bug 不能动态调试多线程) 附加它  先反编译 apk 再把.so 文件拖入 ida(mac 下如果直接附加的话显示不出函数)

选择调试器 (真机用 arm 模拟器用 linux)

选择服务端

上面 启动服务器时 mac上默认端口 :23946

附加

记得点击运行

!///修改onload部分///1.找到 onload

进去

只有一个参数 很定是 javaVM类型(注意大小写要一致)的 vm修改类型 按 y键

往下看出来一个GetEnv 继续往下 v9很定是一个 evm

修改

然后回上面修改evm的类型 JNIEnv

全部出来

点击那些函数 点 force call type

点击

对应函数原型 修改注意: ida中都是用的 c 所有都会多一个参数也就是 cpp 中的 this

jint        (*RegisterNatives)(JNIEnv*, jclass, const JNINativeMethod*,                        jint);

修改

进去函数数组根据最后一个参数知道它只有一个函数

结构体的定义

修改

进去 c 函数

继续修改 对比 java源码与规则

修改

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IDA(Interactive Disassembler)是一款反汇编工具,版本7.0是其最新版本。动态调试安卓应用程序是使用IDA 7.0进行分析和调试。 首先,我们需要准备一个安卓设备(手机或模拟器)和一台运行IDA 7.0的计算机。 1. 在计算机上安装IDA 7.0,并确保它与安卓设备能够进行通信。可以通过连接设备到计算机,或者使用网络调试器,如Frida或Xposed等。 2. 打开IDA 7.0并创建一个新的分析项目。可以选择从APK文件或已经安装在设备上的应用程序进行分析。 3. 如果选择从APK文件进行分析,可以通过"File"菜单下的"Load File"选项加载APK文件。如果选择从已安装应用程序进行分析,则可以通过"File"菜单下的"Attach to process"选项选择目标应用程序。 4. 一旦应用程序被加载或附加,IDA 7.0会自动进行静态分析,并将汇编代码显示在界面上。 5. 接下来,可以使用IDA 7.0的动态调试功能。通过"Debugger"菜单下的"Debugger options"选项,可以设置断点、单步执行代码、查看和修改寄存器值等。 6. 当应用程序执行到断点处时,IDA 7.0会暂停执行,并显示当前的程序状态。此时,可以查看当前的寄存器、内存内容以及堆栈等信息,以帮助分析程序。 7. 可以通过IDA 7.0的调试功能来逐步执行代码,以便分析应用程序的行为和逻辑。可以在特定的代码位置设置断点,并观察寄存器和内存的变化。 8. 在动态调试过程中,可以使用IDA 7.0的其他功能,如动态数据流分析、函数调用图等来深入分析应用程序。 9. 最后,可以通过"Debugger"菜单下的"Detach"选项或关闭IDA 7.0来结束动态调试。 总之,使用IDA 7.0动态调试安卓应用程序可以帮助我们深入分析程序的执行过程和逻辑,从而更好地理解和修改应用程序的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值