일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- windows kernel debugging
- 해킹
- HackCTF
- 윈도우 커널 드라이버
- 네트워크 바이트 오더
- 시스템해킹
- Windows Kernel Debug
- 바이트 오더
- apphelp.dll
- hacking
- ucrtbase.dll
- vcruntime.dll
- Network Byte Order
- Windows
- pwnable
- arudino
- Msvcrt.dll
- IAT Hooking
- 개발 환경 준비
- Windows Kernel Driver
- vcruntime140.dll
- pcap packet
- packet capture
- Windows Kernel
- 포너블
- 윈도우 커널
- 윈도우 커널 디버깅
- pcap packet capture
- C언어 패킷캡쳐
- 개발하기
- Today
- Total
목록분류 전체보기 (118)
미친해커
나는 지금까지 WoW(Windows on Windows) 프로세스를 완벽하게 디버깅하기 위해서는 CheatEngine을 사용해야 한다고 생각했다. 왜냐하면 CS 레지스터의 값이 바뀌면서 모드가 변경되면 일반적인 디버거들은 오류를 일으키거나 해당 부분을 건너뛰어서 디버깅을 했다. 그렇기 때문에 CheatEngine을 사용해야한다고 생각했는데 해당 CheatEngine도 불편해서 사실상 제대로된 디버깅은 해본적이 없다. 그런데 Windbg를 이용하면 정상적으로 디버깅이 가능하다는 글을 보게되었다. 당연한 사실이지만 생각보다 지원되는 기능들이 많아서 너무 편하다. How to Debug for WoW Process use Windbg 딱히 특별한 방법이 있는건 아니다. 아래 페이지에서 설치관리자를 다운받고 실..
[WoW] 32Bit 모드에서 64Bit 모드로 전환하기 [WoW] 32Bit 응용 프로그램에서의 Kernel 함수 호출 Windows 64Bit에서 32Bit 응용 프로그램을 실행하고 디버거로 커널 함수의 어셈블리를 확인하면 대부분 다음과 같은 형식을 띄게 된다. mov eax, 0x00000026 # crazyhacker.tistory.com 이전 포스팅에서 jmp far 라고하는 처음보는 형태의 어셈블리를 확인했었다. 그리고 해당 far 어셈블리는 CS 레지스터의 값을 변경하는 어셈블리였으며 32Bit 모드에서 64Bit 모드로 변경하기 위해서는 CS 레지스터의 값을 변경해야 한다는 것도 알았다. 이번 포스팅에서는 Far 어셈블리와 Near 어셈블리의 차이점을 알아보려고 한다. jmp instruc..
[WoW] 32Bit 응용 프로그램에서의 Kernel 함수 호출 Windows 64Bit에서 32Bit 응용 프로그램을 실행하고 디버거로 커널 함수의 어셈블리를 확인하면 대부분 다음과 같은 형식을 띄게 된다. mov eax, 0x00000026 # Windows System Call Number mov edx, Wow64SystemSe.. crazyhacker.tistory.com 이전 포스팅 이전 포스팅에서 jmp 0033:wow64cpu.dll+7009 라고 적힌 처음보는 jmp instrcution을 볼수 있었다. 해당 어셈블리를 Cheat Engine이 아닌 일반적인 디버거(OllyDbg, x64dbg)에서는 다르게 표시된다. jmp far라는 instrcution으로 해석되는 것을 확인할 수 있..
Windows 64Bit에서 32Bit 응용 프로그램을 실행하고 디버거로 커널 함수의 어셈블리를 확인하면 대부분 다음과 같은 형식을 띄게 된다. mov eax, 0x00000026 # Windows System Call Number mov edx, Wow64SystemServiceCall # 64비트 모드 전환 함수 call edx # 모드 전환 함수 호출 ret # 리턴 우리가 알고 있는 커널 함수의 호출은 syscall 어셈블리를 사용해 커널에 호출하게 된다. 하지만 Windows on Windows로 돌아가고 있는 32Bit 응용 프로그램은 syscall이 아닌 Wow64SystemServiceCall 이라는 함수를 호출하고 있다. 해당 함수는 Windows 64Bit 운영체제의 32Bit용 ntd..
WoW64란? WoW64는 Windows 64Bit 운영체제에서 Windows 32Bit 응용 프로그램을 실행할 수 있는 Windows 운영 체제의 하위 시스템이다. 과거 Windows 32Bit 운영체제에서는 Windows 16Bit 와의 호환성을 위해 Windows on Windows 라는 이름으로 등장시켰다. 하지만 현재 Windows 64Bit 운영체제에서는 Windows 16Bit 응용 프로그램은 동작하지 않는다. 해당 이유는 Windows 64Bit의 시스템 핸들의 크기 때문이라고 한다. 구현 세부 정보 wow64.dll - 포인터 및 호출 스택 조작과 32비트와 64비트 호출 간 변환하는 Windows NT 커널에 대한 핵신 인터페이스 wow64cpu.dll - 32비트 애플리케이션(win3..
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 ..