일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발 환경 준비
- Msvcrt.dll
- vcruntime.dll
- Windows
- pcap packet
- 윈도우 커널
- Network Byte Order
- ucrtbase.dll
- 바이트 오더
- apphelp.dll
- Windows Kernel Driver
- packet capture
- C언어 패킷캡쳐
- 포너블
- IAT Hooking
- 윈도우 커널 디버깅
- pwnable
- 개발하기
- Windows Kernel Debug
- 윈도우 커널 드라이버
- vcruntime140.dll
- 시스템해킹
- Windows Kernel
- hacking
- pcap packet capture
- 네트워크 바이트 오더
- HackCTF
- 해킹
- windows kernel debugging
- arudino
- Today
- Total
목록Reversing (24)
미친해커
LD_PRELOADLD_PRELOAD는 Linux 운영체제의 환경 변수이다. LD_PRELOAD에는 Linux 운영체제의 공유 라이브러리(Shared Library) 파일이 설정되고 설정된 공유 라이브러리들을 모든 공유 라이브러리들보다 먼저 프로그램에 로드한다. Linux 운영체제의 응용 프로그램은 라이브러리가 로드된 순서대로 사용하려는 함수가 존재하는지 확인한다. 이때 LD_PRELOAD로 인해 먼저 로드된 라이브러리에 사용하려는 함수가 존재한다면 LD_PRELOAD의 라이브러리의 함수 주소를 가져온다. 이러한 원리를 이용한 방법이 LD_PRELOAD를 이용한 후킹 기법이다,*공유 라이브러리(Shared Libary) : Linux 운영체제의 공유 라이브러리로 확장자는 주로 .so 이며 Windows ..
이번 포스팅에서는 EAT에서 함수의 주소를 구하는 원리와 EAT 후킹 방법에 대해 설명하려고 한다. EAT는 IAT와 다르게 오프셋이 저장되기 때문에 x86이라면 모를까 x64 환경에서는 100% 성공한다고 장담할 수는 없다. 하지만 해당 블로그는 따로 명시되어 있지 않다면 Windows x64를 기준으로 작성하기 때문에 x64 환경에서 EAT 후킹 방법에 대해서 설명하려고 한다. How to do EAT hooking ways? EAT에서 사용하는 오프셋은 최대 4바이트로 Windows x64는 8바이트 주소를 사용하기 때문에 해당 DLL의 ImageBase로부터 4바이트 이상의 주소로 이동하도록 후킹할 수는 없다. 위에서 설명했지만 주소가 4바이트를 넘지 않는다면 오프셋만 덮어씌워서 후킹이 가능하다...
[Reversing] EAT Hooking Step 0 EAT Hooking EAT(Export Address Table) Hooking 이란 EAT의 API 주소를 조작하여 후킹하는 기법을 말한다. EAT에는 라이브러리가 외부로 Export 하는 함수명 또는 변수명과 주소가 기록되어 있다. 응용 프로그램.. crazyhacker.tistory.com 이전 포스팅에서 EAT 구조에 대해서 간단히 배웠었다. 이번 포스팅에서는 C언어를 활용해 실제 EAT에 등록되어 있는 함수들의 이름과 주소를 불러오는 프로그램을 만들어볼 예정이다. Get Library ImageBase EAT 주소를 구하기 위해서는 IMAGE_DOS_HEADER(Dos Header)를 구해야 한다. Dos Header의 주소는 해당 라이브..
EAT Hooking EAT(Export Address Table) Hooking 이란 EAT의 API 주소를 조작하여 후킹하는 기법을 말한다. EAT에는 라이브러리가 외부로 Export 하는 함수명 또는 변수명과 주소가 기록되어 있다. 응용 프로그램 또는 다른 라이브러리가 GetProcAddress를 사용하여 라이브러리가 Export 하는 함수 또는 변수의 주소를 가져온다. 이때 GetProcAddress API는 이 테이블을 참조하여 주소를 구한다. EAT Hooking은 이 원리를 이용한 후킹 기법이다. EAT Structure EAT 구조는 아래와 같다. typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; DWORD TimeDateSt..
How to patch the top 12 bytes of the API 이제 후킹하고 싶은 API의 상위 12 바이트를 패치하는 것만 남았다. 기본적으로 DLL의 함수들은 .text 섹션에 존재한다. 해당 섹션의 메모리 보호 옵션은 보통 ER--- 로 쓰기 권한이 빠져있다. 그렇기 때문에 먼저 쓰기 권한을 부여해야만 한다. Windows API 중 특정 영역의 메모리 보호 옵션을 수정하는 함수는 VirtualProtect 함수가 있다. VirtualProtectEx function (memoryapi.h) - Win32 apps Changes the protection on a region of committed pages in the virtual address space of a specified ..
[Reversing] Trampoline(Inline) Hooking x86 Step 1 [Reversing] Trampoline(Inline) Hooking x86 Step 0 Trampoline Hooking Trampoline Hooking 이란 타겟 API의 상위 n바이트를 jmp 어셈블리로 패치하여 후킹하는 기법을 말한다. Trampoline Hooking은 x86과 x64.. crazyhacker.tistory.com 사실 Trampoline Hooking x64 Step 1은 존재하지 않는다. 기존의 Trampoline Hooking x86 Step 1의 내용과 같기 때문에 위 포스팅을 보고 진행하되 64비트 컴파일러를 사용하길 바란다. 그럼 Trampoline Hooking x64 Step..