⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parser.asm

📁 Cracker终结者——提供最优秀的软件保护技术
💻 ASM
字号:
%include "util.mac"
%include "icedump.inc"
%include "wiat.inc"
%include "common.inc"


global Parser
global Parser.error
global Parser.errorMsg
global Parser.return


extern sdata
extern SaveRegs
extern RestoreRegs
extern Parse_Bhrama
extern Parse_BreakR3
extern Parse_CDPlayer
extern Parse_Dump
extern Parse_FPU
extern Parse_Help
extern Parse_Imports
extern Parse_Kill
extern Parse_Load
extern Parse_MP3Player
extern Parse_Option
extern Parse_PageFlag
extern Parse_Pedump
extern Parse_Resume
extern Parse_ScreenDump
extern Parse_Suspend
extern Parse_SuspendX
extern Parse_Trace
extern Parse_TraceX
extern Parse_Tetris


bits 32


;-------------------------------------------------------------------------------
; this is the new parser that accepts the following syntax:
;
; BHRAMA <Bhrama window name>
; BREAKR3 <R0TCB>
; CD [<track>]
; DUMP <address> [<length> <file name>]
; FPU <FPU register number> <floating point value>
; IMPORTS <imagebase> <address>
; KILL <PID>
; LOAD <address> <length> <file name>
; MP3 [<track>]
; OPTION (Execute command for help)
; PAGEFLAG <address> pPrWsUcC
; PEDUMP <address> <entry RVA> <file name>
; RESUME <PID>|<TID>
; SCREENDUMP [<file>]
; SUSPEND <PID>|<TID>
; SUSPENDX <PID>|<TID>
; TETRIS [<speed>]
; TRACE [<R0TCB> [<EIP low> [<EIP high>]]]
; TRACEX <EIP low> [<EIP high>]
;-------------------------------------------------------------------------------

segment _LTEXT
Parser:
	pushad

	call	SaveRegs		; save the client registers

	mov	esi,[bUserCommand]
	inc	esi			; skip over leading '/' or whatever

	mov	ebx,Commands-8

@@
	add	ebx,byte 8
	mov	edi,[ebx]
	or	edi,edi
	jz	near Parse_Help

	call	.stricmp
	jnz	@B

	call	[pSkipNonWhiteSpace]	; skip over subcommand

	jmp	dword [ebx+4]

.errorMsg:
	mov	esi,edi
	call	[pPrintToCommandWindow]

.error:
	call	RestoreRegs		; restore the client registers

.return:
	popad
	retn


.stricmp:
	push	esi
	push	edi

@@
	lodsb
	xor	al,[edi]
	inc	edi
	and	al,~0x20
	jnz	@F

	cmp	byte [edi-1],0
	jnz	@B

@@
	pop	edi
	pop	esi
	retn


segment _LDATA
	align 4
Commands:
	dd .cmdBHRAMA,		Parse_Bhrama
	dd .cmdBREAKR3,		Parse_BreakR3
	dd .cmdCD,		Parse_CDPlayer
	dd .cmdDUMP,		Parse_Dump
	dd .cmdFPU,		Parse_FPU
	dd .cmdIMPORTS,         Parse_Imports
	dd .cmdKILL,		Parse_Kill
	dd .cmdLOAD,		Parse_Load
	dd .cmdMP3,		Parse_MP3Player
	dd .cmdOPTION,		Parse_Option
	dd .cmdPAGEFLAG,	Parse_PageFlag
	dd .cmdPEDUMP,		Parse_Pedump
	dd .cmdRESUME,		Parse_Resume
	dd .cmdSCREENDUMP,	Parse_ScreenDump
	dd .cmdSUSPEND,		Parse_Suspend
	dd .cmdSUSPENDX,	Parse_SuspendX
	dd .cmdTETRIS,		Parse_Tetris
	dd .cmdTRACE,		Parse_Trace
	dd .cmdTRACEX,		Parse_TraceX
	dd 0,0

.cmdBHRAMA:	db 'BHRAMA',0
.cmdBREAKR3:	db 'BREAKR3',0
.cmdCD:		db 'CD',0
.cmdDUMP:	db 'DUMP',0
.cmdFPU:	db 'FPU',0
.cmdIMPORTS:	db 'IMPORTS',0
.cmdKILL:	db 'KILL',0
.cmdLOAD:	db 'LOAD',0
.cmdMP3:	db 'MP3',0
.cmdOPTION:	db 'OPTION',0
.cmdPAGEFLAG:	db 'PAGEFLAG',0
.cmdPEDUMP:	db 'PEDUMP',0
.cmdRESUME:	db 'RESUME',0
.cmdSCREENDUMP:	db 'SCREENDUMP',0
.cmdSUSPEND:	db 'SUSPEND',0
.cmdSUSPENDX:	db 'SUSPENDX',0
.cmdTETRIS:	db 'TETRIS',0
.cmdTRACE:	db 'TRACE',0
.cmdTRACEX:	db 'TRACEX',0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -