일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LOB
- REDIS
- .net core 7
- Compiler
- cbpf
- rfc5508
- .nret core 배포
- Docker
- C언어
- wrefresh
- NAPT
- iptables
- 풀이
- ioctl
- DOCKER-USER
- packet flow
- BOF
- ncurses
- 취약점
- epoll_wait
- vtable
- wnourefresh
- architecture
- packet filter
- 어셈블리어
- edge trigger
- epoll
- level trigger
- mvwin
- doupdate
- Today
- Total
Tuuna Computer Science
재귀함수를 호출하면 스택에 함수프레이임 쌓인다. 용어 풀이 from 00401527 to 004013E2 :: 00401527를 호출하고 004013E2로 반환하라 즉, 밑에서 부터 위로 읽으면 함수를 호출할 때마다 스택프레임에 쌓이고 있다는 것을 확인할 수 있다. 무리한 재귀함수 호출은 ㄴㄴ합니다. ex) 밑에서 부터 해석하면 00401500함수를 호출하고 00401521주소로 반환한다. 그리고 또 다시 00401500주소를 호출하고 00401521주소로 반환한다.
PE 파일이 프로세스 가상 메모리에 로딩될 때 PE 헤더의 ImageBase 주소에 로딩된다. DLL파일의 경우 ImageBase에 이미 다른 DLL파일이 로딩되어 있다면 다른 비어 있는 주소 공간에 로딩된다. => 재배치 PE 재배치 작업의 기본 동작 원리 프로그램에서 하드코딩된 주소 위치를 찾는다. 값을 읽은 후 ImageBase만큼 뺀다. (VA -> RVA) 실제 로딩 주소를 더한다.(RVA -> VA) Relocation Table : 하드코딩 주소들의 OFFSET(위치)을 모아놓은 목록 PE 헤더의 Base Relocation Table 항목 따라가기 =================================== IMAGE_BASE_RELOCATION 구조체 VirtualAddress :: ..
[ UPack의 PE 헤더 분석 ] 1.헤더 겹쳐쓰기 :: MZ 헤더와 PE 헤더를 교묘하게 겹쳐쓰는 것. 정상적인 프로그램의 e_lfanew = MZ 헤더 크기(40) + DOS stub 크기(가변 : VC++의 경우 A0) = E0 BUT :: UPack에서는 10이다. -> UPack은 IMAGE_OPTIONAL_HEADER 148로 변경한다. ( COFF File Header -> SizeOfOptionalHeader ) e_lfanew : -> (e_lfanew 값이가리키는 자리에 NT header이 존재해야함) NT header의 옵셋을 표시(파일에 따라 가변적인 값을 가짐) 즉, 위의 말을 정리하자면 e_lfanew값이 가리키는 (VC++의 경우 E0)자리에 NT_HEADER이 있어야한다. ..