鱼C论坛

 找回密码
 立即注册
查看: 2980|回复: 0

[技术交流] 新人报道,分享一段代码,请多关照

[复制链接]
发表于 2016-9-28 18:28:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

评分

参与人数 2鱼币 +10 收起 理由
爱学习520 + 5
小人 + 5 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 14:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表