mirror of https://github.com/x64dbg/GleeBug
various small fixes
This commit is contained in:
parent
94809cb4e9
commit
7d45916c96
|
|
@ -37,7 +37,7 @@ namespace GleeBug
|
||||||
BYTE DR7_SIZE[HWBP_COUNT];
|
BYTE DR7_SIZE[HWBP_COUNT];
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline ptr dr7_ptr(const DR7 & dr7)
|
static ptr dr7_ptr(const DR7 & dr7)
|
||||||
{
|
{
|
||||||
ptr result = 0;
|
ptr result = 0;
|
||||||
if (BITGET(dr7.DR7_MODE[0], 0))
|
if (BITGET(dr7.DR7_MODE[0], 0))
|
||||||
|
|
@ -91,7 +91,7 @@ namespace GleeBug
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline DR7 ptr_dr7(ptr dr7)
|
static DR7 ptr_dr7(ptr dr7)
|
||||||
{
|
{
|
||||||
DR7 result;
|
DR7 result;
|
||||||
memset(&result, 0, sizeof(DR7));
|
memset(&result, 0, sizeof(DR7));
|
||||||
|
|
@ -146,7 +146,7 @@ namespace GleeBug
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline DR7_SIZE size_dr7(HardwareSize size)
|
static DR7_SIZE size_dr7(HardwareSize size)
|
||||||
{
|
{
|
||||||
switch (size)
|
switch (size)
|
||||||
{
|
{
|
||||||
|
|
@ -165,7 +165,7 @@ namespace GleeBug
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline DR7_TYPE type_dr7(HardwareType type)
|
static DR7_TYPE type_dr7(HardwareType type)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ namespace GleeBug
|
||||||
\param b Second range.
|
\param b Second range.
|
||||||
\return True if a comes before b, false otherwise.
|
\return True if a comes before b, false otherwise.
|
||||||
*/
|
*/
|
||||||
inline bool operator()(const Range & a, const Range & b) const //a before b?
|
bool operator()(const Range & a, const Range & b) const //a before b?
|
||||||
{
|
{
|
||||||
return a.second < b.first;
|
return a.second < b.first;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,11 @@ namespace GleeBug
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BufferFile::~BufferFile()
|
||||||
|
{
|
||||||
|
BufferFile::Close();
|
||||||
|
}
|
||||||
|
|
||||||
bool BufferFile::Open()
|
bool BufferFile::Open()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -9,34 +9,35 @@ namespace GleeBug
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BufferFile(void* data, uint32 size);
|
BufferFile(void* data, uint32 size);
|
||||||
|
~BufferFile();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Opens an existing file.
|
\brief Opens an existing file.
|
||||||
\return true if the file was opened successfully, false otherwise.
|
\return true if the file was opened successfully, false otherwise.
|
||||||
*/
|
*/
|
||||||
virtual bool Open() override;
|
bool Open() override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Creates a new file.
|
\brief Creates a new file.
|
||||||
\param overwrite (Optional) true to overwrite, false to preserve fail if the file already exists.
|
\param overwrite (Optional) true to overwrite, false to preserve fail if the file already exists.
|
||||||
\return true if the file was created, false otherwise.
|
\return true if the file was created, false otherwise.
|
||||||
*/
|
*/
|
||||||
virtual bool Create(bool overwrite = true) override;
|
bool Create(bool overwrite = true) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Check if there is an open/created file.
|
\brief Check if there is an open/created file.
|
||||||
*/
|
*/
|
||||||
virtual bool IsOpen() const override;
|
bool IsOpen() const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Closes the file.
|
\brief Closes the file.
|
||||||
*/
|
*/
|
||||||
virtual void Close() override;
|
void Close() override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Gets the size of the file.
|
\brief Gets the size of the file.
|
||||||
*/
|
*/
|
||||||
virtual uint32 GetSize() const override;
|
uint32 GetSize() const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Reads from the open file.
|
\brief Reads from the open file.
|
||||||
|
|
@ -46,7 +47,7 @@ namespace GleeBug
|
||||||
\param [out] bytesRead (Optional) If set, returns the number of bytes read (even on failure).
|
\param [out] bytesRead (Optional) If set, returns the number of bytes read (even on failure).
|
||||||
\return true if the read was fully successful, false otherwise.
|
\return true if the read was fully successful, false otherwise.
|
||||||
*/
|
*/
|
||||||
virtual bool Read(uint32 offset, void* data, uint32 size, uint32* bytesRead = nullptr) const override;
|
bool Read(uint32 offset, void* data, uint32 size, uint32* bytesRead = nullptr) const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Writes to the open file.
|
\brief Writes to the open file.
|
||||||
|
|
@ -56,7 +57,7 @@ namespace GleeBug
|
||||||
\param [out] bytesWritten (Optional) If set, returns the number of bytes written (even on failure)
|
\param [out] bytesWritten (Optional) If set, returns the number of bytes written (even on failure)
|
||||||
\return true if the write was fully successful, false otherwise.
|
\return true if the write was fully successful, false otherwise.
|
||||||
*/
|
*/
|
||||||
virtual bool Write(uint32 offset, const void* data, uint32 size, uint32* bytesWritten = nullptr) override;
|
bool Write(uint32 offset, const void* data, uint32 size, uint32* bytesWritten = nullptr) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void* mData;
|
void* mData;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ namespace GleeBug
|
||||||
|
|
||||||
File::~File()
|
File::~File()
|
||||||
{
|
{
|
||||||
Close();
|
File::Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool File::Open()
|
bool File::Open()
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,11 @@ protected:
|
||||||
printf("Entry breakpoint deleted!\n");
|
printf("Entry breakpoint deleted!\n");
|
||||||
else
|
else
|
||||||
printf("Failed to delete entry breakpoint...\n");
|
printf("Failed to delete entry breakpoint...\n");
|
||||||
mThread->StepInto(std::bind([this]()
|
mThread->StepInto([this]()
|
||||||
{
|
{
|
||||||
printf("Step after entry breakpoint! GIP: 0x%p\n",
|
printf("Step after entry breakpoint! GIP: 0x%p\n",
|
||||||
mRegisters->Gip());
|
mRegisters->Gip());
|
||||||
}));
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void cbEntryHardwareBreakpoint(const BreakpointInfo & info)
|
void cbEntryHardwareBreakpoint(const BreakpointInfo & info)
|
||||||
|
|
@ -31,11 +31,11 @@ protected:
|
||||||
printf("Entry hardware breakpoint deleted!\n");
|
printf("Entry hardware breakpoint deleted!\n");
|
||||||
else
|
else
|
||||||
printf("Failed to delete entry hardware breakpoint...\n");
|
printf("Failed to delete entry hardware breakpoint...\n");
|
||||||
mThread->StepInto(std::bind([this]()
|
mThread->StepInto([this]()
|
||||||
{
|
{
|
||||||
printf("Step after entry hardware breakpoint! GIP: 0x%p\n",
|
printf("Step after entry hardware breakpoint! GIP: 0x%p\n",
|
||||||
mRegisters->Gip());
|
mRegisters->Gip());
|
||||||
}));
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void cbStepSystem()
|
void cbStepSystem()
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,4 @@
|
||||||
|
|
||||||
GleeBug is a **Debugging Framework for Windows** aimed at making debugging enjoyable. It should be complete and easy to use. Feel free to clone and send a pull request or report a bug!
|
GleeBug is a **Debugging Framework for Windows** aimed at making debugging enjoyable. It should be complete and easy to use. Feel free to clone and send a pull request or report a bug!
|
||||||
|
|
||||||
Notice that the project is currently very volatile so for this reason pull requests with new features might be rejected if I feel like they don't fit the future codebase.
|
Notice that the project is currently very volatile so for this reason pull requests with new features might be rejected if I feel like they don't fit the current codebase. If you plan on adding major features, please consider consulting me (mrexodia) so there isn't any time wasted.
|
||||||
|
|
|
||||||
|
|
@ -425,7 +425,7 @@ public:
|
||||||
|
|
||||||
bool DeleteHardwareBreakPoint(DWORD IndexOfRegister)
|
bool DeleteHardwareBreakPoint(DWORD IndexOfRegister)
|
||||||
{
|
{
|
||||||
if (!mProcess || IndexOfRegister < 0 || IndexOfRegister > 3)
|
if (!mProcess || IndexOfRegister > 3)
|
||||||
return false;
|
return false;
|
||||||
auto address = mProcess->hardwareBreakpoints[IndexOfRegister].address;
|
auto address = mProcess->hardwareBreakpoints[IndexOfRegister].address;
|
||||||
return mProcess->DeleteHardwareBreakpoint(address);
|
return mProcess->DeleteHardwareBreakpoint(address);
|
||||||
|
|
@ -524,7 +524,7 @@ protected:
|
||||||
}
|
}
|
||||||
|
|
||||||
private: //functions
|
private: //functions
|
||||||
static inline Registers::R registerFromDword(DWORD IndexOfRegister)
|
static Registers::R registerFromDword(DWORD IndexOfRegister)
|
||||||
{
|
{
|
||||||
switch (IndexOfRegister)
|
switch (IndexOfRegister)
|
||||||
{
|
{
|
||||||
|
|
@ -571,19 +571,19 @@ private: //functions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ThreadInfo* threadFromHandle(HANDLE hThread) const
|
ThreadInfo* threadFromHandle(HANDLE hThread) const
|
||||||
{
|
{
|
||||||
//TODO: properly implement this
|
//TODO: properly implement this
|
||||||
return mThread;
|
return mThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ProcessInfo* processFromHandle(HANDLE hProcess) const
|
ProcessInfo* processFromHandle(HANDLE hProcess) const
|
||||||
{
|
{
|
||||||
//TODO: properly implement this
|
//TODO: properly implement this
|
||||||
return mProcess;
|
return mProcess;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline HardwareType hwtypeFromTitan(DWORD type)
|
static HardwareType hwtypeFromTitan(DWORD type)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
|
@ -598,7 +598,7 @@ private: //functions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline HardwareSize hwsizeFromTitan(DWORD size)
|
static HardwareSize hwsizeFromTitan(DWORD size)
|
||||||
{
|
{
|
||||||
switch (size)
|
switch (size)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue