在我之前的问题中,我最初曾问过这个问题,但是由于完全忽略了问题的这一方面,因此我不得不单独询问。我在上述链接的问题中了解到,支持前后注释,但是其他事件如何处理,例如当我按h(例如2Ah变为42)将数字更改为以10为底数(或返回)或r以将其显示为字符时(例如2Ah变为*)。

我将如何捕捉这些?特定事件通知。例如。根据Igor的说法,IDA SDK 6.4引入了前后注释的通知。如何获得较旧的版本和6.4以配合w.r.t.这些事件与collabREate一起使用吗?

我知道允许反向工程IDA本身,所以我要寻找的是指针。

评论

如果您没有看到它,Dumpinfo.idc可能是一个好的开始。这是J.C. Roberts创建的IDC脚本的链接。我不确定是否能回答您的问题,所以请添加为评论。

@alexanderh:不,我不知道这个。感谢您的指导。它肯定看起来像一个起点。

我认为这个问题的唯一可能答案是“逆向工程”。发现触发您感兴趣的动作的机制,然后修补IDA(或使用DLL注入等)来发送某种自定义通知。但是,我怀疑这样容易吗?您可能预期会有多个代码路径负责同一操作。我希望如果那样简单,Hex-Rays会自己添加通知。

#1 楼

当我需要执行类似的任务时,我最终钩住了IDB保存事件,然后在保存每个用户之前使用IDA API扫描了IDB以进行修改。扫描整个功能列表大约花了几秒钟,汇总了有关功能和数据元素的大多数信息。对我来说,这听起来比尝试对IDA进行反向工程师和修补这些方法更实用。尤其是在尝试捕获诸如用户热键之类的UI事件时,很容易引起麻烦。您正在处理多个IDB文件。

如果您希望对IDA进行反向工程,那么在某个地方加入有关该主题的讨论将非常有趣。
因为IDA现在在大多数UI中都使用Qt(尽管我想迁移到Qt并不像人们希望的那样顺利),但Qt的一个很好的起点将是Daniel Pistelli的Qt内部和反向文章,其中还包括IDAPython最后是脚本(强烈建议阅读整篇文章)。

有点过时了,但是ng IDA使用Qt 4.8.x并没有太多区别(如果您希望列出我所知道的那些区别)。

基本上,因为Qt是事件驱动的(并且有些幸运的是,IDA 6.0的设计就是考虑到这一点)可能只是您需要收听的情况,在Qt方言中这称为connect-将slot(事件处理程序)添加到signal(事件),至少可以

我以前曾做过一些中等程度的Qt-IDA骇客,我称之为Qt-IDA骇客,使用Qt和PyQt在IDA的应用程序下操纵Qt对象。用与设法手动添加和编辑菜单项和工具栏相同的方式,在IDA的反汇编视图中单击鼠标右键或挂接热键时,肯定可以查看上下文菜单弹出窗口。

我的RE.SE答案可能是一个很好的起点。

评论


感谢您抽出宝贵的时间回答。这是Rolf持有将是唯一可行方法的良好起点。

– 0xC0000022L♦
13年5月31日在22:50