-
-
[求助]关于内联汇编中的je怎么处理
-
发表于:
2009-6-26 17:42
6124
-
在看精华9中有这么一个帖子http://bbs.pediy.com/showthread.php?t=46163
标 题: 第三方二进制汇编代码在VC中的移植和应用
作 者: shangzh
时 间: 2007-06-11 16:29
链 接: http://bbs.pediy.com/showthread.php?t=46163
其中有介绍直接将算法的反汇编代码内联到keygen中成为一个函数直接调用,其中有这么一段
A. 代码的修正
拷贝出来的汇编代码需要进行初步处理才能移植到VC的函数中,上面的汇编代码中地址头需要全部删除掉(这个可以在UltraEdit的列模式中复制),对于代码中的常数全部要加上0x,因为Ollyice拷贝出来的都是16进制数,对应跳转指令可以用原来的标示符号,如jnz short 100022F5,改成jnz short A100022F5,将地址前加上一个字符,否则VC对于这样的跳转会将数字理解成数字而认为是错误代码,而不会根据目标标签自动计算偏移量。
我分析一个软件的代码其中有这样一段
push FF
call dword ptr [674338]
lea eax, dword ptr [esi+8]
test eax, eax
je short 00511EE8
mov dword ptr [eax+4], eax
我按文章中介绍的这样写
_asm
{
push 0xFF
call dword ptr [0x674338]
lea eax, dword ptr [esi+8]
test eax, eax
je short A00511EE8>>>>>>>>>>就是这儿通不过
mov dword ptr [eax+4], eax
......
}
然后用VS2008编译结果却得到个error C2094: 标签“A00511EE8”未定义
哪位大神介绍一个内联汇编到底要注意些什么呢?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)