Revert "Added Some of the breakpoint code. It is not finished yet, and I am not sure the code would compile"

This reverts commit c46552c873.
This commit is contained in:
Mr. eXoDia 2015-04-05 03:24:44 +02:00
parent c46552c873
commit 7fab49188c
8 changed files with 3 additions and 138 deletions

View File

@ -1,11 +0,0 @@
#ifndef DEBUGGER_BREAKPOINT_TYPES
#define DEBUGGER_BREAKPOINT_TYPES
/*
Needs more work here.
*/
#define SOFT_BP 0xcc
#endif

View File

@ -1,97 +0,0 @@
#ifndef DEBUGGER_BREAKPOINTS_H
#define DEBUGGER_BREAKPOINTS_H
#include "Debugger.Global.h"
/*
Incomplete Job. I'll Continue Later.
*/
namespace GleeBug{
typedef std::tuple<uint32_t, LPVOID, uint32_t> breakpoint;
typedef std::unordered_map<breakpoint, uint8_t> bpmap;
struct BreakPointManager{
bpmap breakpoints;
BreakPointManager(){
breakpoints = bpmap{};
}
bool AddBp(LPPROCESS_INFORMATION procinfo, LPVOID addr, uint32_t type){
uint8_t bp_type;
SIZE_T nbytes_written = 0;
breakpoint bp( procinfo->dwProcessId, addr, type );
switch (type)
{
case SOFT_BP:
bp_type = 0xcc;
break;
default:
return false;
}
if (ReadProcessMemory(procinfo->hProcess, addr, &bp_type, 1, &nbytes_written) == 0)
{
return false;
}
if (nbytes_written != 1){
return false;
}
breakpoints[bp] = bp_type;
if (WriteProcessMemory(procinfo->hProcess, addr, &bp_type, 1, &nbytes_written) == 0)
{
return false;
}
if (nbytes_written != 1){
return false;
}
return true;
}
bool RemoveBp(LPPROCESS_INFORMATION proc_info, breakpoint bp){
uint8_t original_instruction;
SIZE_T nbytes_written = 0;
try
{
original_instruction = breakpoints[bp];
}
catch (const std::out_of_range& oor){
return false;
}
if (WriteProcessMemory(proc_info->hProcess, std::get<1>(bp), &std::get<2>(bp), 1, &nbytes_written) == 0)
{
return false;
}
if (nbytes_written != 1){
return false;
}
return true;
}
bool DeleteBp(LPPROCESS_INFORMATION proc_info, breakpoint bp){
bool success;
success = RemoveBp(proc_info, bp);
breakpoints.erase(bp);
return success;
}
bool DisableAll()
{
}
};
}
#endif

View File

@ -6,10 +6,9 @@
#include <vector> #include <vector>
#include <unordered_map> #include <unordered_map>
#include <map> #include <map>
#include <stdint.h>
#include <windows.h> #include <windows.h>
#include <psapi.h> #include <psapi.h>
#include "Debugger.Breakpoint.Types.h"
namespace GleeBug namespace GleeBug
{ {

View File

@ -11,8 +11,6 @@ namespace GleeBug
const wchar_t* szCommandLine, const wchar_t* szCommandLine,
const wchar_t* szCurrentDirectory) const wchar_t* szCurrentDirectory)
{ {
_breakPoints = BreakPointManager();
STARTUPINFOW si; STARTUPINFOW si;
memset(&si, 0, sizeof(si)); memset(&si, 0, sizeof(si));
const wchar_t* szFileNameCreateProcess; const wchar_t* szFileNameCreateProcess;
@ -51,13 +49,4 @@ namespace GleeBug
{ {
return !!DebugActiveProcessStop(_mainProcess.dwProcessId); return !!DebugActiveProcessStop(_mainProcess.dwProcessId);
} }
bool Debugger::SetBreakPointMainProcess(LPVOID address, uint32_t bp_type){
return _breakPoints.AddBp(&_mainProcess, address, bp_type);
}
bool Debugger::DelBreakPointMainProcess(LPVOID address, uint32_t bp_type){
breakpoint temp(_mainProcess.dwProcessId, address, bp_type);
return _breakPoints.DeleteBp(&_mainProcess, temp);
}
}; };

View File

@ -3,7 +3,6 @@
#include "Debugger.Global.h" #include "Debugger.Global.h"
#include "Debugger.Process.h" #include "Debugger.Process.h"
#include "Debugger.Breakpoints.h"
namespace GleeBug namespace GleeBug
{ {
@ -46,11 +45,6 @@ namespace GleeBug
*/ */
void Start(); void Start();
/*
adds a brakpoint on the main process being debugger;
*/
bool SetBreakPointMainProcess(LPVOID address, uint32_t bp_type);
bool DelBreakPointMainProcess(LPVOID address, uint32_t bp_type);
protected: //debug event callbacks protected: //debug event callbacks
/** /**
\brief Process creation debug event callback. Provide an implementation to use this callback. \brief Process creation debug event callback. Provide an implementation to use this callback.
@ -190,7 +184,6 @@ namespace GleeBug
virtual void exceptionSingleStep(const EXCEPTION_RECORD & exceptionRecord, const bool firstChance); virtual void exceptionSingleStep(const EXCEPTION_RECORD & exceptionRecord, const bool firstChance);
protected: //variables protected: //variables
BreakPointManager _breakPoints;
PROCESS_INFORMATION _mainProcess; PROCESS_INFORMATION _mainProcess;
DWORD _continueStatus; DWORD _continueStatus;
bool _breakDebugger; bool _breakDebugger;

View File

@ -159,8 +159,6 @@
<ClCompile Include="Debugger.Thread.cpp" /> <ClCompile Include="Debugger.Thread.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="Debugger.Breakpoint.Types.h" />
<ClInclude Include="Debugger.Breakpoints.h" />
<ClInclude Include="Debugger.Dll.h" /> <ClInclude Include="Debugger.Dll.h" />
<ClInclude Include="Debugger.Process.h" /> <ClInclude Include="Debugger.Process.h" />
<ClInclude Include="Debugger.h" /> <ClInclude Include="Debugger.h" />

View File

@ -65,11 +65,5 @@
<ClInclude Include="Debugger.Global.h"> <ClInclude Include="Debugger.Global.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Debugger.Breakpoints.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Debugger.Breakpoint.Types.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -6,10 +6,10 @@ int main()
#ifdef _WIN64 #ifdef _WIN64
wchar_t szFilePath[256] = L"c:\\test64.exe"; wchar_t szFilePath[256] = L"c:\\test64.exe";
#else //x86 #else //x86
wchar_t szFilePath[256] = L"C:\\Users\\JOAO\\Favorites\\Desktop\\crackmes\\chakravyuha\\_sol\\CHAKRAVYUHA.exe"; wchar_t szFilePath[256] = L"c:\\test32.exe";
#endif //_WIN64 #endif //_WIN64
wchar_t szCommandLine[256] = L""; wchar_t szCommandLine[256] = L"";
wchar_t szCurrentDir[256] = L"C:\\Users\\JOAO\\Favorites\\Desktop\\crackmes\\chakravyuha\\_sol\\"; wchar_t szCurrentDir[256] = L"c:\\";
MyDebugger dbg; MyDebugger dbg;
if (dbg.Init(szFilePath, szCommandLine, szCurrentDir)) if (dbg.Init(szFilePath, szCommandLine, szCurrentDir))
{ {