IDA中动态调试下断点——技巧2

本文介绍了如何在IDA动态调试过程中,在伪C代码处下断点进行程序流程分析。通常先在主线函数下断点,然后逐步深入函数内部。对于Java接口层的函数,由于涉及Java调用,无法直接在内存中截取值;而C函数则可以直接在内存中查看。通过鼠标悬停变量可以查看内存中的值,数值和地址需区分。遇到IDA未正确翻译的情况,应在原始代码位置下断点,待执行完成后查看结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IDA中 动态调试 首先考虑 在伪C代码 下断点

特别注意:

对于 一般的 情况下 可以直接在伪C代码 下断点
程序流程分析的话 直接在伪C下断点 调试分析
效率极高 很直观 很效率
一般来讲先在 主线函数 (Java接口层函数)下 下断点
分析 流程
然后 在 主线函数里的 函数里 下断点 分析 具体数值来由

当jni里的 函数 用的是 java的 函数的时候 这个时候 是不能再内存中 直观 截获到 值的(字符串 数值)啥的
要是用的 C代码的 C函数 就可以 直观的 在 内存中 截获出来

例如:
JNI里Java的函数代码
v13 = (v3->functions->GetFieldID)(v3, v12, “signatures”, “[Landroid/content/pm/Signature;”);
v14 = (v3->functions->GetObjectField)(v3, v11, v13);
v15 = (v3->functions->GetObjectArrayElement)(v3, v14, 0);
result = _JNIEnv::NewStringUTF(v3, str);
这样的 都是 java的 函数 是不能再内存中 截取出来 值的

JNI里C 函数代码
sprintf(str, “%u”, v19);
strcpy(v10, v6);
strcat(v10, v7);
这样的 C函数 代码 是 可以直接在这里下断点
如果是在伪C代码处下断点的话 是可以通过 把鼠标 移动到 变量上 来查看到
其在内存中的值的
字符串的话 貌似直接出来
char *指针啥的 那么就是 保存的指针 那么可以通过 在寄存器里 找到 这个指针值 然后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值