めいくりぷとのブログ

技術的なことやゲームのことやら・・・

マニュアルマッピングされたシステムモジュールをアンロードして、正規のモジュールにすり替える。

C++

EXTERN_C NTSTATUS NTAPI LdrLoadDll( _In_ PWCHAR PathToFile OPTIONAL, _In_ ULONG Flags OPTIONAL, _In_ PUNICODE_STRING ModuleFileName, _Out_ PHANDLE ModuleHandle ); VOID Detour_LdrLoadDll() { static decltype(&LdrLoadDll) _LdrLoadDll = LdrLoa…

ウィンドウ検出のBypass

C++

BOOL Detour_GetWindowThreadProcessId() { static decltype(&GetWindowThreadProcessId) _GetWindowThreadProcessId = GetWindowThreadProcessId; decltype(&GetWindowThreadProcessId) GetWindowThreadProcessId_Hook = []( _In_ HWND hWnd, _Out_opt_ LPD…

プロセス検出と最小化とそのBypass

C++

プロセス検出&最小化 // ProcessMinimizer.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include <Windows.h> #include <winternl.h> #include <ntstatus.h> #include <Psapi.h> #pragma comment(lib, "Psapi.lib") #pragma comment(lib, "ntdll.lib") E</psapi.h></ntstatus.h></winternl.h></windows.h>…

ファイルのハッシュ値を取得する。

C++

BOOL CCalcHash::GetMD2(__in LPCSTR lpcszFileName, __inout BYTE pbData[16]) { return GetFileHashA(lpcszFileName, pbData, 16, CALG_MD2); } BOOL CCalcHash::GetMD4(__in LPCSTR lpcszFileName, __inout BYTE pbData[16]) { return GetFileHashA(lpcsz…

システムDLLのPDBファイルをダウンロードする。

NtQueryInformationProcess から現在のプロセスのPEBを取得し、std::list<> に LDR_DATA_TABLE_ENTRY へのポインタを格納し、GetPdbOfSystemFileW(...) を呼び出します。 今回はGetCurrentProcess()を使い現在プロセスのを取得していますが、 任意のプロセス…

特に意味ない

C++

何を思ってか、ラッパーAPI書いてる。 BOOL XAPI::DeviceIoControl( _In_ HANDLE hDevice, _In_ DWORD dwIoControlCode, _In_opt_ LPVOID lpInBuffer, _In_ DWORD nInBufferSize, _Out_opt_ LPVOID lpOutBuffer, _In_ DWORD nOutBufferSize, _Out_opt_ LPDWO…