首页
社区
课程
招聘
[求助]Win32汇编-罗云彬 遇到问题求教
发表于: 2007-12-12 16:48 5118

[求助]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是什么意思

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 235
活跃值: (23)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
1第一句就是保存一下内存头  
mov  edi,eax 就是将内存放入edi
23句就是找到新文件的pe头 也就是这个edi:ptr IMAGE_NT_HEADERS

不对的地方请指正
2007-12-12 17:59
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=;]...[/QUOTE]
RtlMoveMemory没有返回值
1      mov  @lpMemory,eax
    mov  edi,eax     这两行放的上一行应该更明白点.不知道我理解的正不正确,
2007-12-12 23:48
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
明白了
add    edi,esi和sub  edi,_lpFile是得到内存块中的PE文件头
_lpFile是原文件在内存中的开始地址,而ESI是原文件的PE文件头.用ESI减去_lpFile得到的是原文件头在文件中的偏移,用这个偏移加上内存块的开始地址得到新的PE文件头
2007-12-13 00:37
0
雪    币: 235
活跃值: (23)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
我看了一下罗云彬的例子 确实是将你发出来的那两句放在上面的 !你的程序是有错误的。。。。
2007-12-13 09:43
0
雪    币: 235
活跃值: (23)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
你的程序有错误  那两句就是在上面的
2007-12-13 09:45
0
游客
登录 | 注册 方可回帖
返回
//