일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- apphelp.dll
- pwnable
- 시스템해킹
- 개발 환경 준비
- Windows Kernel Driver
- Network Byte Order
- Windows
- IAT Hooking
- Msvcrt.dll
- vcruntime.dll
- arudino
- Windows Kernel Debug
- 윈도우 커널
- Windows Kernel
- 바이트 오더
- C언어 패킷캡쳐
- 윈도우 커널 드라이버
- 포너블
- 윈도우 커널 디버깅
- pcap packet capture
- hacking
- 네트워크 바이트 오더
- pcap packet
- 해킹
- vcruntime140.dll
- 개발하기
- ucrtbase.dll
- windows kernel debugging
- packet capture
- HackCTF
- Today
- Total
목록Reversing (24)
미친해커
해당 글을 읽기 전에 리버싱 또는 후킹에 대한 기본적이 지식이 없으신 분들이라면 아래 글을 모두 숙지 후에 와주세요. [Reversing] Trampoline(Inline) Hooking x86 Step 0 Trampoline Hooking Trampoline Hooking 이란 타겟 API의 상위 n바이트를 jmp 어셈블리로 패치하여 후킹하는 기법을 말한다. Trampoline Hooking은 x86과 x64에서의 기술 구현 방법이 미세하게 다르다. 그렇기 때.. crazyhacker.tistory.com Trampoline Hooking Trampoline Hooking 이란 타겟 API의 상위 n바이트를 jmp 어셈블리로 패치하여 후킹하는 기법을 말한다. Trampoline Hooking은 x86과..
How to patch the top 5 bytes of the API 이제 후킹하고 싶은 API의 상위 5 바이트를 패치하는 것만 남았다. 기본적으로 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 pr..
[Reversing] Trampoline(Inline) Hooking x86 Step 0 Trampoline Hooking Trampoline Hooking 이란 타겟 API의 상위 n바이트를 jmp 어셈블리로 패치하여 후킹하는 기법을 말한다. Trampoline Hooking은 x86과 x64에서의 기술 구현 방법이 미세하게 다르다. 그렇기 때.. crazyhacker.tistory.com 저번 포스팅에서 간단히 Trampoline Hooking의 원리에 대해 공부했다. 이번 포스팅부터는 본격적으로 후킹을 하기 위해 사용할 함수들을 알아볼 생각이다. How to get MessageBoxA address #include #include int main(int argc, char *argv[]) { PV..
Trampoline Hooking Trampoline Hooking 이란 타겟 API의 상위 n바이트를 jmp 어셈블리로 패치하여 후킹하는 기법을 말한다. Trampoline Hooking은 x86과 x64에서의 기술 구현 방법이 미세하게 다르다. 그렇기 때문에 위 설명에서 n바이트라고 하였다. How to Trampoline Hooking from x86 system x86 시스템에서의 후킹 방법은 다음과 같다. 타겟 API의 상위 5바이트를 jmp 어셈블리로 패치하여 후킹한다. 여기서 5바이트인 이유는 x86 시스템은 주소체계가 4바이트이기 때문에 1바이트는 opcode 나머지 4바이트는 점프할 주소이다. (4바이트 jmp 어셈블리의 opcode는 0xE9 이다) 그렇다면 만약 우리가 점프하고 싶은 ..
트램펄린(인라인) 후킹이란? 트램펄린 후킹이란 이름처럼 점프(뛴다)라는 이름에 걸맞은 후킹 방법이다. 후킹 할 API 함수의 상위 5 Byte를 jmp 0x00000000 형태로 패치하여 해당 함수가 호출되었을 때 EIP(PC) 레지스터가 다른 함수의 주소로 변경되어 해당 함수로 점프하여 제어권을 가로채는 기술이다. 필자가 트램펄린 후킹을 공부했을 때(2019년도)에는 트램펄린 후킹 기술에 대해 검색을 하여도 x86 기반의 설명밖에 찾지 못하였다. 또 x86과 x64 간의 트램폴린 후킹 기술의 구현 방법이 미세하게 다르다. 하지만 x64 시스템에서의 트램펄린 후킹 기술은 많이 알려지지 않은 것으로 보이며 찾을 수도 없었다. 그렇기에 필자는 독자적으로 방법을 구현하여(아닐 수도 있다) 사용하고 있었다. 그..
코드 인젝션과 IAT 후킹의 조합 코드 인젝션은 Fileless 형식의 임의의 코드 주입 공격이다. 그리고 IAT 후킹은 프로세스의 Import Address Table을 조작하여 특정 API의 제어권을 가로채는 기법이다. 이 두개의 기법을 적절히 활용하면 Fileless 형식의 IAT 후킹을 할수 있다. 예제 코드 GitHub - jungjin0003/Code-Injection: Code Injection + Hooking sample Code Injection + Hooking sample. Contribute to jungjin0003/Code-Injection development by creating an account on GitHub. github.com Code Injector 소스코드는 ..