From e18a57bc765d558440effe7af902de97d7f26101 Mon Sep 17 00:00:00 2001 From: SardineFish Date: Wed, 3 Mar 2021 02:03:54 +0800 Subject: [PATCH] Fix bugs & update logger --- Hook/ModuleHook.cpp | 8 ++++---- Hook/ModuleHook.h | 2 +- Hook/dllmain.cpp | 11 ++++++++++- Logger/Program.cs | 5 ++++- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/Hook/ModuleHook.cpp b/Hook/ModuleHook.cpp index 071a170..0201306 100644 --- a/Hook/ModuleHook.cpp +++ b/Hook/ModuleHook.cpp @@ -40,17 +40,17 @@ void ModuleHook::commit() logf("Detour transaction successfully committed"); } -void ModuleHook::hookFunc(const char* name, PVOID* originalFunc, void*& hookFunc) +void ModuleHook::hookFunc(const char* logName, const char* name, PVOID* originalFunc, void* hookFunc) { - auto funcAddr = GetProcAddress(hMod, "?execDML@CppSQLite3DB@@QAEHPBDPAH@Z"); - logf("SQLite3DB::execDML: %p", funcAddr); + auto funcAddr = GetProcAddress(hMod, name); + logf("%s: %p", logName, funcAddr); if(funcAddr == NULL) { logf("Get null of function %s", name); } DetourTransactionBegin(); - logf("Try hook SQLite3DB::execDML"); + logf("Try hook %s", logName); *originalFunc = (void*)funcAddr; auto err = DetourAttach(originalFunc, hookFunc); if(err != NO_ERROR) diff --git a/Hook/ModuleHook.h b/Hook/ModuleHook.h index 51762d1..43d6b9c 100644 --- a/Hook/ModuleHook.h +++ b/Hook/ModuleHook.h @@ -11,5 +11,5 @@ public: void commit(); - void hookFunc(const char* name, PVOID* originalFunc, void*& hookFunc); + void hookFunc(const char* logName, const char* name, PVOID* originalFunc, void* hookFunc); }; diff --git a/Hook/dllmain.cpp b/Hook/dllmain.cpp index 86f6574..7a03efd 100644 --- a/Hook/dllmain.cpp +++ b/Hook/dllmain.cpp @@ -127,7 +127,16 @@ DWORD WINAPI thread_func(LPVOID lpParam) hook.begin(); auto fn = &HookSQLite3DB::execDML; - hook.hookFunc("?execDML@CppSQLite3DB@@QAEHPBDPAH@Z", (void**)&OriginalSQLite3DB_execDML, (void*&)fn); + hook.hookFunc("SQLite3DB::execDML", + "?execDML@CppSQLite3DB@@QAEHPBDPAH@Z", + (void**)&OriginalSQLite3DB_execDML, + (void*&)fn); + + auto fn2 = &HookSQLite3DB::execQueryEx; + hook.hookFunc("SQLite3DB::execQueryEx", + "?execQueryEx@CppSQLite3DB@@QAE?AVCppSQLite3Query@@PBDPAHH@Z", + (void**)&OriginalSQLite3DB_execQueryEx, + (void*&)fn2); hook.commit(); diff --git a/Logger/Program.cs b/Logger/Program.cs index 5cf7c15..97456fa 100644 --- a/Logger/Program.cs +++ b/Logger/Program.cs @@ -17,7 +17,10 @@ namespace Logger { IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0); var data = server.Receive(ref remote); - Console.WriteLine("[{0}] {1}", DateTime.Now.ToShortTimeString(), Encoding.UTF8.GetString(data)); + Console.ForegroundColor = ConsoleColor.DarkGray; + Console.Write("[{0}] ", DateTime.Now.ToLongTimeString()); + Console.ResetColor(); + Console.WriteLine(Encoding.UTF8.GetString(data)); } } }