c++ - ASSEMBLY 偏移到 C++ 代码问题

标签 c++ c debugging assembly

我一直在尝试将此代码转换为 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/

相关文章:

c++ - 如何在C++中初始化结构中的 vector

c++ - 在 wifstream 析构函数中中止

c - 如何在 for 循环中正确实现 sleep 函数? (乌类图)

c - 在 local_bh_disable()/local_bh_enable() 中使用 rcu_dereference() 是否安全?

.net - VS2005中asp.net调试问题

c++ - 简单派生类上的 Linux GCC 链接错误

c++ - 使用cuda创建共现矩阵

c - 需要在 shell 脚本中获取 C 程序名称

debugging - 如何在gdb中将命令的输出作为参数传递?

javascript - 在 Safari Web Inspector 中调试 Web Worker