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

📄 common.asm

📁 Cracker终结者——提供最优秀的软件保护技术
💻 ASM
📖 第 1 页 / 共 2 页
字号:
%include "util.mac"
%include "vxdn.inc"
%include "icedump.inc"


%ifndef MAKEDEP

extern sdata


		BITS 32


;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; global Definitions
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
;---- Functions ----
global CheckChar
global CharUpper
global CharLower
global ExtractNamePos
global AlignOffset
global ZeroPad
global Dword2Hex
global Byte2Hex
global Hex2Dec
global strcmp
global strlen
global strcopy
global ScanForIt


;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; data Definition.
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
SEGMENT _LDATA
HTable	  DB '0123456789ABCDEF',0


;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; Code Definition.
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北

SEGMENT _LTEXT

;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; Check Char
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北

;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
;
;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
CheckChar:
	push	ebp
	mov	ebp, esp
	push	edi
	push	esi
	push	ecx

	mov	esi,.EHS
	VMMCall	Install_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: CheckChar: failed to install exception handler"
	debug_end

@@
	mov	eax, [ebp+08h]
	test	eax, eax
	jz	.free_eh

	xor	ecx, ecx
	mov	edi, [ebp+0Ch]

.LoopChar:
.protect_start:
	cmp	[edi+ecx], al
.protect_end:

	jz	short .ReturnECX

	inc	ecx
	cmp	ecx, [ebp+10h]
	jnz	short .LoopChar

.ReturnECX:
	inc	ecx
	mov	eax, ecx
	jmp	short .free_eh

.EH:
	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: CheckChar: exception, EDI:ECX: #edi:#ecx"
	debug_end

	xor	eax,eax

.free_eh:
	mov	esi,.EHS
	cmp	dword [esi+EHS_Reserved],byte 0
	jz	@F

	VMMCall	Remove_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: CheckChar: failed to uninstall exception handler"
	debug_end

@@
	pop 	ecx
	pop	esi
	pop 	edi
	pop	ebp
	retn	0Ch


segment _LDATA
	align 4
.EHS:
istruc Exception_Handler_Struc
	at EHS_Reserved,	dd 0
	at EHS_Start_EIP,	dd CheckChar.protect_start
	at EHS_End_EIP,		dd CheckChar.protect_end
	at EHS_Handler,		dd CheckChar.EH
iend


segment _LTEXT

;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; CharLower.
; CharUpper.
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北

;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
;ebp+8 : String.
;
;eax= pos of filename
;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
CharLower:
	push	ebp
	mov	ebp, esp
	pushad

	mov	bl, 'a'-'A'
	mov	cl, 'A'
	mov	dl, 'Z'
	jmp	short CharCase

CharUpper:
	push	ebp
	mov	ebp, esp
	pushad

	mov	bl, 'A'-'a'
	mov	cl, 'a'
	mov	dl, 'z'

CharCase:	
	mov	esi,.EHS
	VMMCall	Install_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: CharCase: failed to install exception handler"
	debug_end

@@
	mov	esi, [ebp+08h]
	mov	edi, esi

.protect_start:
.LoopUp:
	lodsb
	test	al, al
	jz	.free_eh

	cmp	al, cl
	jl	.StosbIt

	cmp	al, dl
	jg	.StosbIt

	add     al, bl

.StosbIt:
	stosb
	jmp	short .LoopUp
.protect_end:

.EH:
	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: CharCase: exception, ESI: #esi, EDI: #edi"
	debug_end

.free_eh:
	mov	esi,.EHS
	cmp	dword [esi+EHS_Reserved],byte 0
	jz	@F

	VMMCall	Remove_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: CharCase: failed to uninstall exception handler"
	debug_end

@@
	popad
	pop	ebp
	retn	04h


segment _LDATA
	align 4
.EHS:
istruc Exception_Handler_Struc
	at EHS_Reserved,	dd 0
	at EHS_Start_EIP,	dd CharCase.protect_start
	at EHS_End_EIP,		dd CharCase.protect_end
	at EHS_Handler,		dd CharCase.EH
iend


;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; Find position of FileName from a full path.
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北

;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
;ebp+8 : Full path.
;
;eax= pos of filename
;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
ExtractNamePos:
	push	ebp
	mov	ebp, esp
	push	esi

	mov	esi,.EHS
	VMMCall	Install_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: ExtractNamePos: failed to install exception handler"
	debug_end

@@
	mov	esi, [ebp+08h]
	push	esi
	Call	strlen

.LoopFindTrail:
	dec	eax
	jl	.free_eh

.protect_start:
	cmp	byte [esi+eax], '\'
.protect_end:

	jnz	.LoopFindTrail
	jmp	short .free_eh

.EH:
	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: ExtractNamePos: exception, ESI:EAX: #esi#eax"
	debug_end

