めいくりぷとのブログ

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

WDDM Hook #2

gyazo.com前記事の続き。どうやら、nvldumd.OpenAdapterが呼ばれて、内部でnvd3dum.OpenAdapterが呼ばれるらしい。 そのままnvldumd.dllを先に読み込んでおいてOpenAdapterフックするだけで良いらしい。 Direct3DCreate9 -> Direct3DCreate9Ex -> nvldumd.Op…

WDDM Hook

#include "stdafx.h" #include "CDDIContext.hpp" #include "CLog.hpp" #include "utils.hpp" #pragma warning(disable: 4800) #include <d3dumddi.h> #pragma warning(default: 4091) #include <algorithm> #include <d3d9.h> #pragma comment(lib, "d3d9.lib") HRESULT APIENTRY CreateDev</d3d9.h></algorithm></d3dumddi.h>…

Meta Trader 4

SBI FXでスキャルピング、デイトレメインでやってたのですが、ツールのチャート全般が使いにくい気がしたので、 XM Tradingの口座を開設して、チャートはMT4を使うことにしました。 スタンダード口座でレバレッジは888倍ですので、勝てるであろう相場の際に…

Proxy DLL Generator

C++

gyazo.com Proxy DLL Generator これでProxy DLL作成が捗る

syscall generator

C++

gyazo.com

uho

ava

gyazo.com うほ

StaticClass

UObject* GetInstanceOf(_In_ UClass *pClass) { if (UObject::GObjObjects() != NULL) { for (int i = 0; i < UObject::GObjObjects()->Num(); i++) { UObject *pObject = UObject::GObjObjects()->Data[i]; if (pObject != NULL && pObject->IsA(pClass)) …

processevent

ProcessEvent hookするのは良いとして、 直接ProcessEvent(vfptr) フックするのと、ProcessEventをcallする関数フックするとで、大分パフォーマンス変わってきますな。 // pe call function push ebp mov ebp,esp ... mov ecx,[pObject] mov eax,[ecx] mov e…

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…