首页
社区
课程
招聘
未解决 [求助]IDA如何查看变量值
发表于: 2019-10-14 09:52 9062

未解决 [求助]IDA如何查看变量值

2019-10-14 09:52
9062

这是某里系App中的的一个.so文件,动态调试中。

上图是IDA动态调试中的一个方法入口,这个方法共有4个参数。分别是 
R0 JNIEnv *env
R1 jobject obj
R2 int command
R3 jarray args

非常清楚可以看到R2寄存器值为0x28A1,这和我传入so文件的参数值(10401)完全符合
我尝试去匹配R3(jarray args)的值,R3 = [stack]:BEF45420。栈区BEF45420值为 dalvik_main_space:1314D6E0。

跳转到1314D6E0,是这样的,没有看到我熟悉的入参数或者涉及入参的结构


麻烦请教下各位大佬,我如何在动态调试时能方便的看到包括一些重要变量的值。

dalvik_main_space 应该是dvm的内存结构,我能否写一段py脚本来达到读取dalvik_main_space数据的目的。




[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 5
支持
分享
最新回复 (8)
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
IDA静态分析so和动态调试看到得数据是不同得。动态调试需要自己主动设置数据类型,或者编辑已加载得符号
最后于 2019-10-14 11:49 被zylyy编辑 ,原因:
2019-10-14 11:48
0
雪    币: 16
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
假设我明确的知道参数是字符串的数据类型。我如何才能在动态调试时候看到这段字符串。
2019-10-14 14:00
0
雪    币: 16
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
zylyy IDA静态分析so和动态调试看到得数据是不同得。动态调试需要自己主动设置数据类型,或者编辑已加载得符号
假设我明确的知道参数是字符串的数据类型。我如何才能在动态调试时候看到这段字符串。
2019-10-14 14:01
0
雪    币: 286
活跃值: (316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
同求答案,我也想知道怎么操作,顶一下
2019-10-14 15:24
0
雪    币: 16
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
猪儿美 同求答案,我也想知道怎么操作,顶一下
我尝试写个一个demo,发现在类似dalvik_main_space:1314D6E0附近有我看到的字符串。
我觉得应该是要根据数据类型在内存中去匹配对应的参数值,这个需要对dvm的内存结构比较了解,目前我查不到具体的资料。
2019-10-14 17:03
0
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
7
ida有个watch窗口,不知道能不能满足你的要求
2019-10-15 13:46
0
雪    币: 16
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
Lixinist ida有个watch窗口,不知道能不能满足你的要求

最后于 2019-10-16 11:18 被wx_H_855编辑 ,原因:
2019-10-16 11:17
0
雪    币: 16
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
wx_H_855 我尝试过了。 我总结下我的问题是 1.假设R0寄存器中load了一个值,这个值的内容是R3 = [stack]:BEF45420,栈区BEF45420值为dalvik_main_space:131 ...
我尝试过了。
我总结下我的问题是
1.假设R3寄存器中load了一个值,这个值的内容是R3 = [stack]:BEF45420,栈区BEF45420值为dalvik_main_space:1314D6E0,那么我如何确定1314D6E0是什么类型的?
2.假设我已经确定1314D6E0是代表一个字符串数组例,他的类型是JNI中的jarray,那么我如何才能看到这个字符串数组的值分别是什么?
2019-10-16 11:18
0
游客
登录 | 注册 方可回帖
返回
//