.free_eh:
	mov	esi,.EHS
	cmp	dword [esi+EHS_Reserved],byte 0
	jz	@F

	VMMCall	Remove_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: ExtractNamePos: failed to uninstall exception handler"
	debug_end

@@
	inc	eax

	pop	esi
	pop	ebp
	retn	04h


segment _LDATA
	align 4
.EHS:
istruc Exception_Handler_Struc
	at EHS_Reserved,	dd 0
	at EHS_Start_EIP,	dd ExtractNamePos.protect_start
	at EHS_End_EIP,		dd ExtractNamePos.protect_end
	at EHS_Handler,		dd ExtractNamePos.EH
iend


segment _LTEXT

;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; Align the Dword to the Alignment Value.
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北

;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
;ebp+8 : Value to Convert.
;ebp+c : Desired Alignment
;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
AlignOffset:
	push	ebp
	mov	ebp, esp
	push	ecx
	push	edx

	mov	eax, [ebp+08h]
	mov	ecx, [ebp+0Ch]
	cdq
	div	ecx

	test	edx, edx
	jz	.Aligned

	mul	ecx
	add	eax, ecx
	sub	eax, [ebp+08h]
	mov	edx, eax

.Aligned:
	mov	eax, [ebp+08h]
	add	eax, edx

	pop	edx
	pop	ecx
	pop	ebp
	retn	08h


;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; Set Zero in a range.
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
;ebp+8: Start
;ebp+C: End
;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
ZeroPad:
	push	ebp
	mov	ebp, esp
	push	edi
	push	esi
	push	ecx
	push	eax

	mov	esi,.EHS
	VMMCall	Install_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: ZeroPad: failed to install exception handler"
	debug_end

@@
	mov	edi, [ebp+08h]
	mov	ecx, [ebp+0Ch]
	sub	ecx, edi
	xor	eax, eax

.protect_start:
	rep	stosb
.protect_end:

	jmp	short .free_eh

.EH:
	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: ZeroPad: exception, EDI: #edi"
	debug_end

.free_eh:
	mov	esi,.EHS
	cmp	dword [esi+EHS_Reserved],byte 0
	jz	@F

	VMMCall	Remove_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: ZeroPad: failed to uninstall exception handler"
	debug_end

@@
	pop	eax
	pop	ecx
	pop	esi
	pop	edi
	pop	ebp
	retn	08h


segment _LDATA
	align 4
.EHS:
istruc Exception_Handler_Struc
	at EHS_Reserved,	dd 0
	at EHS_Start_EIP,	dd ZeroPad.protect_start
	at EHS_End_EIP,		dd ZeroPad.protect_end
	at EHS_Handler,		dd ZeroPad.EH
iend


segment _LTEXT

;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
; Convert a Dword to its Hex String.
;北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北

;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
;ebp+8 : Value to Convert.
;ebp+C : Buffer where to Store.
;鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍
Dword2Hex:
	push	ebp
	mov	ebp, esp
	push	edi
	push	esi
	push	ecx
	push	ebx

	mov	esi,.EHS
	VMMCall	Install_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: Dword2Hex: failed to install exception handler"
	debug_end

@@
	mov	ebx, [ebp+08h]
	mov	edi, [ebp+0Ch]

;	mov	ecx,4
	push	byte 4
	pop	ecx

.Convert_it:
	rol	ebx,8      ; rotate 8 bits
	movzx	eax,bl
	shr	al,4
	mov	al,[eax+HTable]

	movzx	esi,bl
	and	esi,byte 0Fh
	mov	ah,[esi+HTable]

.protect_start:
	stosw
.protect_end:

	dec	ecx
	jnz	.Convert_it
	jmp	short .free_eh

.EH:
	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: Dword2Hex: exception, EDI: #edi"
	debug_end

.free_eh:
	mov	esi,.EHS
	cmp	dword [esi+EHS_Reserved],byte 0
	jz	@F

	VMMCall	Remove_Exception_Handler
	jnc	@F

	debug_start sdata+DebugFlags, ICEDUMP_DEBUG_COMMON
	Trace_Out "ICEDUMP: Dword2Hex: failed to uninstall exception handler"
	debug_end

@@
	pop	ebx
	pop	ecx
	pop	esi
	pop	edi
	pop	ebp
	retn	08h


segment _LDATA
	align 4
.EHS:
istruc Exception_Handler_Struc
	at EHS_Reserved,	dd 0
	at EHS_Start_EIP,	dd Dword2Hex.protect_start
	at EHS_End_EIP,		dd Dword2Hex.protect_end
	at EHS_Handler,		dd Dword2Hex.EH
iend


segment _LTEXT

Byte2Hex:
	push	ebp
	mov	ebp, esp
	pushad

⌨️ 快捷键说明

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