我一直在尝试将此代码转换为 C++,而不进行任何内联,但我无法弄清楚..
假设你得到了这条线
sub edx, (offset loc_42C1F5+5)
我的六角射线给了我
edx -= (uint)((char*)loc_42C1F5 + 5))
但是如果没有 loc_42C1F5
,它会是什么样子。
我想应该是
edx -= 0x42C1FA;
但是这是正确的吗? (无法真正在任何汇编器级调试器中单步执行此代码......因为它已受到良好的保护)
loc_42C1F5实际上是一个标签..
seg000:0042C1F5 loc_42C1F5: ; DATA XREF: sub_4464A0+2B5o
seg000:0042C1F5 mov edx, [esi+4D98h]
seg000:0042C1FB lea ebx, [esi+4D78h]
seg000:0042C201 xor eax, eax
seg000:0042C203 xor ecx, ecx
seg000:0042C205 mov [ebx], eax
最佳答案
loc_42C1F5
是一个符号。鉴于您提供的信息,我无法说出其偏移量是多少。它可能是 0x42C1F5,也可能完全是其他东西。
如果是0x42C1F5,那么你的翻译应该是正确的。
关于c++ - ASSEMBLY 偏移到 C++ 代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7343127/