?? _processpefile.asm
字號:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Peinfo 例子的 PE文件處理模塊
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.const
szMsg db '文件名:%s',0dh,0ah
db '----------------------------------------------------------',0dh,0ah
db '運行平臺: 0x%04X',0dh,0ah
db '節區數量: %d',0dh,0ah
db '文件標記: 0x%04X',0dh,0ah
db '建議裝入地址: 0x%08X',0dh,0ah,0ah,0
szMsgSection db '----------------------------------------------------------',0dh,0ah
db '節區名稱 節區大小 虛擬地址 Raw_尺寸 Raw_偏移 節區屬性',0dh,0ah
db '----------------------------------------------------------',0dh,0ah,0
szFmtSection db '%s %08X %08X %08X %08X %08X',0dh,0ah,0
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcessPeFile proc _lpFile,_lpPeHead,_dwSize
local @szBuffer[1024]:byte,@szSectionName[16]:byte
pushad
mov edi,_lpPeHead
assume edi:ptr IMAGE_NT_HEADERS
;********************************************************************
; 顯示 PE 文件頭中的一些信息
;********************************************************************
movzx ecx,[edi].FileHeader.Machine
movzx edx,[edi].FileHeader.NumberOfSections
movzx ebx,[edi].FileHeader.Characteristics
invoke wsprintf,addr @szBuffer,addr szMsg,\
addr szFileName,ecx,edx,ebx,\
[edi].OptionalHeader.ImageBase
invoke SetWindowText,hWinEdit,addr @szBuffer
;********************************************************************
; 循環顯示每個節區的信息
;********************************************************************
invoke _AppendInfo,addr szMsgSection
movzx ecx,[edi].FileHeader.NumberOfSections
add edi,sizeof IMAGE_NT_HEADERS
assume edi:ptr IMAGE_SECTION_HEADER
.repeat
push ecx
;********************************************************************
; 節區名稱
;********************************************************************
invoke RtlZeroMemory,addr @szSectionName,sizeof @szSectionName
push esi
push edi
mov ecx,8
mov esi,edi
lea edi,@szSectionName
cld
@@:
lodsb
.if ! al
mov al,' '
.endif
stosb
loop @B
pop edi
pop esi
;********************************************************************
invoke wsprintf,addr @szBuffer,addr szFmtSection,\
addr @szSectionName,[edi].Misc.VirtualSize,\
[edi].VirtualAddress,[edi].SizeOfRawData,\
[edi].PointerToRawData,[edi].Characteristics
invoke _AppendInfo,addr @szBuffer
add edi,sizeof IMAGE_SECTION_HEADER
;********************************************************************
pop ecx
.untilcxz
assume edi:nothing
popad
ret
_ProcessPeFile endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -