C:\Users\Oliver\Desktop\bin1.txt | C:\Users\Oliver\Desktop\bin2.txt | ||
---|---|---|---|
seg000 segment byte public 'CODE' use32 |
seg000 segment byte public 'CODE' use32 |
||
assume cs:seg000 |
assume cs:seg000 |
||
;org 1000000h |
;org 1000000h |
||
assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing |
assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing |
||
jmp short start |
jmp short start |
||
; --------------------------------------------------- |
; --------------------------------------------------- |
||
dd 0A3BFC2AFh |
dd 0A3BFC2AFh |
||
; --------------------------------------------------- |
; --------------------------------------------------- |
||
|
|
||
start: ; CODE XREF: seg000:01000000 18j |
start: ; CODE XREF: seg000:01000000 18j |
||
sub esp, 100h |
sub esp, 100h |
||
xor ecx, ecx |
xor ecx, ecx |
||
|
|
||
prefill_loop: ; CODE XREF: seg000:01000013 19j |
prefill_loop: ; CODE XREF: seg000:01000013 19j |
||
mov [esp+ecx], cl |
mov [esp+ecx], cl |
||
inc cl |
inc cl |
||
jnz short prefill_loop |
jnz short prefill_loop |
||
xor eax, eax |
xor eax, eax |
||
mov edx, 0DEADBEEFh |
mov edx, 0DEADBEEFh |
||
|
|
||
magicfill_loop: ; CODE XREF: seg000:01000032 19j |
magicfill_loop: ; CODE XREF: seg000:01000032 19j |
||
add al, [esp+ecx] |
add al, [esp+ecx] |
||
add al, dl |
add al, dl |
||
ror edx, 8 |
ror edx, 8 |
||
mov bl, [esp+ecx] |
mov bl, [esp+ecx] |
||
mov bh, [esp+eax] |
mov bh, [esp+eax] |
||
mov [esp+eax], bl |
mov [esp+eax], bl |
||
mov [esp+ecx], bh |
mov [esp+ecx], bh |
||
inc cl |
inc cl |
||
jnz short magicfill_loop |
jnz short magicfill_loop |
||
jmp call_func |
jmp call_func |
||
|
|
||
; =============== S U B R O U T I N E ======================================= |
; =============== S U B R O U T I N E ======================================= |
||
|
|
||
; Attributes: noreturn |
; Attributes: noreturn |
||
|
|
||
func proc near ; CODE XREF: seg000:01000097 19p |
func proc near ; CODE XREF: seg000:01000097 19p |
||
mov ebx, esp |
mov ebx, esp |
||
add ebx, 4 |
add ebx, 4 |
||
pop esp |
pop esp |
||
pop eax |
pop eax |
||
cmp eax, 'AAAA' |
cmp eax, 'AAAA' |
||
jnz short sysexit |
jnz short sysexit |
||
dec eax |
pop eax |
||
cmp eax, 'BBBB' |
cmp eax, 'BBBB' |
||
jnz short sysexit |
jnz short sysexit |
||
pop edx |
pop edx |
||
mov ecx, edx |
mov ecx, edx |
||
mov esi, esp |
mov esi, esp |
||
mov edi, ebx |
mov edi, ebx |
||
sub edi, ecx |
sub edi, ecx |
||
rep movsb |
rep movsb |
||
mov esi, ebx |
mov esi, ebx |
||
mov ecx, edx |
mov ecx, edx |
||
mov edi, ebx |
mov edi, ebx |
||
sub edi, ecx |
sub edi, ecx |
||
xor eax, eax |
xor eax, eax |
||
xor ebx, ebx |
xor ebx, ebx |
||
xor edx, edx |
xor edx, edx |
||
|
|
||
loop: ; CODE XREF: func+52 19j |
loop: ; CODE XREF: func+52 19j |
||
inc al |
inc al |
||
add bl, [esi+eax] |
add bl, [esi+eax] |
||
mov dl, [esi+eax] |
mov dl, [esi+eax] |
||
mov dh, [esi+ebx] |
mov dh, [esi+ebx] |
||
mov [esi+eax], dh |
mov [esi+eax], dh |
||
mov [esi+ebx], dl |
mov [ecx], dl |
||
add dl, dh |
add dl, dh |
||
xor dh, dh |
xor dh, dh |
||
mov bl, [esi+edx] |
mov bl, [esi+edx] |
||
mov dl, [edi] |
mov dl, [edi] |
||
xor dl, bl |
xor dl, bl |
||
mov [edi], dl |
mov [edi], dl |
||
inc edi |
inc edi |
||
dec ecx |
dec ecx |
||
jnz short loop |
jnz short loop |
||
|
|
||
sysexit: ; CODE XREF: func+F 18j func+17 18j |
sysexit: ; CODE XREF: func+F 18j func+17 18j |
||
xor ebx, ebx |
xor ebx, ebx |
||
mov eax, ebx |
mov eax, ebx |
||
inc al |
inc al |
||
int 80h |
int 80h |
||
func endp ; sp-analysis failed |
func endp ; sp-analysis failed |
||
|
|
||
; --------------------------------------------------- |
; --------------------------------------------------- |
||
|
|
||
call_func: ; CODE XREF: seg000:01000034 18j |
call_func: ; CODE XREF: seg000:01000034 18j |
||
nop |
nop |
||
nop |
nop |
||
call func |
call func |
||
; --------------------------------------------------- |
; --------------------------------------------------- |
||
end_marker dd 'AAAA' |
end_marker dd 'AAAA' |
||
seg000 ends |
seg000 ends |