일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Windows
- 바이트 오더
- packet capture
- 포너블
- Windows Kernel Driver
- IAT Hooking
- 시스템해킹
- apphelp.dll
- Network Byte Order
- vcruntime.dll
- ucrtbase.dll
- 개발하기
- arudino
- vcruntime140.dll
- pcap packet capture
- Windows Kernel
- 윈도우 커널 드라이버
- 해킹
- 윈도우 커널
- Msvcrt.dll
- pcap packet
- windows kernel debugging
- hacking
- Windows Kernel Debug
- 네트워크 바이트 오더
- HackCTF
- pwnable
- 윈도우 커널 디버깅
- 개발 환경 준비
- C언어 패킷캡쳐
- Today
- Total
목록Reversing/Hooking (14)
미친해커
해당 글을 읽기 전에 리버싱 또는 후킹에 대한 기본적이 지식이 없으신 분들이라면 아래 글을 모두 숙지 후에 와주세요. [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 이다) 그렇다면 만약 우리가 점프하고 싶은 ..
이번에는 본격적으로 IAT 후킹을 시도할 생각이다. 우리가 저번 포스팅에서 해당 함수의 IAT 주소를 구하는 부분까지 프로그래밍을 했었다. 그렇다면 이제 남은 단계는 딱 한가지이다. 해당 주소에 있는 주소 값을 후킹 함수의 주소로 바꾸면 후킹이 완료된다. 후킹을 하기 전에 후킹(제어권을 가로챌) 함수를 먼저 만들어야한다. 포스팅에서는 MessageBoxA 라는 함수를 대상으로 후킹을 할 것이다. 함수를 정했다면 그 함수의 호출 인자에 대한 구조를 알고 있어야 한다. (반드시 알아야 할 필요는 없다) MessageBoxA의 대한 정보는 MSDN에서 찾을 수 있다. MessageBoxA function (winuser.h) - Win32 apps Displays a modal dialog box that c..
이번 포스팅부터 본격적으로 IAT Hooking에 대해서 알아보도록 하자 [Reversing] IAT Hooking Step 0 IAT(Import Address Table) Hooking 이란 IAT에 적혀있는 API의 주소를 조작하여 후킹하는 기법을 말한다. IAT에는 응용 프로그램이 호출하는 API의 함수명, 함수 주소 등이 기록되어 있다. 해당 응용 프로그 crazyhacker.tistory.com 저번 포스팅에서 간단히 PE 구조와 IAT의 구조에 대해서 배웠었다. 이번엔 IAT에서 등록되어 있는 함수들의 이름과 주소를 불러오는 프로그램을 만들어보도록 한다. Source Code #include #include int main(int argc, char *argv[]) { // 현재 프로그램의 ..