선린 에뮬레이터 개발 프로젝트
> make test
gcc -c src/main.c -o src/main.o
gcc -c src/util.c -o src/util.o
gcc -c src/elf.c -o src/elf.o
gcc -c src/emul.c -o src/emul.o
gcc -c src/syscalls.c -o src/syscalls.o
gcc -c src/user_defined_hooks.c -o src/user_defined_hooks.o
gcc -o app.out ./src/main.o ./src/util.o ./src/elf.o ./src/emul.o ./src/syscalls.o ./src/user_defined_hooks.o -lunicorn -lpthread -lm -lelf -lcapstone
gcc -c tests/test.c -o tests/test.o
gcc tests/test.o -o test.out
./app.out ./test.out
[+] Loader path: /lib64/ld-linux-x86-64.so.2
[+] Entrypoint: 0x7ffff7fe3290
[+] Mapping Memory [0x7ffff7fc3000 ~ 0x7ffff7fc5000 (0x2000)] FileOffset=0x0 FLAGS=0x4
[+] Mapping Memory [0x7ffff7fc5000 ~ 0x7ffff7fef000 (0x2a000)] FileOffset=0x2000 FLAGS=0x5
[+] Mapping Memory [0x7ffff7fef000 ~ 0x7ffff7ffa000 (0xb000)] FileOffset=0x2c000 FLAGS=0x4
[+] Mapping Memory [0x7ffff7ffb000 ~ 0x7ffff7fff000 (0x4000)] FileOffset=0x37620 FLAGS=0x6
[+] Writing Memory [0x7ffff7fc3000 ~ 0x7ffff7fc4b50 (0x1b50)]
[+] Writing Memory [0x7ffff7fc5000 ~ 0x7ffff7fee315 (0x29315)]
[+] Writing Memory [0x7ffff7fef000 ~ 0x7ffff7ff9f34 (0xaf34)]
[+] Writing Memory [0x7ffff7ffb620 ~ 0x7ffff7ffe110 (0x2af0)]
[+] Entrypoint: 0x555555555060
[+] Mapping Memory [0x555555554000 ~ 0x555555555000 (0x1000)] FileOffset=0x0 FLAGS=0x4
[+] Mapping Memory [0x555555555000 ~ 0x555555556000 (0x1000)] FileOffset=0x1000 FLAGS=0x5
[+] Mapping Memory [0x555555556000 ~ 0x555555557000 (0x1000)] FileOffset=0x2000 FLAGS=0x4
[+] Mapping Memory [0x555555557000 ~ 0x555555559000 (0x2000)] FileOffset=0x2db8 FLAGS=0x6
[+] Writing Memory [0x555555554000 ~ 0x555555554628 (0x628)]
[+] Writing Memory [0x555555555000 ~ 0x555555555175 (0x175)]
[+] Writing Memory [0x555555556000 ~ 0x5555555560f4 (0xf4)]
[+] Writing Memory [0x555555557db8 ~ 0x555555558010 (0x258)]
[+] Mapping Stack [0x7ffffffde000 ~ 0x7ffffffee000 (0x10000)]
[+] rsp = 0x7ffffffede50
0x0000000000000001 0x00007ffffffedfb2
0x0000000000000000 0x0000000000000000
0x0000000000000033 0x00000000000006f0
0x0000000000000010 0x00000000078bfbfd
0x0000000000000006 0x0000000000001000
0x0000000000000011 0x0000000000000064
0x0000000000000003 0x0000555555554040
0x0000000000000004 0x0000000000000038
0x0000000000000005 0x000000000000000d
0x0000000000000007 0x00007ffff7fc3000
0x0000000000000008 0x0000000000000000
0x0000000000000009 0x0000555555555060
0x000000000000000b 0x0000000000000000
0x000000000000000c 0x0000000000000000
0x000000000000000d 0x0000000000000000
0x000000000000000e 0x0000000000000000
0x0000000000000017 0x0000000000000000
0x0000000000000019 0x00007ffffffedfbd
0x000000000000001f 0x00007ffffffedfcd
0x000000000000000f 0x00007ffffffedff1
0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000
0x747365742f2e0000 0x4141410074756f2e
0x4141414141414141 0x6f722f4141414141
0x736b726f572f746f 0x322e4e2f65636170
0x2f2e2f6c554d452d 0x74756f2e74736574
0x0034365f36387800 0x0000000000000000
[+] Running /root/Workspace/N.2-EMUl/./test.out
[+] emul: brk(0x0)
[+] emul: arch_prctl(0x3001, 0x7ffffffedc90)
[+] emul: sys_uname(0x7ffffffed870)
[-] emul: sys_access("/etc/ld.so.preload", 0x4) == 0xffffffffffffffff
[+] emul: sys_openat(0xffffff9c, "/etc/ld.so.cache", 0x80000, 0x0)
[+] emul: sys_newfstatat(0x3, "", 0x7ffffffecde0, 0x1000)
[+] emul: sys_mmap(0x0, 0x1115f, 0x1, 0x2, 0x3, 0x0) == 0x7ffff7fb1000
[+] emul: sys_close(0x3)
[+] emul: sys_openat(0xffffff9c, "/lib/x86_64-linux-gnu/libc.so.6", 0x80000, 0x0)
[+] emul: sys_read(0x4, 0x7ffffffed018, 0x340) == 0x340
[+] emul: sys_pread64(0x4, 0x7ffffffecc20, 0x310, 0x40) == 0x310
[+] emul: sys_pread64(0x4, 0x7ffffffecbe0, 0x30, 0x350) == 0x30
[+] emul: sys_pread64(0x4, 0x7ffffffecb90, 0x44, 0x380) == 0x44
[+] emul: sys_newfstatat(0x4, "", 0x7ffffffeceb0, 0x1000)
[+] emul: sys_pread64(0x4, 0x7ffffffecaf0, 0x310, 0x40) == 0x310
[+] emul: sys_mmap(0x0, 0x228e50, 0x1, 0x802, 0x4, 0x0) == 0x7ffff7d88000
[+] emul: sys_mprotect(0x7ffff7db0000, 0x1ee000, 0x0)
[+] emul: sys_mmap(0x7ffff7db0000, 0x195000, 0x5, 0x812, 0x4, 0x28000) == 0x7ffff7db0000
[+] emul: sys_mmap(0x7ffff7f45000, 0x58000, 0x1, 0x812, 0x4, 0x1bd000) == 0x7ffff7f45000
[+] emul: sys_mmap(0x7ffff7f9e000, 0x6000, 0x3, 0x812, 0x4, 0x215000) == 0x7ffff7f9e000
[+] emul: sys_mmap(0x7ffff7fa4000, 0xce50, 0x3, 0x32, 0xffffffff, 0x0) == 0x7ffff7fa4000
[+] emul: sys_close(0x4)
[+] emul: sys_mmap(0x0, 0x2000, 0x3, 0x22, 0xffffffff, 0x0) == 0x7ffff7d86000
[+] emul: arch_prctl(0x1002, 0x7ffff7d870c0)
[+] emul: sys_set_tid_address(0x7ffff7d87390)
[+] emul: sys_set_robust_list(0x7ffff7d873a0, 0x18)
[+] emul: sys_rseq(0x7ffff7d87a60, 0x20, 0x0)
[+] Hooked at 0x7ffff7fe688e
[+] RIP = 0x7ffff7fe6894
[+] Hooked at 0x7ffff7fe688e
[+] RIP = 0x7ffff7fe6894
[+] emul: sys_mprotect(0x7ffff7f9e000, 0x4000, 0x1)
[+] emul: sys_mprotect(0x555555557000, 0x1000, 0x1)
[+] emul: sys_mprotect(0x7ffff7ffb000, 0x2000, 0x1)
[+] emul: sys_prlimit64(0x0, 0x3, 0x0, 0x7ffffffed9f0)
[+] emul: UNIMPLEMENTED SYSCALL - syscall(rax=0xb, rdi=0x7ffff7fb1000, rsi=0x1115f, rdx=0x7ffff7e18c10)
[+] emul: sys_newfstatat(0x1, "", 0x7ffffffedbb0, 0x1000)
[+] emul: UNIMPLEMENTED SYSCALL - syscall(rax=0x13e, rdi=0x7ffff7fa94d8, rsi=0x8, rdx=0x1)
[+] emul: UNIMPLEMENTED SYSCALL - syscall(rax=0xe4, rdi=0x1, rsi=0x7ffffffedb40, rdx=0x1)
[+] emul: UNIMPLEMENTED SYSCALL - syscall(rax=0xe4, rdi=0x1, rsi=0x7ffffffedb40, rdx=0x1)
[+] emul: brk(0x0)
[+] emul: brk(0x55555557a000)
[+] emul: write(fd=0x1, buf=0x5555555592a0, count=0xd)
Hello World!
[+] emul: exit()
0.073835sec