Keygenme - 钥匙位置

逆向工程 艾达 x86 快手
2021-07-09 11:34:19

所以我弄乱了一个用 C++ 编写的有趣的 keygenme,它根据OSINFO结构的值派生出密钥现在,在检查有效密钥时,它使用以下指令:

CMP EAX, DWORD PTR DS:[key]

我的问题是:为什么密钥不存储在局部变量或类似的东西中:[EBP-X]

我如何将它转换回 C++ 以便它将密钥存储在DS:[key]而不是在堆栈中?

1个回答

使用全局或静态变量。

解释:

EBP(基指针)通常保存当前堆栈帧的地址,在这种情况下,它用于获取局部变量的地址。(参考) 全局或静态变量不需要这样的指针,因为它们的地址在程序加载时是固定的。


顺便说一句:我没有测试在 32 位编译器上编译一个简单的程序。64 位模式不使用段寄存器