⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lion-petut-c05.htm

📁 在DOS下编程因为实模式的限制
💻 HTM
📖 第 1 页 / 共 3 页
字号:
LOCAL seh:SEH <br>
&nbsp;&nbsp; invoke GetModuleHandle,NULL <br>
&nbsp;&nbsp;&nbsp;mov hInstance,eax <br>
&nbsp;&nbsp;&nbsp;mov ofn.lStructSize,SIZEOF ofn <br>
&nbsp;&nbsp; mov ofn.lpstrFilter, OFFSET FilterString <br>
&nbsp;&nbsp; mov ofn.lpstrFile, OFFSET buffer <br>
&nbsp;&nbsp; mov ofn.nMaxFile,512 <br>
&nbsp;&nbsp; mov ofn.Flags, OFN_FILEMUSTEXIST or
OFN_PATHMUSTEXIST or OFN_LONGNAMES or OFN_EXPLORER or
OFN_HIDEREADONLY <br>
&nbsp;&nbsp; invoke GetOpenFileName, ADDR ofn <br>
&nbsp;&nbsp; .if eax==TRUE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke CreateFile, addr buffer,
GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .if eax!=INVALID_HANDLE_VALUE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov hFile,
eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
CreateFileMapping, hFile, NULL, PAGE_READONLY,0,0,0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .if eax!=NULL <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov hMapping, eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke MapViewOfFile,hMapping,FILE_MAP_READ,0,0,0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if eax!=NULL <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov
pMapping,eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
assume fs:nothing <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push fs:[0] <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop seh.PrevLink <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov seh.CurrentHandler,offset SEHHandler <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov seh.SafeOffset,offset FinalExit <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea eax,seh <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov fs:[0], eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov seh.PrevEsp,esp <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov seh.PrevEbp,ebp <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov edi, pMapping <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
assume edi:ptr IMAGE_DOS_HEADER <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if [edi].e_magic==IMAGE_DOS_SIGNATURE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add edi, [edi].e_lfanew <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assume
edi:ptr IMAGE_NT_HEADERS <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if [edi].Signature==IMAGE_NT_SIGNATURE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov ValidPE, TRUE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.else
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov ValidPE, FALSE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;.else <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov
ValidPE,FALSE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif <br>
FinalExit: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push seh.PrevLink <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop fs:[0] <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if ValidPE==TRUE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call ShowSectionInfo <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.else <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke MessageBox, 0, addr FileInValidPE, addr AppName,
MB_OK+MB_ICONINFORMATION <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.endif <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke UnmapViewOfFile, pMapping <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.else <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke MessageBox, 0, addr FileMappingError, addr AppName,
MB_OK+MB_ICONERROR <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endif
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
CloseHandle,hMapping <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .else <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
MessageBox, 0, addr FileOpenMappingError, addr AppName,
MB_OK+MB_ICONERROR <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .endif <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke CloseHandle, hFile <br>
&nbsp;&nbsp;&nbsp;&nbsp;.else <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke MessageBox, 0, addr
FileOpenError, addr AppName, MB_OK+MB_ICONERROR <br>
&nbsp;&nbsp;&nbsp; .endif <br>
&nbsp;&nbsp;.endif <br>
&nbsp;&nbsp;invoke ExitProcess, 0 <br>
&nbsp;&nbsp;invoke InitCommonControls <br>
start endp <br>
<br>
SEHHandler proc uses edx
pExcept:DWORD,pFrame:DWORD,pContext:DWORD,pDispatch:DWORD <br>
&nbsp;&nbsp; mov edx,pFrame <br>
&nbsp;&nbsp; assume edx:ptr SEH <br>
&nbsp;&nbsp;&nbsp;mov eax,pContext <br>
&nbsp;&nbsp; assume eax:ptr CONTEXT <br>
&nbsp;&nbsp; push [edx].SafeOffset <br>
&nbsp;&nbsp; pop [eax].regEip <br>
&nbsp;&nbsp; push [edx].PrevEsp <br>
&nbsp;&nbsp; pop [eax].regEsp <br>
&nbsp;&nbsp; push [edx].PrevEbp <br>
&nbsp;&nbsp; pop [eax].regEbp <br>
&nbsp;&nbsp; mov ValidPE, FALSE <br>
&nbsp;&nbsp; mov eax,ExceptionContinueExecution <br>
&nbsp;&nbsp; ret <br>
SEHHandler endp <br>
<br>
DlgProc proc uses edi esi hDlg:DWORD, uMsg:DWORD, wParam:DWORD,
lParam:DWORD <br>
&nbsp;&nbsp; LOCAL lvc:LV_COLUMN <br>
&nbsp;&nbsp; LOCAL lvi:LV_ITEM <br>
&nbsp;&nbsp; .if uMsg==WM_INITDIALOG <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov esi, lParam <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.imask,LVCF_FMT or
LVCF_TEXT or LVCF_WIDTH or LVCF_SUBITEM <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.fmt,LVCFMT_LEFT <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.lx,80 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.iSubItem,0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.pszText,offset SectionName
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_INSERTCOLUMN,0,addr
lvc inc lvc.iSubItem <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.fmt,LVCFMT_RIGHT <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.pszText,offset VirtualSize
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_INSERTCOLUMN,1,addr
lvc <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc lvc.iSubItem <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.pszText,offset
VirtualAddress <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_INSERTCOLUMN,2,addr
lvc <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc lvc.iSubItem <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.pszText,offset
SizeOfRawData <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_INSERTCOLUMN,3,addr
lvc <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc lvc.iSubItem <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.pszText,offset RawOffset <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_INSERTCOLUMN,4,addr
lvc <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc lvc.iSubItem <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvc.pszText,offset
Characteristics <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_INSERTCOLUMN,5,addr
lvc <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov ax, NumberOfSections <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; movzx eax,ax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov edi,eax
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvi.imask,LVIF_TEXT <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov lvi.iItem,0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assume esi:ptr
IMAGE_SECTION_HEADER <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .while edi&gt;0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov
lvi.iSubItem,0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
RtlZeroMemory,addr buffer,9 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke
lstrcpyn,addr buffer,addr [esi].Name1,8 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,buffer <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov
lvi.pszText,eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_INSERTITEM,0,addr lvi
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
wsprintf,addr buffer,addr template,[esi].Misc.VirtualSize <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,buffer <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov
lvi.pszText,eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc lvi.iSubItem
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_SETITEM,0,addr lvi <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
wsprintf,addr buffer,addr template,[esi].VirtualAddress <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lea eax,buffer <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov
lvi.pszText,eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc lvi.iSubItem
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
SendDlgItemMessage,hDlg,IDC_SECTIONLIST,LVM_SETITEM,0,addr lvi <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -