|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这段代码的作用就是以MessageBox 的方式显示一个 DWORD 的16进制值。
供调试用的。
.386
.MODEL FLAT
INCLUDE WINDOWS.INC
INCLUDELIB IMPORT32.LIB
EXTRN ExitProcess:PROC
EXTRN MessageBoxA:PROC
EXTRN LoadLibraryA:PROC
EXTRN GetProcAddress:PROC
.Data
user32 DB "User32.Dll",0
szMessageBoxA DB "MessageBoxA",0
ddMessageBoxA DD 0
.Code
_Start:
PUSH OFFSET user32
CALL LoadLibraryA
PUSH OFFSET szMessageBoxA
PUSH EAX
CALL GetProcAddress
PUSH EAX
PUSH 012345678H
CALL _ShowDWORD
PUSH 0
CALL ExitProcess
;***********************************************************
; _ShowDWORD PROC stdcall,dd2Show:DWORD,addrOfMBA:DWORD
; 功能: 用MessageBox的方式显示一个双字的16进制值
; 参数说明:
; dd2Show: 要显示的双字
; addrOfMBA: API MessageBoxA 的地址
; 调用方式:
; PUSH addrOfMBA
; PUSH dd2Show
; CALL _ShowDWORD
;***********************************************************
_ShowDWORD PROC
PUSH EBP
MOV EBP,ESP
SUB ESP,12
PUSH EAX
PUSH ECX
PUSH EDI
PUSHF
STD
MOV EDI,EBP
DEC EDI
MOV AL,0
STOSB
MOV AL,'H'
STOSB
MOV EAX,DWORD PTR [EBP+8]
MOV ECX,8
_Hex2Ascii:
PUSH EAX
AND AL,0FH
ADD AL,030H
CMP AL,039H
JLE _IsNumber
ADD AL,7
_IsNumber:
STOSB
POP EAX
SHR EAX,4
LOOP _Hex2Ascii
MOV AL,'X'
STOSB
MOV AL,'0'
STOSB
INC EDI
CLD
PUSH 0
PUSH 0
PUSH EDI
PUSH 0
CALL DWORD PTR [EBP + 12]
;如果不是在壳之类的代码中,这里可以改成 CALL MessageBoxA
POPF
POP EDI
POP ECX
POP EAX
ADD ESP,12
MOV ESP,EBP
POP EBP
RET 8
_ShowDWORD ENDP
End _Start |
评分
-
查看全部评分
|