FormatCode Code Formatter is based on serveral powerful syntax parser engines so
you can exactly control the appearance of your source code. Here is the code formatting demo of
FormatCode 80x86 Assembly / x86 Asm Code Formatter to prove the ability
of code formatting functions of FormatCode:
YES EQU 1
NO EQU 0
SET_BP_CODE EQU 1
CLEAR_BP_CODE EQU 2
Enter_OP_CODE EQU 3
.486p
.xlist
MASM=1
include vmm.inc
include vwin32.inc
include shell.inc
include ifsmgr.inc
include ifs.inc
.list
VXD_Icode_Seg
BeginProc TRACKIT_Device_Init
mov eax, 30h
mov esi, OFFSET32 Hookint30
VMMCall Hook_VMM_Fault
mov eax, 30h
mov esi, OFFSET32 Hookint30
VMMCall Hook_PM_Fault
clc
ret
EndProc TRACKIT_Device_Init
VXD_Icode_Ends
VXD_Locked_Code_Seg
Declare_Virtual_Device TRACKIT,0,0,TRACKIT_Control,Undefined_Device_ID, \
Undefined_Init_Order,,
BeginProc TRACKIT_Control
Control_Dispatch SYS_DYNAMIC_DEVICE_INIT, TRACKIT_Device_Init
Control_Dispatch SYS_DYNAMIC_DEVICE_EXIT, TRACKIT_Device_Exit
Control_Dispatch W32_DEVICEIOCONTROL, TRACKIT_ioctl
clc
ret
TRACKIT_Control ENDP
BeginProc TRACKIT_ioctl
mov ecx,[esi].dwIoControlCode
cmp ecx,SET_BP_CODE
jz Set_bpoint
cmp ecx,CLEAR_BP_CODE
jz Clear_bpoint
cmp ecx,Enter_OP_CODE
jz Enter_OP
xor eax, eax
clc
ret
EndProc TRACKIT_ioctl
BeginProc Set_bpoint
pushad
mov eax,[esi].lpvInBuffer
mov eax,[eax]
mov bpoint_addr1,eax
mov bx,30cdh
xchg bx,[eax]
mov hook_api1_code,bx
mov eax,[esi].lpvInBuffer
mov eax,[eax+4]
mov bpoint_addr2,eax
mov bx,30cdh
xchg bx,[eax]
mov hook_api2_code,bx
mov eax,[esi].lpvInBuffer
mov eax,[eax+8]
mov bpoint_addr3,eax
mov bx,30cdh
xchg bx,[eax]
mov hook_api3_code,bx
popad
xor eax, eax
clc
ret
EndProc Set_bpoint
BeginProc Clear_bpoint
pushad
mov eax,bpoint_addr1
mov bx,hook_api1_code
mov [eax],bx
mov eax,bpoint_addr2
mov bx,hook_api2_code
mov [eax],bx
mov eax,bpoint_addr3
mov bx,hook_api3_code
mov [eax],bx
popad
xor eax, eax
clc
ret
EndProc Clear_bpoint
BeginProc Enter_OP
pushad
mov eax, [esi].lpvOutBuffer
mov ebx, enter_eip
mov [eax],ebx
mov [esi].cbOutBuffer,4
popad
xor eax, eax
clc
ret
EndProc Enter_OP
BeginProc TRACKIT_Device_Exit
mov eax, 30h
mov esi, OFFSET32 Hookint30
VMMCall UnHook_VMM_Fault
mov eax, 30h
mov esi, OFFSET32 Hookint30
VMMCall UnHook_PM_Fault
clc
ret
EndProc TRACKIT_Device_Exit
hook_api1_code dw 0
hook_api2_code dw 0
hook_api3_code dw 0
call_ret_code dw 0
bpoint_addr1 dd 0
bpoint_addr2 dd 0
bpoint_addr3 dd 0
call_inapi db NO
enter_eip dd 0h
BeginProc Hookint30
.if call_inapi==NO
pushad
mov esi,[ebp.Client_EIP]
sub esi,2
mov [ebp.Client_EIP],esi
mov esi,[ebp.Client_ESP]
mov esi,[esi]
mov bx,30cdh
xchg bx,[esi]
mov call_ret_code,bx
mov eax,bpoint_addr1
mov bx,hook_api1_code
mov [eax],bx
mov eax,bpoint_addr2
mov bx,hook_api2_code
mov [eax],bx
mov eax,bpoint_addr3
mov bx,hook_api3_code
mov [eax],bx
mov call_inapi,YES
popad
clc
ret
.else
pushad
mov esi,[ebp.Client_EIP]
sub esi,2
mov [ebp.Client_EIP],esi
mov bx,call_ret_code
mov [esi],bx
mov eax,[esi-27h]
.if eax==626610ebh
mov enter_eip,esi
sub enter_eip,27h
.endif
mov eax,[esi-35h]
.if eax==0a302e0c1h
mov enter_eip,esi
sub enter_eip,35h
sub enter_eip,5h
.endif
mov eax,[esi-29h]
.if eax==0a302e0c1h
mov enter_eip,esi
sub enter_eip,29h
sub enter_eip,5h
.endif
mov eax,[esi-5Dh]
.if eax==0a302e0c1h
mov enter_eip,esi
sub enter_eip,5Dh
sub enter_eip,5h
.endif
mov eax,[esi-0fh]
and eax,00ffffffh
.if eax==00e80a6ah
mov enter_eip,esi
sub enter_eip,0fh
.endif
mov eax,[esi-8]
cmp eax,0e8006a50h
jnz DELPHI1_END
mov ax,[esi-0ah]
.if ah==0c3h || al==0c3h
mov ebx,[ebp.Client_ESP]
mov ebx,[ebx+4]
mov esi,0ah
sub ebx,esi
.while esi !=30h
mov eax,[ebx]
.if eax==83ec8b55h || eax==0b9ec8b55h
mov enter_eip,ebx
.break
.endif
inc esi
dec ebx
.endw
.endif
DELPHI1_END:
mov eax,[esi-0Fh]
cmp eax,0e800408dh
jnz DELPHI2_END
mov ax,[esi-11h]
.if ah==0c3h || al==0c3h
mov ebx,[ebp.Client_ESP]
mov ebx,[ebx]
mov esi,0ah
sub ebx,esi
.while esi !=30h
mov eax,[ebx]
.if eax==83ec8b55h
mov enter_eip,ebx
.break
.endif
inc esi
dec ebx
.endw
.endif
DELPHI2_END:
mov ax,[esi]
.if ax==0f08bh
mov eax,[esi-0dh]
.if eax==83ec8b55h
mov enter_eip,esi
sub enter_eip,0dh
.endif
.endif
mov ax,[esi]
.if ax==0f08bh
mov eax,[esi-2ch]
.if eax==6aec8b55h
mov enter_eip,esi
sub enter_eip,2ch
.endif
.endif
mov eax,[esi]
.if eax==0d48ad233h
mov eax,[esi-2ch]
.if eax==6aec8b55h
mov enter_eip,esi
sub enter_eip,2ch
.endif
.endif
mov al,[esi]
.if al==0a3h
mov eax,[esi-26h]
.if eax==6aec8b55h
mov enter_eip,esi
sub enter_eip,26h
sub enter_eip,6h
.endif
.endif
mov ax,[esi]
.if ax==0e850h
mov eax,[esi-150h]
.if eax==6aec8b55h
mov enter_eip,esi
sub enter_eip,150h
.endif
.endif
mov ax,[esi]
.if ax==0e850h
mov eax,[esi-12eh]
.if eax==6aec8b55h
mov enter_eip,esi
sub enter_eip,12eh
.endif
.endif
mov eax,bpoint_addr1
mov bx,30cdh
xchg bx,[eax]
mov hook_api1_code,bx
mov eax,bpoint_addr2
mov bx,30cdh
xchg bx,[eax]
mov hook_api2_code,bx
mov eax,bpoint_addr3
mov bx,30cdh
xchg bx,[eax]
mov hook_api3_code,bx
mov call_inapi,NO
popad
clc
ret
.endif
EndProc Hookint30
VXD_LOCKED_CODE_ENDS
end
YES equ 1
NO equ 0
SET_BP_CODE equ 1
CLEAR_BP_CODE equ 2
Enter_OP_CODE equ 3
.486p
.xlist
MASM =1
include vmm.inc
include vwin32.inc
include shell.inc
include ifsmgr.inc
include ifs.inc
.list
VXD_Icode_Seg
BeginProc TRACKIT_Device_Init
mov EAX, 30h
mov ESI, OFFSET32 Hookint30
VMMCall Hook_VMM_Fault
mov EAX, 30h
mov ESI, OFFSET32 Hookint30
VMMCall Hook_PM_Fault
clc
ret
EndProc TRACKIT_Device_Init
VXD_Icode_Ends
VXD_Locked_Code_Seg
Declare_Virtual_Device TRACKIT, 0, 0, TRACKIT_Control, Undefined_Device_ID, \
Undefined_Init_Order , ,
BeginProc TRACKIT_Control
Control_Dispatch SYS_DYNAMIC_DEVICE_INIT, TRACKIT_Device_Init
Control_Dispatch SYS_DYNAMIC_DEVICE_EXIT, TRACKIT_Device_Exit
Control_Dispatch W32_DEVICEIOCONTROL, TRACKIT_ioctl
clc
ret
TRACKIT_Control endp
BeginProc TRACKIT_ioctl
mov ECX, [ESI].dwIoControlCode
cmp ECX, SET_BP_CODE
jz Set_bpoint
cmp ECX, CLEAR_BP_CODE
jz Clear_bpoint
cmp ECX, Enter_OP_CODE
jz Enter_OP
xor EAX, EAX
clc
ret
EndProc TRACKIT_ioctl
BeginProc Set_bpoint
pushad
mov EAX, [ESI].lpvInBuffer
mov EAX, [EAX]
mov bpoint_addr1, EAX
mov BX, 30cdh
xchg BX, [EAX]
mov hook_api1_code, BX
mov EAX, [ESI].lpvInBuffer
mov EAX, [EAX+4]
mov bpoint_addr2, EAX
mov BX, 30cdh
xchg BX, [EAX]
mov hook_api2_code, BX
mov EAX, [ESI].lpvInBuffer
mov EAX, [EAX+8]
mov bpoint_addr3, EAX
mov BX, 30cdh
xchg BX, [EAX]
mov hook_api3_code, BX
popad
xor EAX, EAX
clc
ret
EndProc Set_bpoint
BeginProc Clear_bpoint
pushad
mov EAX, bpoint_addr1
mov BX, hook_api1_code
mov [EAX], BX
mov EAX, bpoint_addr2
mov BX, hook_api2_code
mov [EAX], BX
mov EAX, bpoint_addr3
mov BX, hook_api3_code
mov [EAX], BX
popad
xor EAX, EAX
clc
ret
EndProc Clear_bpoint
BeginProc Enter_OP
pushad
mov EAX, [ESI].lpvOutBuffer
mov EBX, enter_eip
mov [EAX], EBX
mov [ESI].cbOutBuffer, 4
popad
xor EAX, EAX
clc
ret
EndProc Enter_OP
BeginProc TRACKIT_Device_Exit
mov EAX, 30h
mov ESI, OFFSET32 Hookint30
VMMCall UnHook_VMM_Fault
mov EAX, 30h
mov ESI, OFFSET32 Hookint30
VMMCall UnHook_PM_Fault
clc
ret
EndProc TRACKIT_Device_Exit
hook_api1_code dw 0
hook_api2_code dw 0
hook_api3_code dw 0
call_ret_code dw 0
bpoint_addr1 dd 0
bpoint_addr2 dd 0
bpoint_addr3 dd 0
call_inapi db NO
enter_eip dd 0h
BeginProc Hookint30
.if call_inapi==NO
pushad
mov ESI, [EBP.Client_EIP]
sub ESI, 2
mov [EBP.Client_EIP], ESI
mov ESI, [EBP.Client_ESP]
mov ESI, [ESI]
mov BX, 30cdh
xchg BX, [ESI]
mov call_ret_code, BX
mov EAX, bpoint_addr1
mov BX, hook_api1_code
mov [EAX], BX
mov EAX, bpoint_addr2
mov BX, hook_api2_code
mov [EAX], BX
mov EAX, bpoint_addr3
mov BX, hook_api3_code
mov [EAX], BX
mov call_inapi, YES
popad
clc
ret
.else
pushad
mov ESI, [EBP.Client_EIP]
sub ESI, 2
mov [EBP.Client_EIP], ESI
mov BX, call_ret_code
mov [ESI], BX
mov EAX, [ESI-27h]
.if EAX==626610ebh
mov enter_eip, ESI
sub enter_eip, 27h
.endif
mov EAX, [ESI-35h]
.if EAX==0a302e0c1h
mov enter_eip, ESI
sub enter_eip, 35h
sub enter_eip, 5h
.endif
mov EAX, [ESI-29h]
.if EAX==0a302e0c1h
mov enter_eip, ESI
sub enter_eip, 29h
sub enter_eip, 5h
.endif
mov EAX, [ESI-5Dh]
.if EAX==0a302e0c1h
mov enter_eip, ESI
sub enter_eip, 5Dh
sub enter_eip, 5h
.endif
mov EAX, [ESI-0fh]
and EAX, 00ffffffh
.if EAX==00e80a6ah
mov enter_eip, ESI
sub enter_eip, 0fh
.endif
mov EAX, [ESI-8]
cmp EAX, 0e8006a50h
jnz DELPHI1_END
mov AX, [ESI-0ah]
.if AH==0c3h || AL==0c3h
mov EBX, [EBP.Client_ESP]
mov EBX, [EBX+4]
mov ESI, 0ah
sub EBX, ESI
.while ESI !=30h
mov EAX, [EBX]
.if EAX==83ec8b55h || EAX==0b9ec8b55h
mov enter_eip, EBX
.break
.endif
inc ESI
dec EBX
.endw
.endif
DELPHI1_END:
mov EAX, [ESI-0Fh]
cmp EAX, 0e800408dh
jnz DELPHI2_END
mov AX, [ESI-11h]
.if AH==0c3h || AL==0c3h
mov EBX, [EBP.Client_ESP]
mov EBX, [EBX]
mov ESI, 0ah
sub EBX, ESI
.while ESI !=30h
mov EAX, [EBX]
.if EAX==83ec8b55h
mov enter_eip, EBX
.break
.endif
inc ESI
dec EBX
.endw
.endif
DELPHI2_END:
mov AX, [ESI]
.if AX==0f08bh
mov EAX, [ESI-0dh]
.if EAX==83ec8b55h
mov enter_eip, ESI
sub enter_eip, 0dh
.endif
.endif
mov AX, [ESI]
.if AX==0f08bh
mov EAX, [ESI-2ch]
.if EAX==6aec8b55h
mov enter_eip, ESI
sub enter_eip, 2ch
.endif
.endif
mov EAX, [ESI]
.if EAX==0d48ad233h
mov EAX, [ESI-2ch]
.if EAX==6aec8b55h
mov enter_eip, ESI
sub enter_eip, 2ch
.endif
.endif
mov AL, [ESI]
.if AL==0a3h
mov EAX, [ESI-26h]
.if EAX==6aec8b55h
mov enter_eip, ESI
sub enter_eip, 26h
sub enter_eip, 6h
.endif
.endif
mov AX, [ESI]
.if AX==0e850h
mov EAX, [ESI-150h]
.if EAX==6aec8b55h
mov enter_eip, ESI
sub enter_eip, 150h
.endif
.endif
mov AX, [ESI]
.if AX==0e850h
mov EAX, [ESI-12eh]
.if EAX==6aec8b55h
mov enter_eip, ESI
sub enter_eip, 12eh
.endif
.endif
mov EAX, bpoint_addr1
mov BX, 30cdh
xchg BX, [EAX]
mov hook_api1_code, BX
mov EAX, bpoint_addr2
mov BX, 30cdh
xchg BX, [EAX]
mov hook_api2_code, BX
mov EAX, bpoint_addr3
mov BX, 30cdh
xchg BX, [EAX]
mov hook_api3_code, BX
mov call_inapi, NO
popad
clc
ret
.endif
EndProc Hookint30
VXD_LOCKED_CODE_ENDS
end
Click here to preview the 80x86 Assembly Code Formatting Demo 1.
With FormatCode 80x86 Assembly Code Formatters, you can format any foreign x86 Asm source code to meet your preferred coding style or any common code convention in several seconds!
|