Little Program
Little Program
call 0x44A770
push rbp
push rbx
push rcx
push rdx
push (rsi + rdi)
rsi = rdi
rdi = rdx
xor ebx, ebx
xor ecx, ecx
ebp = -1
call 0x44A560
0x44a594:(ebx = 0x80000000)
call r11
(eax = 1, ebx = 0xbfffffff)
0x44a56e:
rsi++
[rdi], dl
jmp 0x44a594
0x44A705:
pop rbx (=0x44A78C)
push 1, 0x40000C, rax, 0x2d295e, rcx, r15
r10 = 0x32
mmap(0x800000(addr), 0x2d295e(len), 7(prot,rwx), flags(0x4000c8), 0(fd), 0(offset))
(rax = 0x800000, other para not change(rcx=0x44a4f4))
edi = eax
if not failed : jmp 0x44A62B(error, exit)
esi = 0x400000
edx = edi - esi (0x400000)
jz 0x44A757(=0)
ebp + edx (0x44A4F5 + 0x400000)
[rsp + 8](r15) += edx (0x4a424 + 0x400000)
[rsp + 0x18](rcx) += edx (0x4000c8 + 0x400000)
(0x44A74C)
ecx = (0x4a78c)
ecx >> 3 (0x94f1)
cld (DF=0, up)
rep movsq ([edi] = [esi]) (0x400000 ~0x44a78c ==>(copy) 0x800000
(0x44A757)
edi = eax (0x800000)
rsi = rbx (0x44A78C)
push rax (0x800000)
edx = edi
lodsd (rax = [rsi]dword) (0x672)
push rax (return to)
(0x44A75F)
rcx = rsp
edi = dword [rsi] (0x56c)
lodsd (rax = [rsi]dword) (0x194908)
movzx r8d, al (0x8)
xchg rdi, rsi
call rbp (0x44a798, 0x56c)
pop rcx
retn
0x44A770:
pop rbp (=0x44A4F5)
rax = rbp - 9
r15d = [rax] (0x0004A4EC)
edx = 0xc8
rax - r15
r15d - edx
rcx = rax + rdx ==> (0x4000c8)
call 0x44A705
rdi = 0x7fffffffcee0
rsi:0x7fffffffcee0
rdi:0x7fffffffd6e0
0x568
dynamic: break *0x44a757
break *0x84a560
break *0x84A61A
set 0x84A61A = 0x59
0x44A516:
mov ebx = [rsi]
rsi + 4
adc ebx, ebx
mov dl, [rsi]
return
new:
0x44A560:(rax = 0x194908, rdx=0x84a788, rbp=-1, rsi = 0x44a798, rdi=0x84a788, r8=8,
r10=32, r11=346)
(other zero)
cld(DF=0, up);
r11 = 0x84a510
jmp 0x44A576
jmp 0x44A61A (main code)
0x44A56E:{
rsi++
[rdi] = dl
inc rdi
0x44A576:
mov dl = [rsi]
add ebx, ebx (1)
if Z = 0: jmp 0x44A586
ebx = [rsi]
rsi + 4
adc ebx, ebx
dl = [rsi]
(0x44A586):
if jb(C=1): jmp 0x44A56E
eax = rcx + 1
jmp 0x44A594
}=
0x44A594:
call r11
adc eax, eax
add ebx, ebx (2)
if Z = 0:jmp 0x44A5A7
ebx = [rsi]
rsi + 4
adc ebx, ebx
dl = [rsi]
0x44A5A7:
jnb 0x44A58D(C=0)
}
sub eax, 3
jb(C = 1) 0x44A5CB: (eax < 3)
eax << 8
edx = dl;(zx)
or eax, edx
rsi++
eax ^ -1(0xffffffff)
if Z=1: jmp 0x44A61A (goto main code)
sar eax, 1
rbp = eax(sxd)
jb 0x44A601 (must be)
jmp 0x44A5D9
}
0x445CB: {
add ebx, ebx (3)
if Z = 0: jmp 0x44A5D7
ebx = [rsi]
rsi + 4
adc ebx, ebx
0x44A5D7:
jb (C=1) 0x44A601
0x44A5D9: {
ecx++
add ebx, ebx (4)
if Z=0: jmp 44A5E7
ebx = [rsi]
rsi + 4
adc ebx, ebx
0x44A5E7:
jb 0x44A601(C=1)
0x44A5E9
adc ecx, ecx
add ebx, ebx (5)
if Z=1: jmp 0x44A5FA
ebx = [rsi]
rsi + 4
adc ebx, ebx
0x44A5FA:
jnb 0x44A5E9(C=0)
add ecx, 2
jmp 0x44A606
}
0x44A601: {
call r11
adc ecx, ecx
0x44A606:
cmp rbp, 0xfffffffffffffb00
adc ecx, 2 (care about sub is borrow flag)
call 0x44A522
jmp 0x44A576 ==> next loop
}
break *0x44a757
0x6c1000
(0x84a971)
break *0x84a50b (6)
0x4011b0
0x41b180
jmp [0x499c80]
0x44d700 syscall
0x4225a1
0x400df3:
0x401171:"I will malloc()..."
0x41a0f8:mmap(0x1000)