일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Network Byte Order
- 윈도우 커널 디버깅
- 포너블
- 윈도우 커널
- 네트워크 바이트 오더
- Windows Kernel Driver
- Msvcrt.dll
- 윈도우 커널 드라이버
- 시스템해킹
- hacking
- packet capture
- HackCTF
- 바이트 오더
- Windows Kernel Debug
- C언어 패킷캡쳐
- 개발 환경 준비
- Windows
- pwnable
- Windows Kernel
- apphelp.dll
- ucrtbase.dll
- IAT Hooking
- pcap packet
- pcap packet capture
- vcruntime140.dll
- 해킹
- arudino
- vcruntime.dll
- windows kernel debugging
- 개발하기
- Today
- Total
목록전체 글 (118)
미친해커
코드 인젝션 (Code Injection) 정의 Code Injection이란 실행 가능한 코드를 대상 메모리 영역으로 삽입하여 실행하는 것을 말한다. 코드 인젝션 활용 영역 프로그램의 기능 개선 및 버그 패치 API 후킹 일반 응용 프로그램에 특별한 목적의 코드를 추가 악성코드에서의 활용 코드 인젝션 주요 동작 흐름 Windows API / Kernel Function 프로세스 권한 획득 : OpenProcess() / NtOpenProcess() 메모리 공간 할당 : VirtualAllocEx() / NtAllocateVirtualMemory() 코드 삽입 : WriteProcessMemory() / NtWriteVirtualMemory() 코드 실행 : CreateRemoteThread() / Nt..
GetModuleFileName GetModuleFileName 함수는 인자로 들어온 HMODULE의 전체 경로를 반환해주는 함수이다. 즉 HMODULE(ImageBase)는 가지고 있지만 해당 HMODULE이 어떤 DLL인지 모를때 사용하면 유용한 함수이다. GetRemoteModuleFileName DWORD GetRemoteModuleFileNameA(HANDLE ProcessHandle, HMODULE hModule, LPSTR lpFilename, DWORD nSize) { ZeroMemory(lpFilename, nSize); wchar_t Filename[MAX_PATH]; DWORD Size = GetRemoteModuleFileNameW(ProcessHandle, hModule, File..
GetProcAddress GetProcAddress 함수는 kernel32.dll에 정의되어 있는 함수이다. 인자로 HMODULE과 함수의 이름을 주고 호출하게되면 해당 DLL에서 Export 하는 함수들 중 인자로 넣은 함수의 이름과 같은 이름의 함수의 주소를 반환해준다. 이 함수도 마찬가지로 현재 프로세스를 기준으로 하게된다. 하지만 굳이 이 함수까지 구현한 이유는 DLL Injection과 같은 기술을 사용할 때 혹시라도 kernel32.dll의 ImageBase가 다르거나 특정 함수의 주소를 알아야할 때가 있을 것같아 해당 함수도 Remote 버전을 구현하게 되었다. GetRemoteProcAddress FARPROC GetRemoteProcAddress(HANDLE ProcessHandle, ..
GetModuleHandle GetModuleHandle 함수는 kernel32.dll와 kernelbase.dll에 정의되어있는 함수이다. 해당 함수는 현재 프로세스에 로드된 DLL 중 인자로 넣은 DLL 이름의 HMODULE을 반환하는 함수이다. HMODULE은 과거 윈도우에서 다른 용도로 만들어졌지만 현재 윈도우에서는 DLL의 ImageBase를 담는 자료형이 되었다. 실제로 GetModuleHandle 함수를 이용해 특정 DLL의 HMODULE을 반환 받으면 해당 값은 해당 DLL의 ImageBase 인 것을 확인할 수 있다. 이 또한 현재 프로세스가 아닌 다른 프로세스에 로드된 DLL의 ImageBase를 구하기 위해 Remote 버전을 구현하게 되었다. GetRemoteModuleHandle ..
RtlGetCurrentPeb RtlGetCurrentPeb 함수는 ntdll.dll의 함수이다. 해당 함수는 현재 프로세스의 PEB 구조체의 주소를 반환해준다. 해당 함수 또한 현재 프로세스의 PEB 주소만 구할 수 있고 다른 프로세스의 PEB 구조체의 주소를 구하기 위해서는 NtQueryInformationProcess 라고 하는 커널 함수를 사용해야한다. (물론 해당 커널 함수를 사용해 PEB 구조체의 주소를 구해주는 다른 WINAPI도 존재한다. 하지만 내부적으로는 대부분 해당 커널 함수를 사용한다.) 물론 여기까지 윈도우 시스템에 대해서 공부한 사람이랑 그냥 커널 함수를 쓰고 말겠지만 해당 커널 함수를 사용하면 다른 정보도 같이 구해지기 때문에 불필요한 공간을 사용하게 된다. 그렇기에 해당 함수..
libloaderapi.h Remote liblaoderapi.h 를 설명하기 전에 libloaderapi.h가 무엇인지 알아야한다. 아래 링크는 MSDN 공식 설명이다. Libloaderapi.h header - Win32 apps Table of contents Article 11/23/2021 3 minutes to read Is this page helpful? In this article --> This header is used by multiple technologies. For more information, see: libloaderapi.h contains the following programming interfaces: Functions AddDllDirec docs.microsof..