有人知道这个C ++内联程序集是干什么的吗?
我在一个名为DM2的开源Windows工具中看到了以下代码。
#define OEP_ASM __asm jmp OEP
__asm _emit 0x5B __asm _emit 0x66 __asm _emit 0x6C
__asm _emit 0x79 __asm _emit 0x66 __asm _emit 0x61
__asm _emit 0x6E __asm _emit 0x63 __asm _emit 0x79
__asm _emit 0x26 __asm _emit 0x57 __asm _emit 0x65
__asm _emit 0x69 __asm _emit 0x72 __asm _emit 0x64
__asm _emit 0x5D __asm _emit 0x00 __asm OEP:
有没有意见和搜索互联网我基层还没有明白这是什么?! MSDN只是告诉我,这将字节插入代码。 这很多我理解,但我不明白这些字节做什么,它看起来不像指示。
任何人都可以解释,或者至少指出插入字节的方向是正确的吗?
事实上,这不是代码,它只是一个字符串。 这可能是为了混淆目的而发出的。
$ echo $'x5Bx66x6Cx79x66x61x6Ex63x79x26x57x65x69x72x64x5D'
[flyfancy&Weird]
或者,也许它必须嵌入到代码部分中,而内联asm不提供其他方法。 另请注意,第一条指令跳过整个字符串。
它只是嵌入到代码中的一个以空字符结尾的ASCII字符串[flyfancy&Weird]
(如注释所示)。 jmp OEP
指令跳过该字符串。
上一篇: Does anybody know what this C++ inline assembly does?
下一篇: Regular expression for parsing similar assembler instructions