返回列表 发帖

[讨论]IDA插件编程的问题:动态得到堆栈中各个变量的地址及长度

[讨论]IDA插件编程的问题:动态得到堆栈中各个变量的地址及长度
信息来源:邪恶八进制信息安全团队(www.eviloctal.com
文章作者:BeQuick

我的插件是与调试器进行交互的,下面是具体的流程:

    我的插件先在指定的地址设置断点,然后启动调试器,当调试器执行到断点后程序挂起,这时我想得到该函数的堆栈中各个变量的起始地址以及它们的长度。

    最初的想法是:得到该函数堆栈中每个字节的属性,然后根据属性的不同可以得到堆栈中各个变量的起始地址以及长度。 但fluFlags()函数不能调用(因为在头文件 byte.hpp 的声明中没有 ida_export, 不能在插件中被调用), 所以不能动态的更新堆栈中各个字节的属性(flags)。

    请问各位有没有其它的方法可以得到某个函数局部变量(该函数堆栈空间中的变量)的起始地址和长度? (我知道ida在静态分析中分析出了函数的局部变量的长度, 但我的问题是程序执行到某一断点时动态得到该函数堆栈变量的起始地址、长度等信息,不能是对静态分析结果进行词法、语法分析)

ps:
我测试了prev_head(),next_head(); prev_not_tail(ea_t ea),next_not_tail;prev_visea(ea_t ea),next_visea(ea_t ea);get_item_head(ea_t ea),get_item_end(ea_t ea)这些接口(这些都是在程序挂起后调用的),试图得到堆栈中局部变量的起始地址,但结果都和实际的情况相差很远。 然后用getFlags()输出了该函数堆栈空间的每个字节的属性,结果全部为:0x00000100 (与实际情况不符合),(我的推断:ida动态调试中,已经分析出了堆栈中各个字节的属性,但确没有把这些信息更新到.id1文件中)

帖子15 精华0 积分10 阅读权限40 性别男 来自湖北 武汉 在线时间5 小时

返回列表