일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Docker
- level trigger
- wrefresh
- C언어
- 취약점
- cbpf
- 풀이
- ioctl
- DOCKER-USER
- mvwin
- REDIS
- ncurses
- packet flow
- doupdate
- epoll
- packet filter
- .nret core 배포
- wnourefresh
- LOB
- rfc5508
- epoll_wait
- Compiler
- 어셈블리어
- edge trigger
- .net core 7
- iptables
- vtable
- BOF
- architecture
- NAPT
- Today
- Total
Tuuna Computer Science
실행파일을 gdb로 바이너리 파일을 디버깅하고 디스어셈하면 각 함수 호출부분에 call 0x40fad0 와 call 0x4004a0 을 볼 수 있다. call 0x40fad0 이렇게만 적혀 있는 것은 정적링크로 컴파일 된 바이너리파일을 디스어셈하였을 때 볼 수 있는 현상이다. ( gcc -o (binary) (binary.c) -static : static옵션을 주면 정적링크로 컴파일 할 수 있다.) 그리고 call 0x4004a0 은 바이너리를 동적링크로 컴파일했을 때 볼 수 있는 현상이다. 지금부터 동적링크와 정적링크와의 차이점과 동적 링크결과 함수 뒤에 붙는 Plt, Got에 대해서 알아볼 것이다. 일단 정적링크와 동적링크에대해서 알아보기 위해서는 C 언어로 작성된 소스파일이 어떻게 컴파일과정을 거..
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112#include /*바둑판은 배열로 세팅해서 막대가 있는곳은 1로 한다.시작점을 두고 바둑판과 0(가로), 1(세로)에따라 바뀐다.가로와 세로를 조건문으로 두자 ! 배열은 0부터하므로 값을 설정해서 0부터 받게하자 */int w, h;int badook[100][100]; //배열만 선언, 입력받아서in..
인자전달의 기본방식은 값의 복사이다! 함수호출 시 전달되는 값은 매개변수에 복사가 된다. 가장 중요한건 '값의 복사'라는 것이다. 즉, 전달되는 인자와 매개변수는 별개다! int simple(int num) { } int main(void) { int age=17; simple(age); } 이 코드를 보았을 때 age와 num은 단지 값을 주고받을 뿐 더 이상의 관계가 아니라는 것이다. age = num이 절대 아니라는 것이다. 그냥 값만 전달 할 뿐... '복사'... 하지만 age = num이 아니라 했으니 age를 넘기는 것은 어떻게 하는 걸까 이는 포인터를 사용해야 한다. 즉 age하는 변수의 주소에 직접 접근해야 하기에 int simple(int* num) { } int main(void) {..