首页 > Windows开发 > 详细

二鸟学Win32 汇编——PE头文件

时间:2014-05-04 10:13:48      阅读:436      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
 
;代码段
    .code
;---------------------
; 将内存偏移量RVA转换为文件偏移
; lp_FileHead为文件头的起始地址
; _dwRVA为给定的RVA地址
;---------------------

_RVAToOffset proc _lpFileHead, _dwRVA
  local @ret

  pushad
  mov esi, _lpFileHead
  assume esi:ptr IMAGE_DOS_HEADER
  add esi, [esi].e_lfanew
  assume esi:ptr IMAGE_NT_HEADERS
  
  mov edx, esi
  add edx, sizeof IMAGE_NT_HEADERS
  assume edx, IMAGE_SECTION_HEADER
  
  mov edi,_dwRVA
  mov ecx, [esi].FileHeader.NumberOfSections
  
  .repeat
    mov eax, [edx].VirtualAddress
    add eax, [edx].SizeOfRawData
    .if (edi>=[edx].VirtualAddress) && (edi<eax)
      sub edi, [edx].VirtualAddress
      mov eax, [edx].PointerToRawData
      add eax, edi
      jmp @F
    .endif  
  .untilcxz
mov eax, -1

@@:assume esi:nothing
  assume edx:nothing
  mov @ret, eax
  popad
  mov eax, @ret
  ret  
_RVAToOffset endp
bubuko.com,布布扣

 

二鸟学Win32 汇编——PE头文件,布布扣,bubuko.com

二鸟学Win32 汇编——PE头文件

原文:http://www.cnblogs.com/onetheway/p/3705813.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!