📄 sectiondlg.asm
字号:
_InitSectionList proc hWnd
local @stlvColumn:LVCOLUMN,@hList:DWORD
invoke RtlZeroMemory,addr @stlvColumn,sizeof @stlvColumn
invoke GetDlgItem,hWnd,IDC_LIST_SECTION
mov @hList,eax
invoke SendMessage,@hList,LVM_SETEXTENDEDLISTVIEWSTYLE,NULL,LVS_EX_FULLROWSELECT
mov @stlvColumn.imask,LVCF_FMT or LVCF_TEXT or LVCF_WIDTH or LVCF_SUBITEM
mov @stlvColumn.fmt,LVCFMT_LEFT
mov @stlvColumn.iSubItem,0
mov @stlvColumn.lx,100
mov @stlvColumn.pszText,OFFSET ColumTitle1
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_INSERTCOLUMN,0,addr @stlvColumn
mov @stlvColumn.fmt,LVCFMT_RIGHT
mov @stlvColumn.lx,100
mov @stlvColumn.pszText,OFFSET ColumTitle2
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_INSERTCOLUMN,1,addr @stlvColumn
mov @stlvColumn.lx,100
mov @stlvColumn.pszText,OFFSET ColumTitle3
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_INSERTCOLUMN,2,addr @stlvColumn
mov @stlvColumn.lx,100
mov @stlvColumn.pszText,OFFSET ColumTitle4
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_INSERTCOLUMN,3,addr @stlvColumn
mov @stlvColumn.lx,100
mov @stlvColumn.pszText,OFFSET ColumTitle5
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_INSERTCOLUMN,4,addr @stlvColumn
mov @stlvColumn.lx,110
mov @stlvColumn.pszText,OFFSET ColumTitle6
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_INSERTCOLUMN,5,addr @stlvColumn
ret
_InitSectionList endp
_ShowSection proc hWnd
local @stlvItem:LVITEM
local @szName[16]:byte,@szbuffer[1024]:byte
pushad
mov edi,stMapFile.lpPEHeader
assume edi:ptr IMAGE_NT_HEADERS
movzx ecx,[edi].FileHeader.NumberOfSections
add edi,sizeof IMAGE_NT_HEADERS
assume edi:ptr IMAGE_SECTION_HEADER
.while ecx>0
push ecx
invoke RtlZeroMemory,addr @szName,sizeof @szName
push edi
push esi
mov esi,edi
lea edi,@szName
mov ecx,8
cld
@@:
lodsb
.if !al
mov al,' '
.endif
stosb
loop @B
pop esi
pop edi
invoke RtlZeroMemory,addr @stlvItem,sizeof @stlvItem
mov @stlvItem.imask,LVIF_TEXT
mov @stlvItem.iItem,0
lea ebx,@szName
mov @stlvItem.pszText,ebx
mov @stlvItem.iSubItem,0
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_INSERTITEM,0,addr @stlvItem
invoke wsprintf,addr @szbuffer, offset szFmtHex,[edi].VirtualAddress
lea ebx,@szbuffer
mov @stlvItem.pszText,ebx
mov @stlvItem.iSubItem,1
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_SETITEM,0,addr @stlvItem
invoke wsprintf,addr @szbuffer, offset szFmtHex,[edi].Misc.VirtualSize
lea ebx,@szbuffer
mov @stlvItem.pszText,ebx
mov @stlvItem.iSubItem,2
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_SETITEM,0,addr @stlvItem
invoke wsprintf,addr @szbuffer, offset szFmtHex,[edi].PointerToRawData
lea ebx,@szbuffer
mov @stlvItem.pszText,ebx
mov @stlvItem.iSubItem,3
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_SETITEM,0,addr @stlvItem
invoke wsprintf,addr @szbuffer, offset szFmtHex,[edi].SizeOfRawData
lea ebx,@szbuffer
mov @stlvItem.pszText,ebx
mov @stlvItem.iSubItem,4
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_SETITEM,0,addr @stlvItem
invoke wsprintf,addr @szbuffer, offset szFmtHex,[edi].Characteristics
lea ebx,@szbuffer
mov @stlvItem.pszText,ebx
mov @stlvItem.iSubItem,5
invoke SendDlgItemMessage,hWnd,IDC_LIST_SECTION,LVM_SETITEM,0,addr @stlvItem
inc @stlvItem.iItem
add edi,sizeof IMAGE_SECTION_HEADER
pop ecx
dec ecx
.endw
assume edi:nothing
popad
ret
_ShowSection endp
;节表对话框
_ProcDlgSection proc uses ebx edi esi hWnd,wMsg,wParam,lParam
mov eax,wMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
mov eax,hWnd
mov hSection,eax
invoke _UnLoadFile,offset stMapFile
invoke _LoadIsPEFile,offset szFileName,offset stMapFile,hWnd
invoke _InitSectionList,hWnd
invoke _ShowSection,hWnd
.elseif eax == WM_COMMAND
mov eax,wParam
.if ax == IDOK
invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL
ret
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlgSection endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -