めいくりぷとのブログ

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

ava

ava

全武器名・武器ID取得 gyazo.com

ProcessEvent auto hook

kousin

ネタないので、某プロテクタのお話。プロセス検出の際にOpenProcessフックすれば潰れて、知らないうちにNtOpenProcessが呼ばれるようになって、また知らないうちに、コピーされたntdllのNtOpenProcessが呼ばれるようになったけど、それ自体はどうにかする必…

kousin

xigncode あっぷでーとなんでもコピーすりゃ良いって訳でも無いと思う。 アプデ前からコピーされたntdll.dllがマッピングされてて、NtQueryVirtualMemoryでモジュール列挙するやら、NtOpenProcessからプロセス検出やらあったけど、 アプデ後に、user32.dllと…

ドライバ

C++

_Success_(NT_SUCCESS(return)) NTSTATUS NTAPI ZwOpenDriver( _In_ PUNICODE_STRING DeviceName, _Out_ PHANDLE DeviceHandle ) { HANDLE Device; if (!DeviceName || !DeviceHandle) return STATUS_INVALID_PARAMETER; Device = CreateFile(DeviceName->Bu…

マニュアルマッピングされたモジュールをマニュアルリンクする。

C++

_Success_(return != NULL) PTEB WINAPI GetThreadEnvironmentBlock( ) { #ifdef _WIN64 return reinterpret_cast<PTEB>(__readgsqword(0x00000030)); #else return reinterpret_cast<PTEB>(__readfsdword(0x00000018)); #endif } _Success_(return != NULL) PPEB WINAPI</pteb></pteb>…

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

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…