일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발하기
- IAT Hooking
- vcruntime140.dll
- Windows Kernel Driver
- ucrtbase.dll
- Windows Kernel Debug
- pcap packet
- 개발 환경 준비
- 바이트 오더
- hacking
- vcruntime.dll
- 시스템해킹
- packet capture
- 해킹
- windows kernel debugging
- Msvcrt.dll
- pwnable
- 네트워크 바이트 오더
- arudino
- HackCTF
- 포너블
- C언어 패킷캡쳐
- Windows Kernel
- 윈도우 커널 드라이버
- Network Byte Order
- 윈도우 커널 디버깅
- pcap packet capture
- 윈도우 커널
- apphelp.dll
- Windows
- Today
- Total
목록Windows/Heaven's Gate (Windows on Windows x64) (6)
미친해커
How are ntdll.dll and WoW ntdll.dll different? ntdll.dll은 커널 함수가 정의 되어 있는 DLL이다. 유저 모드의 커널 함수들은 syscall을 통해 커널 함수를 호출할 수 있다. 하지만 운영체제(커널)은 64Bit이며 WoW 프로세스는 32Bit로 동작한다. 그렇기에 32Bit 프로세스는 syscall 하기 전 64Bit 모드로 전환할 필요가 있다. 위 이미지와 같이 WoW ntdll.dll의 경우 syscall number를 eax 레지스터에 지정하고 syscall이 아닌 call edx로 어떠한 함수를 호출하는 것을 확인할 수 있다. Which function is invoked using edx register? call edx는 ntdll!Wow64Sy..
나는 지금까지 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..