From b6b77f2dd6e1683c3dff2bb4083e95b97cd67ff7 Mon Sep 17 00:00:00 2001 From: mrexodia Date: Mon, 15 Feb 2016 20:28:49 +0100 Subject: [PATCH] added some info to Dll and Process --- GleeBug/Debugger.Dll.cpp | 5 +++-- GleeBug/Debugger.Dll.h | 4 +++- GleeBug/Debugger.Loop.Dll.cpp | 4 ++-- GleeBug/Debugger.Loop.Process.cpp | 3 ++- GleeBug/Debugger.Process.cpp | 3 ++- GleeBug/Debugger.Process.h | 4 +++- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/GleeBug/Debugger.Dll.cpp b/GleeBug/Debugger.Dll.cpp index a64d250..215ade8 100644 --- a/GleeBug/Debugger.Dll.cpp +++ b/GleeBug/Debugger.Dll.cpp @@ -2,10 +2,11 @@ namespace GleeBug { - Dll::Dll(LPVOID lpBaseOfDll, ptr sizeOfImage, LPVOID entryPoint) : + Dll::Dll(LPVOID lpBaseOfDll, ptr sizeOfImage, LPVOID entryPoint, const LOAD_DLL_DEBUG_INFO & loadDllInfo) : lpBaseOfDll(ptr(lpBaseOfDll)), sizeOfImage(sizeOfImage), - entryPoint(ptr(entryPoint)) + entryPoint(ptr(entryPoint)), + loadDllInfo(loadDllInfo) { } }; \ No newline at end of file diff --git a/GleeBug/Debugger.Dll.h b/GleeBug/Debugger.Dll.h index 7296bf2..ea29d39 100644 --- a/GleeBug/Debugger.Dll.h +++ b/GleeBug/Debugger.Dll.h @@ -14,14 +14,16 @@ namespace GleeBug ptr lpBaseOfDll; ptr sizeOfImage; ptr entryPoint; + LOAD_DLL_DEBUG_INFO loadDllInfo; /** \brief Constructor. \param lpBaseOfDll The base of DLL. \param sizeOfImage Size of the image. \param entryPoint The entry point. + \param loadDllInfo The DLL info on creation. */ - explicit Dll(LPVOID lpBaseOfDll, ptr sizeOfImage, LPVOID entryPoint); + explicit Dll(LPVOID lpBaseOfDll, ptr sizeOfImage, LPVOID entryPoint, const LOAD_DLL_DEBUG_INFO & loadDllInfo); }; }; diff --git a/GleeBug/Debugger.Loop.Dll.cpp b/GleeBug/Debugger.Loop.Dll.cpp index 38e968f..7585cdd 100644 --- a/GleeBug/Debugger.Loop.Dll.cpp +++ b/GleeBug/Debugger.Loop.Dll.cpp @@ -11,7 +11,7 @@ namespace GleeBug HMODULE(loadDll.lpBaseOfDll), &modinfo, sizeof(MODULEINFO)); - Dll dll(loadDll.lpBaseOfDll, modinfo.SizeOfImage, modinfo.EntryPoint); + Dll dll(loadDll.lpBaseOfDll, modinfo.SizeOfImage, modinfo.EntryPoint, loadDll); mProcess->dlls.insert({ Range(dll.lpBaseOfDll, dll.lpBaseOfDll + dll.sizeOfImage - 1), dll }); //call the debug event callback @@ -29,7 +29,7 @@ namespace GleeBug if (dll != mProcess->dlls.end()) cbUnloadDllEvent(unloadDll, dll->second); else - cbUnloadDllEvent(unloadDll, Dll(unloadDll.lpBaseOfDll, 0, nullptr)); + cbUnloadDllEvent(unloadDll, Dll(unloadDll.lpBaseOfDll, 0, nullptr, LOAD_DLL_DEBUG_INFO())); //DLL housekeeping if (dll != mProcess->dlls.end()) diff --git a/GleeBug/Debugger.Loop.Process.cpp b/GleeBug/Debugger.Loop.Process.cpp index 3e84b92..da18173 100644 --- a/GleeBug/Debugger.Loop.Process.cpp +++ b/GleeBug/Debugger.Loop.Process.cpp @@ -8,7 +8,8 @@ namespace GleeBug mProcesses.insert({ mDebugEvent.dwProcessId, Process(createProcess.hProcess, mDebugEvent.dwProcessId, - mDebugEvent.dwThreadId) }); + mDebugEvent.dwThreadId, + createProcess) }); mProcess = &mProcesses.find(mDebugEvent.dwProcessId)->second; //thread housekeeping (main thread is created implicitly) diff --git a/GleeBug/Debugger.Process.cpp b/GleeBug/Debugger.Process.cpp index f88f5bc..4afcb62 100644 --- a/GleeBug/Debugger.Process.cpp +++ b/GleeBug/Debugger.Process.cpp @@ -2,10 +2,11 @@ namespace GleeBug { - Process::Process(HANDLE hProcess, uint32 dwProcessId, uint32 dwMainThreadId) : + Process::Process(HANDLE hProcess, uint32 dwProcessId, uint32 dwMainThreadId, const CREATE_PROCESS_DEBUG_INFO & createProcessInfo) : hProcess(hProcess), dwProcessId(dwProcessId), dwMainThreadId(dwMainThreadId), + createProcessInfo(createProcessInfo), thread(nullptr), systemBreakpoint(false) { diff --git a/GleeBug/Debugger.Process.h b/GleeBug/Debugger.Process.h index f4657f5..2bf69f3 100644 --- a/GleeBug/Debugger.Process.h +++ b/GleeBug/Debugger.Process.h @@ -18,6 +18,7 @@ namespace GleeBug HANDLE hProcess; uint32 dwProcessId; uint32 dwMainThreadId; + CREATE_PROCESS_DEBUG_INFO createProcessInfo; //hFile is invalid, possibly other handles too! Thread* thread; bool systemBreakpoint; @@ -34,8 +35,9 @@ namespace GleeBug \param hProcess Process handle. \param dwProcessId Identifier for the process. \param dwMainThreadId Identifier for the main thread. + \param createProcessInfo The process creation info. */ - explicit Process(HANDLE hProcess, uint32 dwProcessId, uint32 dwMainThreadId); + explicit Process(HANDLE hProcess, uint32 dwProcessId, uint32 dwMainThreadId, const CREATE_PROCESS_DEBUG_INFO & createProcessInfo); /** \brief Read memory from the process.