mirror of
https://github.com/yuzu-emu/unicorn
synced 2024-11-24 04:58:12 +00:00
52 lines
719 B
ArmAsm
52 lines
719 B
ArmAsm
|
.intel_syntax noprefix
|
||
|
|
||
|
.global _start
|
||
|
_start:
|
||
|
mov ebp, esp
|
||
|
sub ebp, 0x4000
|
||
|
mov edx, ebp
|
||
|
|
||
|
lea esi, [self_modifying]
|
||
|
mov edi, ebp
|
||
|
mov ecx, 0x2d
|
||
|
call memcpy
|
||
|
add ebp, 0x2d
|
||
|
xor ebx, ebx
|
||
|
call edx
|
||
|
|
||
|
mov eax, 1
|
||
|
int 0x80
|
||
|
|
||
|
memcpy:
|
||
|
cmp ecx, 0
|
||
|
je _end
|
||
|
dec ecx
|
||
|
mov al, byte ptr [esi+ecx]
|
||
|
mov byte ptr [edi+ecx], al
|
||
|
jmp memcpy
|
||
|
|
||
|
_end:
|
||
|
ret
|
||
|
|
||
|
self_modifying:
|
||
|
inc ebx
|
||
|
call $+5
|
||
|
pop esi
|
||
|
dec byte ptr [esi+11]
|
||
|
xor edx, edx
|
||
|
sub esi, 6
|
||
|
_loop_start:
|
||
|
cmp edx, 5
|
||
|
jz _loop_end
|
||
|
|
||
|
mov edi, ebp
|
||
|
mov ecx, 0x2d
|
||
|
lea eax, [memcpy]
|
||
|
call eax
|
||
|
inc edx
|
||
|
add ebp, 0x2d
|
||
|
mov byte ptr [ebp], 0xc3
|
||
|
jmp _loop_start
|
||
|
|
||
|
_loop_end:
|