自制的 win32asm 下的 DbgPrint

工作一直没有着落,手上的事情却都搁置不顾。心态每况愈下,无一丝慰籍。

无聊之余,想到以后写程序时或许会用到些代码。现在想出一点,打发时间。

YONSMDEBUGTRACE 时 甚感舒服,可惜ABOUT上只有C的调用代码,于是写段 WIN32ASM 的代码,以后改进。

code:

01          .386
02          .model flatstdcall
03          option casemap :none
04  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
05  ; Include 文件定义
06  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
07  include /masm32/include/windows.inc
08  include /masm32/include/kernel32.inc
09  include /masm32/include/user32.inc
10  include /masm32/include/masm32.inc
11  
12  includelib /masm32/lib/kernel32.lib
13  includelib /masm32/lib/user32.lib
14  includelib /masm32/lib/masm32.lib
15  include     /masm32/macros/macros.asm
16  include     /masm32/macros/strings.mac
17  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18  ; Equ 等值定义
19  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20  EbNetBuffer_s     struct
21  
22  next        dd    ?
23  char        dd    ?
24  buffer    dd    ?
25  alength    dd    ?
26  
27  EbNetBuffer_s     ends
28  
29      .data?
30  EbNetBuffer    EbNetBuffer_s         <?>
31  hInstance        dd    ?
32  szbuffer        db    1024 dup (?)
33  
34      .code
35  DbgPrint    proc uses ebx edi esi debugcommon:dword,debugvalue:dword
36          local @buffer[256]:BYTE
37          local @addr[64]:BYTE
38  
39  mov        eaxebp
40  add        eax, 4h
41  mov        eax, [eax]
42  sub        eax, 5h
43  invoke    wsprintf, addr @addr, $CTA0("addr:00%lXh  ||  "), eax
44  invoke    wsprintf, addr @buffer, debugcommon, debugvalue
45  invoke    lstrcat, addr @addraddr @buffer
46  invoke    OutputDebugString, addr @addr    
47  ret
48  DbgPrint    endp
49  
50  start:
51          invoke    GetModuleHandle,NULL
52          mov        hInstance,eax    
53          invoke    RtlZeroMemory, addr EbNetBuffer, sizeof EbNetBuffer    
54          mov        [EbNetBuffer.next],31323334h
55          mov        [EbNetBuffer.char], 'abcd'    
56          invoke    DbgPrint, $CTA0("values is :%s"), addr EbNetBuffer
57          invoke    ExitProcess,NULL
58  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59          end    start
60  

DbgPrint ,为了和 DebugPrint 有所区分,起了这个名字。相信以后会有用的,呵呵……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值