![]() |
#2
ONEPROBLEM2010-04-28 00:01
|
各位大侠:
我是菜鸟,拜读《琢石成玉》第chapter17\在PE文件上附加可执行代码的例子\_ProcessPeFile.asm\(part 2)中代码有不理解的地方,盼指点:
Mov esi,_lpPeHead
Assume esi:IMAGE_NT_HEADERS,edi:IMAGE_NT_HEADERS
Invoke GlobalAlloc,GPTR,[esi].OptionalHeader.SizeOfHeaders
Mov edi,eax
Invoke RtMoyeMemory,edi,_lpFile,[esi]. OptionalHeader.SizeOfHeaders
Mov @lpMomery,eax
Mov edi,eax
Add edi,esi
Sub edi,_lpFile
倒数四行似乎实现以下公式edi=eax(@lpmemory)+esi-_lpfile
其中eax(@lpmemory)应该指向新PE文件头在内存中的地址,那么edi指向何处?这个公式又是什么含义?求大侠点拨。