-
-
[求助]Win32汇编-罗云彬 遇到问题求教
-
发表于:
2007-12-12 16:48
5118
-
mov esi,_lpPeHead ;原PE文件头的指针
assume esi:ptr IMAGE_NT_HEADERS,edi:ptr IMAGE_NT_HEADERS ;ESI指向原PE文件头
invoke GlobalAlloc,GPTR,[esi].OptionalHeader.SizeOfHeaders ;申请固定的内存块,内存块的大小是文件头的大小
mov edi,eax ;EDI指向内存块
invoke RtlMoveMemory,edi,_lpFile,[esi].OptionalHeader.SizeOfHeaders ;复制原PE文件头到新申请的内存块
mov @lpMemory,eax
mov edi,eax
add edi,esi
sub edi,_lpFile
movzx eax,[esi].FileHeader.NumberOfSections
dec eax
mov ecx,sizeof IMAGE_SECTION_HEADER
mul ecx
mov edx,edi
add edx,eax
add edx,sizeof IMAGE_NT_HEADERS
mov ebx,edx
add ebx,sizeof IMAGE_SECTION_HEADER
assume ebx:ptr IMAGE_SECTION_HEADER,edx:ptr IMAGE_SECTION_HEADER
这段代码有几个地方不解
1 mov @lpMemory,eax
mov edi,eax 这两行起什么作用
2 EDI指向内存 ESI指向原PE文件头 那add edi,esi的作用是什么??
3 sub edi,_lpFile, _IpFile是一原文件的内存映象的首地址,那edi-_lpfile是什么意思
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!