标记内存变化的技巧


0

我正在使用IDA来逆转某些似乎从某些散列函数派生其密钥的加密代码。我已经认识到基于幻数的算法,但是我想很容易地看到它在记忆中的变化。

是否存在一种标记IDA或其他调试器中十六进制视图中内存更改的方法?我发现无时无刻都在检查和记忆内存地址。

我在想象一些能够标记内存的功能,并且可以让您将鼠标悬停在这些字段上,以获取有关更改内容的更多信息。这应该不是那么密集,如果只有当步进

“这就是生活,处理它”也是一个可以接受的答案,但我只想知道,如果我这样做是愚蠢的繁琐的方式,或者有一个更好的方法。

谢谢!

  0

我不确定我是否正确理解了您的问题,但是您是否尝试在您感兴趣的地址上写入硬件断点?只要程序写入到您标记的地址,这个就会中断。 01 12月. 172017-12-01 16:13:04

  0

这是正确的,我已经这样做了。我的问题在于,我试图通过名称来标记内存位置,这样我可以更容易地跟踪内存中的内容。想想IDA视图的评论功能,但对于十六进制视图 01 12月. 172017-12-01 17:09:43

0

不要以为有什么东西。但你可以自己实现它。如果你知道你的代码使用的内存区域,你可以通过VirtualProtect()将内存页面标记为PAGE_GUARD,就像犰狳保护器曾经做过的那样:)在每次访问内存时,STATUS_GUARD_PAGE_VIOLATION都会被提出,你会知道是谁做的,试图访问。然后你从异常中恢复过来并重新做一遍。

  0

很棒的建议!当我们已经有很好的工具时,我试图不再重新发明轮子,但如果像我们这样的事情有用,我会尝试一下。谢谢! 01 12月. 172017-12-01 16:10:47

  0

我认为这是最有效的方法,调试器也使用该方法。即使操作系统使用类似的技术寻呼机制。 03 12月. 172017-12-03 22:08:35


0

如果您的目标在Windows中运行,然后编辑断点(用鼠标右键点击断点处的线,然后单击“编辑断点”),您可能会使用"Page breakpoints"来写入它的区域可以指定是否希望对其进行跟踪(编辑断点并检查“跟踪”)或者是否希望过程停止(编辑断点并检查“断点”)。 PS:它会很慢,不过,