【发布时间】:2011-04-08 12:25:10
【问题描述】:
通过调试程序,我只知道在单击按钮之前,一组已知数据不在内存中(通过内存搜索确认),而在单击它之后,数据在内存中(始终位于不同的位置)。
如何找到生成此数据的代码?
其中一个主要问题(可能很重要)是它是一个 .net 程序(我无法使用 Reflector 对其进行分析,因为它被混淆了)。所以我正在分析 .NET 生成的程序集(在 Olly / Immunity / IDA 中)。
【问题讨论】:
通过调试程序,我只知道在单击按钮之前,一组已知数据不在内存中(通过内存搜索确认),而在单击它之后,数据在内存中(始终位于不同的位置)。
如何找到生成此数据的代码?
其中一个主要问题(可能很重要)是它是一个 .net 程序(我无法使用 Reflector 对其进行分析,因为它被混淆了)。所以我正在分析 .NET 生成的程序集(在 Olly / Immunity / IDA 中)。
【问题讨论】:
如果是 .Net,您可以调试 IL 代码。虽然这并不容易,但应该可以找到将序列写入内存的 il 指令。
尝试使用所谓的SOS 扩展名debugging tools for windows。
您也可以尝试是否可以从经过混淆的程序集生成 C# 代码以进行调试。但这肯定不会比 IL 可读性更好。
【讨论】:
将作弊引擎添加到您的工具包中。
如果您可以获得它将写入的地址,您可以右键单击它并选择“找出写入此地址的内容”。
附注要获得相反的效果,您可以在内存视图中选择一条指令,右键单击并选择“找出该指令访问的地址”。
【讨论】: