标签:c style class blog code java
printstring macro Var: REQ local info .code if DBGWIN_DEBUG_ON eq 1 pushad invoke szLen, addr Var if DBGWIN_EXT_INFO eq 1 info textequ @CatStr(< !(>, SFileName(), <!, >, %@Line, <!)>) ;push eax add eax, @SizeStr(&Var)+4+@SizeStr(%info) else add eax, @SizeStr(&Var)+4 endif invoke GlobalAlloc, GPTR, eax mov ebx, eax ;invoke FillMemory,ebx,sizeof(var),offset Var FillMem ebx, &Var invoke szTrim,ebx
invoke szLen,ebx mov ecx,eax dec ecx invoke szRight,ebx,addr sztextname,ecx ; invoke DebugPrint, ebx invoke GlobalFree, ebx popad endif EXITM ENDM _invoke MACRO funcname:REQ,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20 LOCAL pos,counter .data IFNDEF sz_removetext sz_removetext db 0 ENDIF IFNDEF funcname funcname dd 0 ENDIF .code counter=0 FOR arg,<p20,p19,p18,p17,p16,p15,p14,p13,p12,p11,p10,p9,p8,p7,p6,p5,p4,p3,p2,p1> IFNB <arg> counter=counter+4 pos=@InStr(1,arg,<ADDR >) OR @InStr(1,arg,<addr >) OR @InStr(1,arg,<Addr >) OR @InStr(1,arg,<ADDR >) OR @InStr(1,arg,<addr >) OR @InStr(1,arg,<Addr >) IF pos IF ((OPATTR(@SubStr(arg,%pos+5))) EQ 98) OR ((OPATTR(@SubStr(arg,%pos+5))) EQ 34) lea eax,@SubStr(<arg>,%pos+5) push eax ELSE push OFFSET @SubStr(<arg>,%pos+5) ENDIF ELSE push arg ENDIF ENDIF ENDM pushad xor eax,eax xor ebx,ebx xor ecx,ecx xor edx,edx printstring funcname popad ;PrintDec _dwuser32 ;PrintDec _dwgdi32 ;PrintDec dwcomdlg32 ;PrintDec dwComctl32 ;PrintDec dwoleaut32 ;PrintDec dwmsvcrt ;PrintDec dwshell32 ;PrintDec _dwkernel32 xor edx,edx .while edx<=28 invoke GetProcAddr, dword ptr[_dwuser32+edx] ,addr sztextname .if eax jmp @F .break .endif adc edx,4 .endw @@: .if eax mov funcname,eax call funcname ; ;PrintDec _dwuser32 .elseif eax .endif IF ((OPATTR(funcname)) AND 11100000000y) EQ 00100000000y ; Handle C functions IF counter NE 0 add esp,counter ; correct the stack ENDIF ENDIF
标签:c style class blog code java
原文地址:http://www.cnblogs.com/fuyunlong/p/3763610.html