목록Linux (13)
둘둘리둘둘리둘둘리둘둘리둘둘리둘
#include int func(int a, int b, int c, int d, int e, int f){ return 1;} int main(){ int a=1; int b=2; int c=3,d=4,e=5,f=6,g; func(a,b,c,d,e,f); return 0;} 위 소스 디스어셈블링 결과 ..(gdb) disassemble mainDump of assembler code for function main: 0x00000000004004cb :push rbp 0x00000000004004cc :mov rbp,rsp 0x00000000004004cf :sub rsp,0x20 0x00000000004004d3 :mov DWORD PTR [rbp-0x4],0x1 0x00000000004004da :..
Guest Additions module이 Kali의 커널버전을 지원하지 않기 때문이라 함. virtualbox-guest-x11을 이용해 가상화를 지원하는 형태로 변경 후 설치해야한다고.. root@kali:/media/cdrom# apt-get install virtualbox-guest-x11 설치 후 cdrom에서 VBoxLinuxAdditions.run을 복사해 가져와서 실행하거나 "sh VBoxLinuxAdditions.run" 명령어로 실행하면 됨 그래도 안되면 아래 명령어 후 VBoxLinuxAdditions.run 실행"apt-get update && apt-get install -y linux-headers-$(uname -r)"
#include int main(){ printf("hello\n"); printf("rekcah\n"); return 0;} 위의 소스를 예로 들어 설명함. 먼저 간략하게 설명하자면 main에서 printf 호출시 printf@plt를 호출하고 plt가 got에서 함수의 주소를 찾고 그 함수가 없으면 _dl_runtime_resolve를 통해서 함수를 찾는다.(_dl_runtime_resolve에서 got에 함수 주소를 입력해 이후로는 함수를 쉽게 찾을 수 있도록 한다) 소스 코드를 보면 과 에서 호출하는 0x080482b0 이 printf임을 짐작할 수 있다. main+36부터 따라가 보자. _init을 disassamble하고 에서 호출한 부터 보면 ds:0x08049590으로 jump한다 그럼 d..