本帖最后由 Tesla.Angela 于 2010-8-5 22:55 编辑
- .386
- .model flat, stdcall
- option casemap :none
- .data
- DllName db 'user32.dll',0
- FunName db 'MessageBoxA',0
- .CODE
- START:
- NoImport proc
- local hLib:DWORD
- local pMsg:DWORD
- ;hLib=LoadLibraryA("user32.dll")
- push offset DllName
- mov eax,7C801D7Bh
- call eax
- mov hLib,eax
- ;pMsg=GetProcAddress(hLib,"MessageBoxA")
- push offset FunName
- push hLib
- mov eax,7C80AE40h
- call eax
- mov pMsg,eax
- ;MessageBoxA(0,"MessageBoxA","user32.dll",0)
- push 0
- push offset DllName
- push offset FunName
- push 0
- mov eax,77D507EAh
- call eax
- ;ExitProcess(0)
- push 0
- mov eax,7C80C0F8h
- call eax
- NoImport endp
- end START
复制代码
不知道有没有不使用硬编码实现的办法?
这段代码编译出来的EXE大小为1.5KB。
如果注释掉NoImport proc到NoImport endp之间的代码也可以编译,编译出来的EXE大小为1KB,但是运行时出错。