PROJECT+DBG+GUI: formatting (forgot to commit the correct formatting options for x64dbg)
This commit is contained in:
parent
5582730485
commit
96f04cdb63
Binary file not shown.
|
@ -16,7 +16,7 @@ extern GUISENDMESSAGEASYNC _gui_sendmessageasync;
|
|||
|
||||
//DBG typedefs
|
||||
typedef const char* (*DBGDBGINIT)();
|
||||
typedef duint (*DBGMEMFINDBASEADDR)(duint addr, duint* size);
|
||||
typedef duint(*DBGMEMFINDBASEADDR)(duint addr, duint* size);
|
||||
typedef bool (*DBGMEMREAD)(duint addr, unsigned char* dest, duint size, duint* read);
|
||||
typedef bool (*DBGMEMWRITE)(duint addr, const unsigned char* src, duint size, duint* written);
|
||||
typedef bool (*DBGDBGCMDEXEC)(const char* cmd);
|
||||
|
@ -27,14 +27,14 @@ typedef bool (*DBGISDEBUGGING)();
|
|||
typedef bool (*DBGISJUMPGOINGTOEXECUTE)(duint addr);
|
||||
typedef bool (*DBGADDRINFOGET)(duint addr, SEGMENTREG segment, ADDRINFO* addrinfo);
|
||||
typedef bool (*DBGADDRINFOSET)(duint addr, ADDRINFO* addrinfo);
|
||||
typedef BPXTYPE (*DBGBPGETTYPEAT)(duint addr);
|
||||
typedef BPXTYPE(*DBGBPGETTYPEAT)(duint addr);
|
||||
typedef bool (*DBGGETREGDUMP)(REGDUMP* regdump);
|
||||
typedef bool (*DBGVALTOSTRING)(const char* string, duint value);
|
||||
typedef bool (*DBGMEMISVALIDREADPTR)(duint addr);
|
||||
typedef int (*DBGGETBPLIST)(BPXTYPE type, BPMAP* bplist);
|
||||
typedef bool (*DBGDBGCMDEXECDIRECT)(const char* cmd);
|
||||
typedef duint (*DBGGETBRANCHDESTINATION)(duint addr);
|
||||
typedef duint (*DBGSENDMESSAGE)(DBGMSG type, void* param1, void* param2);
|
||||
typedef duint(*DBGGETBRANCHDESTINATION)(duint addr);
|
||||
typedef duint(*DBGSENDMESSAGE)(DBGMSG type, void* param1, void* param2);
|
||||
|
||||
//DBG functions
|
||||
extern DBGDBGINIT _dbg_dbginit;
|
||||
|
|
|
@ -249,7 +249,7 @@ BRIDGE_IMPEXP bool DbgMemRead(duint va, unsigned char* dest, duint size)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!_dbg_memread(va, dest, size, 0))
|
||||
if(!_dbg_memread(va, dest, size, 0))
|
||||
{
|
||||
// Zero the buffer on failure
|
||||
memset(dest, 0, size);
|
||||
|
@ -1251,7 +1251,7 @@ BRIDGE_IMPEXP void GuiDumpAtN(duint va, int index)
|
|||
}
|
||||
|
||||
|
||||
BRIDGE_IMPEXP void GuiDisplayWarning(const char *title, const char *text)
|
||||
BRIDGE_IMPEXP void GuiDisplayWarning(const char* title, const char* text)
|
||||
{
|
||||
_gui_sendmessage(GUI_DISPLAY_WARNING, (void*) title, (void*) text);
|
||||
}
|
||||
|
|
|
@ -145,7 +145,6 @@ typedef enum
|
|||
DBG_SCRIPT_SETIP, // param1=int line, param2=unused
|
||||
DBG_SCRIPT_GETBRANCHINFO, // param1=int line, param2=SCRIPTBRANCH* info
|
||||
DBG_SYMBOL_ENUM, // param1=SYMBOLCBINFO* cbInfo, param2=unused
|
||||
DBG_SYMBOL_ENUM_FROMCACHE, // param1=SYMBOLCBINFO* cbInfo, param2=unused
|
||||
DBG_ASSEMBLE_AT, // param1=duint addr, param2=const char* instruction
|
||||
DBG_MODBASE_FROM_NAME, // param1=const char* modname, param2=unused
|
||||
DBG_DISASM_AT, // param1=duint addr, param2=DISASM_INSTR* instr
|
||||
|
@ -178,7 +177,8 @@ typedef enum
|
|||
DBG_WIN_EVENT_GLOBAL, // param1=MSG* message, param2=unused
|
||||
DBG_INITIALIZE_LOCKS, // param1=unused, param2=unused
|
||||
DBG_DEINITIALIZE_LOCKS, // param1=unused, param2=unused
|
||||
DBG_GET_TIME_WASTED_COUNTER // param1=unused, param2=unused
|
||||
DBG_GET_TIME_WASTED_COUNTER, // param1=unused, param2=unused
|
||||
DBG_SYMBOL_ENUM_FROMCACHE, // param1=SYMBOLCBINFO* cbInfo, param2=unused
|
||||
} DBGMSG;
|
||||
|
||||
typedef enum
|
||||
|
@ -888,7 +888,7 @@ BRIDGE_IMPEXP void GuiGetGlobalNotes(char** text);
|
|||
BRIDGE_IMPEXP void GuiSetDebuggeeNotes(const char* text);
|
||||
BRIDGE_IMPEXP void GuiGetDebuggeeNotes(char** text);
|
||||
BRIDGE_IMPEXP void GuiDumpAtN(duint va, int index);
|
||||
BRIDGE_IMPEXP void GuiDisplayWarning(const char *title, const char *text);
|
||||
BRIDGE_IMPEXP void GuiDisplayWarning(const char* title, const char* text);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ bool FunctionPass::Analyse()
|
|||
// Initialize thread vector
|
||||
auto threadFunctions = new std::vector<FunctionDef>[IdealThreadCount()];
|
||||
|
||||
concurrency::parallel_for(duint (0), IdealThreadCount(), [&](duint i)
|
||||
concurrency::parallel_for(duint(0), IdealThreadCount(), [&](duint i)
|
||||
{
|
||||
// Memory allocation optimization
|
||||
// TODO: Option to conserve memory
|
||||
|
@ -174,23 +174,23 @@ void FunctionPass::AnalysisWorker(duint Start, duint End, std::vector<FunctionDe
|
|||
BasicBlock* finalBlock = &m_MainBlocks.back();
|
||||
|
||||
duint virtEnd = 0;
|
||||
for (duint i = Start; i < End; i++, ++blockItr)
|
||||
for(duint i = Start; i < End; i++, ++blockItr)
|
||||
{
|
||||
if (blockItr->VirtualStart < virtEnd)
|
||||
if(blockItr->VirtualStart < virtEnd)
|
||||
continue;
|
||||
|
||||
// Skip padding
|
||||
if (blockItr->GetFlag(BASIC_BLOCK_FLAG_PAD))
|
||||
if(blockItr->GetFlag(BASIC_BLOCK_FLAG_PAD))
|
||||
continue;
|
||||
|
||||
// Is the block untouched?
|
||||
if (blockItr->GetFlag(BASIC_BLOCK_FLAG_FUNCTION))
|
||||
if(blockItr->GetFlag(BASIC_BLOCK_FLAG_FUNCTION))
|
||||
continue;
|
||||
|
||||
// Try to define a function
|
||||
FunctionDef def { blockItr->VirtualStart, 0, 0, 0, 0 };
|
||||
|
||||
if (ResolveFunctionEnd(&def, finalBlock))
|
||||
if(ResolveFunctionEnd(&def, finalBlock))
|
||||
{
|
||||
Blocks->push_back(def);
|
||||
virtEnd = def.VirtualEnd;
|
||||
|
@ -268,7 +268,7 @@ bool FunctionPass::ResolveKnownFunctionEnd(FunctionDef* Function)
|
|||
Function->BBlockEnd = FindBBlockIndex(endBlock);
|
||||
|
||||
// Set the flag for blocks that have been scanned
|
||||
for (BasicBlock* block = startBlock; (duint)block <= (duint)endBlock; block++)
|
||||
for(BasicBlock* block = startBlock; (duint)block <= (duint)endBlock; block++)
|
||||
{
|
||||
// Block now in use
|
||||
block->SetFlag(BASIC_BLOCK_FLAG_FUNCTION);
|
||||
|
@ -302,7 +302,7 @@ bool FunctionPass::ResolveFunctionEnd(FunctionDef* Function, BasicBlock* LastBlo
|
|||
// Loop forever until the end is found
|
||||
for(; (duint)block <= (duint)LastBlock; block++)
|
||||
{
|
||||
if (block->GetFlag(BASIC_BLOCK_FLAG_CALL_TARGET) && block->VirtualStart != Function->VirtualStart)
|
||||
if(block->GetFlag(BASIC_BLOCK_FLAG_CALL_TARGET) && block->VirtualStart != Function->VirtualStart)
|
||||
{
|
||||
block--;
|
||||
break;
|
||||
|
@ -320,14 +320,14 @@ bool FunctionPass::ResolveFunctionEnd(FunctionDef* Function, BasicBlock* LastBlo
|
|||
// Find maximum jump target
|
||||
if(!block->GetFlag(BASIC_BLOCK_FLAG_CALL) && !block->GetFlag(BASIC_BLOCK_FLAG_INDIRECT))
|
||||
{
|
||||
if (block->Target != 0 && block->Target >= maximumAddr)
|
||||
if(block->Target != 0 && block->Target >= maximumAddr)
|
||||
{
|
||||
// Here's a problem: Compilers add tail-call elimination with a jump.
|
||||
// Solve this by creating a maximum jump limit.
|
||||
auto targetBlock = FindBBlockInRange(block->Target);
|
||||
|
||||
// If (target block found) and (target block is not called)
|
||||
if (targetBlock && !targetBlock->GetFlag(BASIC_BLOCK_FLAG_CALL_TARGET))
|
||||
if(targetBlock && !targetBlock->GetFlag(BASIC_BLOCK_FLAG_CALL_TARGET))
|
||||
{
|
||||
duint blockEnd = targetBlock->VirtualEnd;
|
||||
|
||||
|
@ -344,19 +344,19 @@ bool FunctionPass::ResolveFunctionEnd(FunctionDef* Function, BasicBlock* LastBlo
|
|||
// Where INT3 will align "some_func" to 4, 8, 12, or 16.
|
||||
// INT3 padding is also optional (if the jump fits perfectly).
|
||||
//
|
||||
if (true/*block->GetFlag(BASIC_BLOCK_FLAG_ABSJMP)*/)
|
||||
if(true/*block->GetFlag(BASIC_BLOCK_FLAG_ABSJMP)*/)
|
||||
{
|
||||
|
||||
{
|
||||
// Check if padding is aligned to 4
|
||||
auto nextBlock = block + 1;
|
||||
|
||||
if ((duint)nextBlock <= (duint)LastBlock)
|
||||
if((duint)nextBlock <= (duint)LastBlock)
|
||||
{
|
||||
if (nextBlock->GetFlag(BASIC_BLOCK_FLAG_PAD))
|
||||
if(nextBlock->GetFlag(BASIC_BLOCK_FLAG_PAD))
|
||||
{
|
||||
// If this block is aligned to 4 bytes at the end
|
||||
if ((nextBlock->VirtualEnd + 1) % 4 == 0)
|
||||
if((nextBlock->VirtualEnd + 1) % 4 == 0)
|
||||
blockEnd = block->VirtualEnd;
|
||||
}
|
||||
}
|
||||
|
@ -392,7 +392,7 @@ bool FunctionPass::ResolveFunctionEnd(FunctionDef* Function, BasicBlock* LastBlo
|
|||
if(block->GetFlag(BASIC_BLOCK_FLAG_ABSJMP))
|
||||
{
|
||||
// 2.
|
||||
if (block->VirtualEnd == maximumAddr)
|
||||
if(block->VirtualEnd == maximumAddr)
|
||||
break;
|
||||
|
||||
// 3.
|
||||
|
@ -422,7 +422,7 @@ void FunctionPass::EnumerateFunctionRuntimeEntries64(std::function<bool (PRUNTIM
|
|||
size_t totalCount = (m_FunctionInfoSize / sizeof(RUNTIME_FUNCTION));
|
||||
|
||||
// Enumerate each entry
|
||||
for (size_t i = 0; i < totalCount; i++)
|
||||
for(size_t i = 0; i < totalCount; i++)
|
||||
{
|
||||
if(!Callback(&functionTable[i]))
|
||||
break;
|
||||
|
|
|
@ -33,7 +33,7 @@ bool LinearPass::Analyse()
|
|||
// Initialize thread vector
|
||||
auto threadBlocks = new std::vector<BasicBlock>[IdealThreadCount()];
|
||||
|
||||
concurrency::parallel_for(duint (0), IdealThreadCount(), [&](duint i)
|
||||
concurrency::parallel_for(duint(0), IdealThreadCount(), [&](duint i)
|
||||
{
|
||||
duint threadWorkStart = m_VirtualStart + (workAmount * i);
|
||||
duint threadWorkStop = min((threadWorkStart + workAmount), m_VirtualEnd);
|
||||
|
@ -95,7 +95,7 @@ void LinearPass::AnalyseOverlaps()
|
|||
// Initialize thread vectors
|
||||
auto threadInserts = new std::vector<BasicBlock>[IdealThreadCount()];
|
||||
|
||||
concurrency::parallel_for(duint (0), IdealThreadCount(), [&](duint i)
|
||||
concurrency::parallel_for(duint(0), IdealThreadCount(), [&](duint i)
|
||||
{
|
||||
duint threadWorkStart = (workAmount * i);
|
||||
duint threadWorkStop = min((threadWorkStart + workAmount), workTotal);
|
||||
|
@ -208,16 +208,16 @@ void LinearPass::AnalysisWorker(duint Start, duint End, BBlockArray* Blocks)
|
|||
lastBlock->InstrCount = insnCount;
|
||||
insnCount = 0;
|
||||
|
||||
if (!padding)
|
||||
if(!padding)
|
||||
{
|
||||
// Check if absolute jump, regardless of operand
|
||||
if (disasm.GetId() == X86_INS_JMP)
|
||||
if(disasm.GetId() == X86_INS_JMP)
|
||||
block->SetFlag(BASIC_BLOCK_FLAG_ABSJMP);
|
||||
|
||||
// Figure out the operand type(s)
|
||||
const auto& operand = disasm.x86().operands[0];
|
||||
const auto & operand = disasm.x86().operands[0];
|
||||
|
||||
if (operand.type == X86_OP_IMM)
|
||||
if(operand.type == X86_OP_IMM)
|
||||
{
|
||||
// Branch target immediate
|
||||
block->Target = (duint)operand.imm;
|
||||
|
@ -227,7 +227,7 @@ void LinearPass::AnalysisWorker(duint Start, duint End, BBlockArray* Blocks)
|
|||
// Indirects (no operand, register, or memory)
|
||||
block->SetFlag(BASIC_BLOCK_FLAG_INDIRECT);
|
||||
|
||||
if (operand.type == X86_OP_MEM &&
|
||||
if(operand.type == X86_OP_MEM &&
|
||||
operand.mem.base == X86_REG_RIP &&
|
||||
operand.mem.index == X86_REG_INVALID &&
|
||||
operand.mem.scale == 1)
|
||||
|
@ -288,13 +288,13 @@ void LinearPass::AnalysisOverlapWorker(duint Start, duint End, BBlockArray* Inse
|
|||
{
|
||||
removal = FindBBlockInRange(curr->Target);
|
||||
|
||||
if (removal)
|
||||
if(removal)
|
||||
{
|
||||
if (curr->GetFlag(BASIC_BLOCK_FLAG_CALL))
|
||||
if(curr->GetFlag(BASIC_BLOCK_FLAG_CALL))
|
||||
removal->SetFlag(BASIC_BLOCK_FLAG_CALL_TARGET);
|
||||
|
||||
// If the target does not equal the block start...
|
||||
if (curr->Target != removal->VirtualStart)
|
||||
if(curr->Target != removal->VirtualStart)
|
||||
{
|
||||
// Mark for deletion
|
||||
removal->SetFlag(BASIC_BLOCK_FLAG_DELETE);
|
||||
|
|
|
@ -36,9 +36,9 @@ typedef struct
|
|||
typedef bool (*ASSEMBLEATEX)(duint addr, const char* instruction, char* error, bool fillnop);
|
||||
typedef bool (*SECTIONFROMADDR)(duint addr, char* section);
|
||||
typedef bool (*MODNAMEFROMADDR)(duint addr, char* modname, bool extension);
|
||||
typedef duint (*MODBASEFROMADDR)(duint addr);
|
||||
typedef duint (*MODBASEFROMNAME)(const char* modname);
|
||||
typedef duint (*MODSIZEFROMADDR)(duint addr);
|
||||
typedef duint(*MODBASEFROMADDR)(duint addr);
|
||||
typedef duint(*MODBASEFROMNAME)(const char* modname);
|
||||
typedef duint(*MODSIZEFROMADDR)(duint addr);
|
||||
typedef bool (*ASSEMBLE)(duint addr, unsigned char* dest, int* size, const char* instruction, char* error);
|
||||
typedef bool (*PATCHGET)(duint addr);
|
||||
typedef bool (*PATCHINRANGE)(duint start, duint end);
|
||||
|
@ -63,9 +63,9 @@ typedef bool (*PAGERIGHTSTOSTRING)(DWORD protect, char* rights);
|
|||
typedef bool (*ISPROCESSELEVATED)();
|
||||
typedef bool (*GETCMDLINE)(char* cmdline, size_t* cbsize);
|
||||
typedef bool (*SETCMDLINE)(const char* cmdline);
|
||||
typedef duint (*FILEOFFSETTOVA)(const char* modname, duint offset);
|
||||
typedef duint (*VATOFILEOFFSET)(duint va);
|
||||
typedef duint (*GETADDRFROMLINE)(const char* szSourceFile, int line);
|
||||
typedef duint(*FILEOFFSETTOVA)(const char* modname, duint offset);
|
||||
typedef duint(*VATOFILEOFFSET)(duint va);
|
||||
typedef duint(*GETADDRFROMLINE)(const char* szSourceFile, int line);
|
||||
typedef bool (*GETSOURCEFROMADDR)(duint addr, char* szSourceFile, int* line);
|
||||
typedef bool (*VALFROMSTRING)(const char* string, duint* value);
|
||||
|
||||
|
|
|
@ -103,11 +103,11 @@ extern "C" DLL_EXPORT bool _dbg_isjumpgoingtoexecute(duint addr)
|
|||
|
||||
static bool shouldFilterSymbol(const char* name)
|
||||
{
|
||||
if (!name)
|
||||
if(!name)
|
||||
return true;
|
||||
if (!strcmp(name, "`string'"))
|
||||
if(!strcmp(name, "`string'"))
|
||||
return true;
|
||||
if (strstr(name, "__imp_") == name || strstr(name, "_imp_") == name)
|
||||
if(strstr(name, "__imp_") == name || strstr(name, "_imp_") == name)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ static bool shouldFilterSymbol(const char* name)
|
|||
static bool getLabel(duint addr, char* label)
|
||||
{
|
||||
bool retval = false;
|
||||
if (LabelGet(addr, label))
|
||||
if(LabelGet(addr, label))
|
||||
retval = true;
|
||||
else //no user labels
|
||||
{
|
||||
|
@ -124,45 +124,45 @@ static bool getLabel(duint addr, char* label)
|
|||
PSYMBOL_INFO pSymbol = (PSYMBOL_INFO)buffer;
|
||||
pSymbol->SizeOfStruct = sizeof(SYMBOL_INFO);
|
||||
pSymbol->MaxNameLen = MAX_LABEL_SIZE;
|
||||
if (SafeSymFromAddr(fdProcessInfo->hProcess, (DWORD64)addr, &displacement, pSymbol) && !displacement)
|
||||
if(SafeSymFromAddr(fdProcessInfo->hProcess, (DWORD64)addr, &displacement, pSymbol) && !displacement)
|
||||
{
|
||||
pSymbol->Name[pSymbol->MaxNameLen - 1] = '\0';
|
||||
if (!bUndecorateSymbolNames || !SafeUnDecorateSymbolName(pSymbol->Name, label, MAX_LABEL_SIZE, UNDNAME_COMPLETE))
|
||||
if(!bUndecorateSymbolNames || !SafeUnDecorateSymbolName(pSymbol->Name, label, MAX_LABEL_SIZE, UNDNAME_COMPLETE))
|
||||
strcpy_s(label, MAX_LABEL_SIZE, pSymbol->Name);
|
||||
retval = !shouldFilterSymbol(label);
|
||||
}
|
||||
if (!retval) //search for CALL <jmp.&user32.MessageBoxA>
|
||||
if(!retval) //search for CALL <jmp.&user32.MessageBoxA>
|
||||
{
|
||||
BASIC_INSTRUCTION_INFO basicinfo;
|
||||
memset(&basicinfo, 0, sizeof(BASIC_INSTRUCTION_INFO));
|
||||
if (disasmfast(addr, &basicinfo) && basicinfo.branch && !basicinfo.call && basicinfo.memory.value) //thing is a JMP
|
||||
if(disasmfast(addr, &basicinfo) && basicinfo.branch && !basicinfo.call && basicinfo.memory.value) //thing is a JMP
|
||||
{
|
||||
duint val = 0;
|
||||
if (MemRead(basicinfo.memory.value, &val, sizeof(val)))
|
||||
if(MemRead(basicinfo.memory.value, &val, sizeof(val)))
|
||||
{
|
||||
if (SafeSymFromAddr(fdProcessInfo->hProcess, (DWORD64)val, &displacement, pSymbol) && !displacement)
|
||||
if(SafeSymFromAddr(fdProcessInfo->hProcess, (DWORD64)val, &displacement, pSymbol) && !displacement)
|
||||
{
|
||||
pSymbol->Name[pSymbol->MaxNameLen - 1] = '\0';
|
||||
if (!bUndecorateSymbolNames || !SafeUnDecorateSymbolName(pSymbol->Name, label, MAX_LABEL_SIZE, UNDNAME_COMPLETE))
|
||||
if(!bUndecorateSymbolNames || !SafeUnDecorateSymbolName(pSymbol->Name, label, MAX_LABEL_SIZE, UNDNAME_COMPLETE))
|
||||
sprintf_s(label, MAX_LABEL_SIZE, "JMP.&%s", pSymbol->Name);
|
||||
retval = !shouldFilterSymbol(label);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!retval) //search for module entry
|
||||
if(!retval) //search for module entry
|
||||
{
|
||||
duint entry = ModEntryFromAddr(addr);
|
||||
if (entry && entry == addr)
|
||||
if(entry && entry == addr)
|
||||
{
|
||||
strcpy_s(label, MAX_LABEL_SIZE, "EntryPoint");
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
if (!retval) //search for function+offset
|
||||
if(!retval) //search for function+offset
|
||||
{
|
||||
duint start;
|
||||
if (FunctionGet(addr, &start, nullptr) && addr == start)
|
||||
if(FunctionGet(addr, &start, nullptr) && addr == start)
|
||||
{
|
||||
sprintf_s(label, MAX_LABEL_SIZE, "sub_%" fext "X", start);
|
||||
retval = true;
|
||||
|
@ -193,7 +193,7 @@ extern "C" DLL_EXPORT bool _dbg_addrinfoget(duint addr, SEGMENTREG segment, ADDR
|
|||
}
|
||||
if(addrinfo->flags & flagfunction)
|
||||
{
|
||||
if (FunctionGet(addr, &addrinfo->function.start, &addrinfo->function.end, &addrinfo->function.instrcount))
|
||||
if(FunctionGet(addr, &addrinfo->function.start, &addrinfo->function.end, &addrinfo->function.instrcount))
|
||||
retval = true;
|
||||
}
|
||||
if(addrinfo->flags & flagloop)
|
||||
|
|
|
@ -60,7 +60,7 @@ void* erealloc(void* ptr, size_t size, const char* reason)
|
|||
ASSERT_NONZERO(size);
|
||||
|
||||
// Free the memory if the pointer was set (as per documentation).
|
||||
if (ptr)
|
||||
if(ptr)
|
||||
efree(ptr);
|
||||
|
||||
return emalloc(size, reason);
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Assembler
|
||||
{
|
||||
SCRIPT_EXPORT bool Assemble(duint addr, unsigned char* dest, int* size, const char* instruction); //dest[16]
|
||||
SCRIPT_EXPORT bool AssembleEx(duint addr, unsigned char* dest, int* size, const char* instruction, char* error); //dest[16], error[MAX_ERROR_SIZE]
|
||||
SCRIPT_EXPORT bool AssembleMem(duint addr, const char* instruction);
|
||||
SCRIPT_EXPORT bool AssembleMemEx(duint addr, const char* instruction, int* size, char* error, bool fillnop); //error[MAX_ERROR_SIZE]
|
||||
}; //Assembler
|
||||
namespace Assembler
|
||||
{
|
||||
SCRIPT_EXPORT bool Assemble(duint addr, unsigned char* dest, int* size, const char* instruction); //dest[16]
|
||||
SCRIPT_EXPORT bool AssembleEx(duint addr, unsigned char* dest, int* size, const char* instruction, char* error); //dest[16], error[MAX_ERROR_SIZE]
|
||||
SCRIPT_EXPORT bool AssembleMem(duint addr, const char* instruction);
|
||||
SCRIPT_EXPORT bool AssembleMemEx(duint addr, const char* instruction, int* size, char* error, bool fillnop); //error[MAX_ERROR_SIZE]
|
||||
}; //Assembler
|
||||
}; //Script
|
||||
|
||||
#endif //_SCRIPTAPI_ASSEMBLER_H
|
|
@ -5,27 +5,27 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Debug
|
||||
{
|
||||
enum HardwareType
|
||||
{
|
||||
HardwareAccess,
|
||||
HardwareWrite,
|
||||
HardwareExecute
|
||||
};
|
||||
namespace Debug
|
||||
{
|
||||
enum HardwareType
|
||||
{
|
||||
HardwareAccess,
|
||||
HardwareWrite,
|
||||
HardwareExecute
|
||||
};
|
||||
|
||||
SCRIPT_EXPORT void Wait();
|
||||
SCRIPT_EXPORT void Run();
|
||||
SCRIPT_EXPORT void Pause();
|
||||
SCRIPT_EXPORT void Stop();
|
||||
SCRIPT_EXPORT void StepIn();
|
||||
SCRIPT_EXPORT void StepOver();
|
||||
SCRIPT_EXPORT void StepOut();
|
||||
SCRIPT_EXPORT bool SetBreakpoint(duint address);
|
||||
SCRIPT_EXPORT bool DeleteBreakpoint(duint address);
|
||||
SCRIPT_EXPORT bool SetHardwareBreakpoint(duint address, HardwareType type = HardwareExecute);
|
||||
SCRIPT_EXPORT bool DeleteHardwareBreakpoint(duint address);
|
||||
}; //Debug
|
||||
SCRIPT_EXPORT void Wait();
|
||||
SCRIPT_EXPORT void Run();
|
||||
SCRIPT_EXPORT void Pause();
|
||||
SCRIPT_EXPORT void Stop();
|
||||
SCRIPT_EXPORT void StepIn();
|
||||
SCRIPT_EXPORT void StepOver();
|
||||
SCRIPT_EXPORT void StepOut();
|
||||
SCRIPT_EXPORT bool SetBreakpoint(duint address);
|
||||
SCRIPT_EXPORT bool DeleteBreakpoint(duint address);
|
||||
SCRIPT_EXPORT bool SetHardwareBreakpoint(duint address, HardwareType type = HardwareExecute);
|
||||
SCRIPT_EXPORT bool DeleteHardwareBreakpoint(duint address);
|
||||
}; //Debug
|
||||
}; //Script
|
||||
|
||||
#endif //_SCRIPTAPI_DEBUG_H
|
|
@ -5,43 +5,43 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Flag
|
||||
{
|
||||
enum FlagEnum
|
||||
{
|
||||
ZF,
|
||||
OF,
|
||||
CF,
|
||||
PF,
|
||||
SF,
|
||||
TF,
|
||||
AF,
|
||||
DF,
|
||||
IF
|
||||
};
|
||||
namespace Flag
|
||||
{
|
||||
enum FlagEnum
|
||||
{
|
||||
ZF,
|
||||
OF,
|
||||
CF,
|
||||
PF,
|
||||
SF,
|
||||
TF,
|
||||
AF,
|
||||
DF,
|
||||
IF
|
||||
};
|
||||
|
||||
SCRIPT_EXPORT bool Get(FlagEnum flag);
|
||||
SCRIPT_EXPORT bool Set(FlagEnum flag, bool value);
|
||||
SCRIPT_EXPORT bool Get(FlagEnum flag);
|
||||
SCRIPT_EXPORT bool Set(FlagEnum flag, bool value);
|
||||
|
||||
SCRIPT_EXPORT bool GetZF();
|
||||
SCRIPT_EXPORT bool SetZF(bool value);
|
||||
SCRIPT_EXPORT bool GetOF();
|
||||
SCRIPT_EXPORT bool SetOF(bool value);
|
||||
SCRIPT_EXPORT bool GetCF();
|
||||
SCRIPT_EXPORT bool SetCF(bool value);
|
||||
SCRIPT_EXPORT bool GetPF();
|
||||
SCRIPT_EXPORT bool SetPF(bool value);
|
||||
SCRIPT_EXPORT bool GetSF();
|
||||
SCRIPT_EXPORT bool SetSF(bool value);
|
||||
SCRIPT_EXPORT bool GetTF();
|
||||
SCRIPT_EXPORT bool SetTF(bool value);
|
||||
SCRIPT_EXPORT bool GetAF();
|
||||
SCRIPT_EXPORT bool SetAF(bool value);
|
||||
SCRIPT_EXPORT bool GetDF();
|
||||
SCRIPT_EXPORT bool SetDF(bool value);
|
||||
SCRIPT_EXPORT bool GetIF();
|
||||
SCRIPT_EXPORT bool SetIF(bool value);
|
||||
};
|
||||
SCRIPT_EXPORT bool GetZF();
|
||||
SCRIPT_EXPORT bool SetZF(bool value);
|
||||
SCRIPT_EXPORT bool GetOF();
|
||||
SCRIPT_EXPORT bool SetOF(bool value);
|
||||
SCRIPT_EXPORT bool GetCF();
|
||||
SCRIPT_EXPORT bool SetCF(bool value);
|
||||
SCRIPT_EXPORT bool GetPF();
|
||||
SCRIPT_EXPORT bool SetPF(bool value);
|
||||
SCRIPT_EXPORT bool GetSF();
|
||||
SCRIPT_EXPORT bool SetSF(bool value);
|
||||
SCRIPT_EXPORT bool GetTF();
|
||||
SCRIPT_EXPORT bool SetTF(bool value);
|
||||
SCRIPT_EXPORT bool GetAF();
|
||||
SCRIPT_EXPORT bool SetAF(bool value);
|
||||
SCRIPT_EXPORT bool GetDF();
|
||||
SCRIPT_EXPORT bool SetDF(bool value);
|
||||
SCRIPT_EXPORT bool GetIF();
|
||||
SCRIPT_EXPORT bool SetIF(bool value);
|
||||
};
|
||||
};
|
||||
|
||||
#endif //_SCRIPTAPI_FLAG_H
|
|
@ -5,56 +5,56 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Gui
|
||||
{
|
||||
namespace Disassembly
|
||||
{
|
||||
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
|
||||
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
|
||||
SCRIPT_EXPORT duint SelectionGetStart();
|
||||
SCRIPT_EXPORT duint SelectionGetEnd();
|
||||
}; //Disassembly
|
||||
namespace Gui
|
||||
{
|
||||
namespace Disassembly
|
||||
{
|
||||
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
|
||||
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
|
||||
SCRIPT_EXPORT duint SelectionGetStart();
|
||||
SCRIPT_EXPORT duint SelectionGetEnd();
|
||||
}; //Disassembly
|
||||
|
||||
namespace Dump
|
||||
{
|
||||
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
|
||||
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
|
||||
SCRIPT_EXPORT duint SelectionGetStart();
|
||||
SCRIPT_EXPORT duint SelectionGetEnd();
|
||||
}; //Dump
|
||||
namespace Dump
|
||||
{
|
||||
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
|
||||
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
|
||||
SCRIPT_EXPORT duint SelectionGetStart();
|
||||
SCRIPT_EXPORT duint SelectionGetEnd();
|
||||
}; //Dump
|
||||
|
||||
namespace Stack
|
||||
{
|
||||
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
|
||||
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
|
||||
SCRIPT_EXPORT duint SelectionGetStart();
|
||||
SCRIPT_EXPORT duint SelectionGetEnd();
|
||||
}; //Stack
|
||||
}; //Gui
|
||||
namespace Stack
|
||||
{
|
||||
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
|
||||
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
|
||||
SCRIPT_EXPORT duint SelectionGetStart();
|
||||
SCRIPT_EXPORT duint SelectionGetEnd();
|
||||
}; //Stack
|
||||
}; //Gui
|
||||
|
||||
namespace Gui
|
||||
{
|
||||
enum Window
|
||||
{
|
||||
DisassemblyWindow,
|
||||
DumpWindow,
|
||||
StackWindow
|
||||
};
|
||||
namespace Gui
|
||||
{
|
||||
enum Window
|
||||
{
|
||||
DisassemblyWindow,
|
||||
DumpWindow,
|
||||
StackWindow
|
||||
};
|
||||
|
||||
SCRIPT_EXPORT bool SelectionGet(Window window, duint* start, duint* end);
|
||||
SCRIPT_EXPORT bool SelectionSet(Window window, duint start, duint end);
|
||||
SCRIPT_EXPORT duint SelectionGetStart(Window window);
|
||||
SCRIPT_EXPORT duint SelectionGetEnd(Window window);
|
||||
SCRIPT_EXPORT void Message(const char* message);
|
||||
SCRIPT_EXPORT bool MessageYesNo(const char* message);
|
||||
SCRIPT_EXPORT bool InputLine(const char* title, char* text); //text[GUI_MAX_LINE_SIZE]
|
||||
SCRIPT_EXPORT bool InputValue(const char* title, duint* value);
|
||||
SCRIPT_EXPORT void Refresh();
|
||||
SCRIPT_EXPORT void AddQWidgetTab(void* qWidget);
|
||||
SCRIPT_EXPORT void ShowQWidgetTab(void* qWidget);
|
||||
SCRIPT_EXPORT void CloseQWidgetTab(void* qWidget);
|
||||
SCRIPT_EXPORT bool SelectionGet(Window window, duint* start, duint* end);
|
||||
SCRIPT_EXPORT bool SelectionSet(Window window, duint start, duint end);
|
||||
SCRIPT_EXPORT duint SelectionGetStart(Window window);
|
||||
SCRIPT_EXPORT duint SelectionGetEnd(Window window);
|
||||
SCRIPT_EXPORT void Message(const char* message);
|
||||
SCRIPT_EXPORT bool MessageYesNo(const char* message);
|
||||
SCRIPT_EXPORT bool InputLine(const char* title, char* text); //text[GUI_MAX_LINE_SIZE]
|
||||
SCRIPT_EXPORT bool InputValue(const char* title, duint* value);
|
||||
SCRIPT_EXPORT void Refresh();
|
||||
SCRIPT_EXPORT void AddQWidgetTab(void* qWidget);
|
||||
SCRIPT_EXPORT void ShowQWidgetTab(void* qWidget);
|
||||
SCRIPT_EXPORT void CloseQWidgetTab(void* qWidget);
|
||||
|
||||
}; //Gui
|
||||
}; //Gui
|
||||
}; //Script
|
||||
|
||||
#endif //_SCRIPTAPI_GUI_H
|
|
@ -5,25 +5,25 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Memory
|
||||
{
|
||||
SCRIPT_EXPORT bool Read(duint addr, void* data, duint size, duint* sizeRead);
|
||||
SCRIPT_EXPORT bool Write(duint addr, const void* data, duint size, duint* sizeWritten);
|
||||
SCRIPT_EXPORT bool IsValidPtr(duint addr);
|
||||
SCRIPT_EXPORT duint RemoteAlloc(duint addr, duint size);
|
||||
SCRIPT_EXPORT bool RemoteFree(duint addr);
|
||||
namespace Memory
|
||||
{
|
||||
SCRIPT_EXPORT bool Read(duint addr, void* data, duint size, duint* sizeRead);
|
||||
SCRIPT_EXPORT bool Write(duint addr, const void* data, duint size, duint* sizeWritten);
|
||||
SCRIPT_EXPORT bool IsValidPtr(duint addr);
|
||||
SCRIPT_EXPORT duint RemoteAlloc(duint addr, duint size);
|
||||
SCRIPT_EXPORT bool RemoteFree(duint addr);
|
||||
|
||||
SCRIPT_EXPORT unsigned char ReadByte(duint addr);
|
||||
SCRIPT_EXPORT bool WriteByte(duint addr, unsigned char data);
|
||||
SCRIPT_EXPORT unsigned short ReadWord(duint addr);
|
||||
SCRIPT_EXPORT bool WriteWord(duint addr, unsigned short data);
|
||||
SCRIPT_EXPORT unsigned int ReadDword(duint addr);
|
||||
SCRIPT_EXPORT bool WriteDword(duint addr, unsigned int data);
|
||||
SCRIPT_EXPORT unsigned long long ReadQword(duint addr);
|
||||
SCRIPT_EXPORT bool WriteQword(duint addr, unsigned long long data);
|
||||
SCRIPT_EXPORT duint ReadPtr(duint addr);
|
||||
SCRIPT_EXPORT bool WritePtr(duint addr, duint data);
|
||||
}; //Memory
|
||||
SCRIPT_EXPORT unsigned char ReadByte(duint addr);
|
||||
SCRIPT_EXPORT bool WriteByte(duint addr, unsigned char data);
|
||||
SCRIPT_EXPORT unsigned short ReadWord(duint addr);
|
||||
SCRIPT_EXPORT bool WriteWord(duint addr, unsigned short data);
|
||||
SCRIPT_EXPORT unsigned int ReadDword(duint addr);
|
||||
SCRIPT_EXPORT bool WriteDword(duint addr, unsigned int data);
|
||||
SCRIPT_EXPORT unsigned long long ReadQword(duint addr);
|
||||
SCRIPT_EXPORT bool WriteQword(duint addr, unsigned long long data);
|
||||
SCRIPT_EXPORT duint ReadPtr(duint addr);
|
||||
SCRIPT_EXPORT bool WritePtr(duint addr, duint data);
|
||||
}; //Memory
|
||||
}; //Script
|
||||
|
||||
#endif //_SCRIPTAPI_MEMORY_H
|
|
@ -5,14 +5,14 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Misc
|
||||
{
|
||||
SCRIPT_EXPORT bool ParseExpression(const char* expression, duint* value);
|
||||
SCRIPT_EXPORT duint RemoteGetProcAddress(const char* module, const char* api);
|
||||
SCRIPT_EXPORT duint ResolveLabel(const char* label);
|
||||
SCRIPT_EXPORT void* Alloc(duint size);
|
||||
SCRIPT_EXPORT void Free(void* ptr);
|
||||
}; //Misc
|
||||
namespace Misc
|
||||
{
|
||||
SCRIPT_EXPORT bool ParseExpression(const char* expression, duint* value);
|
||||
SCRIPT_EXPORT duint RemoteGetProcAddress(const char* module, const char* api);
|
||||
SCRIPT_EXPORT duint ResolveLabel(const char* label);
|
||||
SCRIPT_EXPORT void* Alloc(duint size);
|
||||
SCRIPT_EXPORT void Free(void* ptr);
|
||||
}; //Misc
|
||||
}; //Script
|
||||
|
||||
#endif //_SCRIPTAPI_MISC_H
|
|
@ -5,52 +5,52 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Module
|
||||
{
|
||||
struct ModuleInfo
|
||||
{
|
||||
duint base;
|
||||
duint size;
|
||||
duint entry;
|
||||
int sectionCount;
|
||||
char name[MAX_MODULE_SIZE];
|
||||
char path[MAX_PATH];
|
||||
};
|
||||
namespace Module
|
||||
{
|
||||
struct ModuleInfo
|
||||
{
|
||||
duint base;
|
||||
duint size;
|
||||
duint entry;
|
||||
int sectionCount;
|
||||
char name[MAX_MODULE_SIZE];
|
||||
char path[MAX_PATH];
|
||||
};
|
||||
|
||||
struct ModuleSectionInfo
|
||||
{
|
||||
duint addr;
|
||||
duint size;
|
||||
char name[MAX_SECTION_SIZE * 5];
|
||||
};
|
||||
struct ModuleSectionInfo
|
||||
{
|
||||
duint addr;
|
||||
duint size;
|
||||
char name[MAX_SECTION_SIZE * 5];
|
||||
};
|
||||
|
||||
SCRIPT_EXPORT bool InfoFromAddr(duint addr, ModuleInfo* info);
|
||||
SCRIPT_EXPORT bool InfoFromName(const char* name, ModuleInfo* info);
|
||||
SCRIPT_EXPORT duint BaseFromAddr(duint addr);
|
||||
SCRIPT_EXPORT duint BaseFromName(const char* name);
|
||||
SCRIPT_EXPORT duint SizeFromAddr(duint addr);
|
||||
SCRIPT_EXPORT duint SizeFromName(const char* name);
|
||||
SCRIPT_EXPORT bool NameFromAddr(duint addr, char* name); //name[MAX_MODULE_SIZE]
|
||||
SCRIPT_EXPORT bool PathFromAddr(duint addr, char* path); //path[MAX_MODULE_PATH_SIZE]
|
||||
SCRIPT_EXPORT bool PathFromName(const char* name, char* path); //path[MAX_PATH]
|
||||
SCRIPT_EXPORT duint EntryFromAddr(duint addr);
|
||||
SCRIPT_EXPORT duint EntryFromName(const char* name);
|
||||
SCRIPT_EXPORT int SectionCountFromAddr(duint addr);
|
||||
SCRIPT_EXPORT int SectionCountFromName(const char* name);
|
||||
SCRIPT_EXPORT bool SectionFromAddr(duint addr, int number, ModuleSectionInfo* section);
|
||||
SCRIPT_EXPORT bool SectionFromName(const char* name, int number, ModuleSectionInfo* section);
|
||||
SCRIPT_EXPORT bool SectionListFromAddr(duint addr, ListOf(ModuleSectionInfo) listInfo);
|
||||
SCRIPT_EXPORT bool SectionListFromName(const char* name, ListOf(ModuleSectionInfo) listInfo);
|
||||
SCRIPT_EXPORT bool GetMainModuleInfo(ModuleInfo* info);
|
||||
SCRIPT_EXPORT duint GetMainModuleBase();
|
||||
SCRIPT_EXPORT duint GetMainModuleSize();
|
||||
SCRIPT_EXPORT duint GetMainModuleEntry();
|
||||
SCRIPT_EXPORT int GetMainModuleSectionCount();
|
||||
SCRIPT_EXPORT bool GetMainModuleName(char* name); //name[MAX_MODULE_SIZE]
|
||||
SCRIPT_EXPORT bool GetMainModulePath(char* path); //path[MAX_PATH]
|
||||
SCRIPT_EXPORT bool GetMainModuleSectionList(ListOf(ModuleSectionInfo) listInfo); //caller has the responsibility to free the list
|
||||
SCRIPT_EXPORT bool GetList(ListOf(ModuleInfo) listInfo); //caller has the responsibility to free the list
|
||||
}; //Module
|
||||
SCRIPT_EXPORT bool InfoFromAddr(duint addr, ModuleInfo* info);
|
||||
SCRIPT_EXPORT bool InfoFromName(const char* name, ModuleInfo* info);
|
||||
SCRIPT_EXPORT duint BaseFromAddr(duint addr);
|
||||
SCRIPT_EXPORT duint BaseFromName(const char* name);
|
||||
SCRIPT_EXPORT duint SizeFromAddr(duint addr);
|
||||
SCRIPT_EXPORT duint SizeFromName(const char* name);
|
||||
SCRIPT_EXPORT bool NameFromAddr(duint addr, char* name); //name[MAX_MODULE_SIZE]
|
||||
SCRIPT_EXPORT bool PathFromAddr(duint addr, char* path); //path[MAX_MODULE_PATH_SIZE]
|
||||
SCRIPT_EXPORT bool PathFromName(const char* name, char* path); //path[MAX_PATH]
|
||||
SCRIPT_EXPORT duint EntryFromAddr(duint addr);
|
||||
SCRIPT_EXPORT duint EntryFromName(const char* name);
|
||||
SCRIPT_EXPORT int SectionCountFromAddr(duint addr);
|
||||
SCRIPT_EXPORT int SectionCountFromName(const char* name);
|
||||
SCRIPT_EXPORT bool SectionFromAddr(duint addr, int number, ModuleSectionInfo* section);
|
||||
SCRIPT_EXPORT bool SectionFromName(const char* name, int number, ModuleSectionInfo* section);
|
||||
SCRIPT_EXPORT bool SectionListFromAddr(duint addr, ListOf(ModuleSectionInfo) listInfo);
|
||||
SCRIPT_EXPORT bool SectionListFromName(const char* name, ListOf(ModuleSectionInfo) listInfo);
|
||||
SCRIPT_EXPORT bool GetMainModuleInfo(ModuleInfo* info);
|
||||
SCRIPT_EXPORT duint GetMainModuleBase();
|
||||
SCRIPT_EXPORT duint GetMainModuleSize();
|
||||
SCRIPT_EXPORT duint GetMainModuleEntry();
|
||||
SCRIPT_EXPORT int GetMainModuleSectionCount();
|
||||
SCRIPT_EXPORT bool GetMainModuleName(char* name); //name[MAX_MODULE_SIZE]
|
||||
SCRIPT_EXPORT bool GetMainModulePath(char* path); //path[MAX_PATH]
|
||||
SCRIPT_EXPORT bool GetMainModuleSectionList(ListOf(ModuleSectionInfo) listInfo); //caller has the responsibility to free the list
|
||||
SCRIPT_EXPORT bool GetList(ListOf(ModuleInfo) listInfo); //caller has the responsibility to free the list
|
||||
}; //Module
|
||||
}; //Script
|
||||
|
||||
#endif //_SCRIPTAPI_MODULE_H
|
|
@ -5,15 +5,15 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Pattern
|
||||
{
|
||||
SCRIPT_EXPORT duint Find(unsigned char* data, duint datasize, const char* pattern);
|
||||
SCRIPT_EXPORT duint FindMem(duint start, duint size, const char* pattern);
|
||||
SCRIPT_EXPORT void Write(unsigned char* data, duint datasize, const char* pattern);
|
||||
SCRIPT_EXPORT void WriteMem(duint start, duint size, const char* pattern);
|
||||
SCRIPT_EXPORT bool SearchAndReplace(unsigned char* data, duint datasize, const char* searchpattern, const char* replacepattern);
|
||||
SCRIPT_EXPORT bool SearchAndReplaceMem(duint start, duint size, const char* searchpattern, const char* replacepattern);
|
||||
};
|
||||
namespace Pattern
|
||||
{
|
||||
SCRIPT_EXPORT duint Find(unsigned char* data, duint datasize, const char* pattern);
|
||||
SCRIPT_EXPORT duint FindMem(duint start, duint size, const char* pattern);
|
||||
SCRIPT_EXPORT void Write(unsigned char* data, duint datasize, const char* pattern);
|
||||
SCRIPT_EXPORT void WriteMem(duint start, duint size, const char* pattern);
|
||||
SCRIPT_EXPORT bool SearchAndReplace(unsigned char* data, duint datasize, const char* searchpattern, const char* replacepattern);
|
||||
SCRIPT_EXPORT bool SearchAndReplaceMem(duint start, duint size, const char* searchpattern, const char* replacepattern);
|
||||
};
|
||||
};
|
||||
|
||||
#endif //_SCRIPTAPI_FIND_H
|
|
@ -5,261 +5,261 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Register
|
||||
{
|
||||
enum RegisterEnum
|
||||
{
|
||||
DR0,
|
||||
DR1,
|
||||
DR2,
|
||||
DR3,
|
||||
DR6,
|
||||
DR7,
|
||||
namespace Register
|
||||
{
|
||||
enum RegisterEnum
|
||||
{
|
||||
DR0,
|
||||
DR1,
|
||||
DR2,
|
||||
DR3,
|
||||
DR6,
|
||||
DR7,
|
||||
|
||||
EAX,
|
||||
AX,
|
||||
AH,
|
||||
AL,
|
||||
EBX,
|
||||
BX,
|
||||
BH,
|
||||
BL,
|
||||
ECX,
|
||||
CX,
|
||||
CH,
|
||||
CL,
|
||||
EDX,
|
||||
DX,
|
||||
DH,
|
||||
DL,
|
||||
EDI,
|
||||
DI,
|
||||
ESI,
|
||||
SI,
|
||||
EBP,
|
||||
BP,
|
||||
ESP,
|
||||
SP,
|
||||
EIP,
|
||||
EAX,
|
||||
AX,
|
||||
AH,
|
||||
AL,
|
||||
EBX,
|
||||
BX,
|
||||
BH,
|
||||
BL,
|
||||
ECX,
|
||||
CX,
|
||||
CH,
|
||||
CL,
|
||||
EDX,
|
||||
DX,
|
||||
DH,
|
||||
DL,
|
||||
EDI,
|
||||
DI,
|
||||
ESI,
|
||||
SI,
|
||||
EBP,
|
||||
BP,
|
||||
ESP,
|
||||
SP,
|
||||
EIP,
|
||||
|
||||
#ifdef _WIN64
|
||||
RAX,
|
||||
RBX,
|
||||
RCX,
|
||||
RDX,
|
||||
RSI,
|
||||
SIL,
|
||||
RDI,
|
||||
DIL,
|
||||
RBP,
|
||||
BPL,
|
||||
RSP,
|
||||
SPL,
|
||||
RIP,
|
||||
R8,
|
||||
R8D,
|
||||
R8W,
|
||||
R8B,
|
||||
R9,
|
||||
R9D,
|
||||
R9W,
|
||||
R9B,
|
||||
R10,
|
||||
R10D,
|
||||
R10W,
|
||||
R10B,
|
||||
R11,
|
||||
R11D,
|
||||
R11W,
|
||||
R11B,
|
||||
R12,
|
||||
R12D,
|
||||
R12W,
|
||||
R12B,
|
||||
R13,
|
||||
R13D,
|
||||
R13W,
|
||||
R13B,
|
||||
R14,
|
||||
R14D,
|
||||
R14W,
|
||||
R14B,
|
||||
R15,
|
||||
R15D,
|
||||
R15W,
|
||||
R15B,
|
||||
RAX,
|
||||
RBX,
|
||||
RCX,
|
||||
RDX,
|
||||
RSI,
|
||||
SIL,
|
||||
RDI,
|
||||
DIL,
|
||||
RBP,
|
||||
BPL,
|
||||
RSP,
|
||||
SPL,
|
||||
RIP,
|
||||
R8,
|
||||
R8D,
|
||||
R8W,
|
||||
R8B,
|
||||
R9,
|
||||
R9D,
|
||||
R9W,
|
||||
R9B,
|
||||
R10,
|
||||
R10D,
|
||||
R10W,
|
||||
R10B,
|
||||
R11,
|
||||
R11D,
|
||||
R11W,
|
||||
R11B,
|
||||
R12,
|
||||
R12D,
|
||||
R12W,
|
||||
R12B,
|
||||
R13,
|
||||
R13D,
|
||||
R13W,
|
||||
R13B,
|
||||
R14,
|
||||
R14D,
|
||||
R14W,
|
||||
R14B,
|
||||
R15,
|
||||
R15D,
|
||||
R15W,
|
||||
R15B,
|
||||
#endif //_WIN64
|
||||
|
||||
CIP,
|
||||
CSP,
|
||||
}; //RegisterEnum
|
||||
CIP,
|
||||
CSP,
|
||||
}; //RegisterEnum
|
||||
|
||||
SCRIPT_EXPORT duint Get(RegisterEnum reg);
|
||||
SCRIPT_EXPORT bool Set(RegisterEnum reg, duint value);
|
||||
SCRIPT_EXPORT int Size(); //gets architecture register size in bytes
|
||||
SCRIPT_EXPORT duint Get(RegisterEnum reg);
|
||||
SCRIPT_EXPORT bool Set(RegisterEnum reg, duint value);
|
||||
SCRIPT_EXPORT int Size(); //gets architecture register size in bytes
|
||||
|
||||
SCRIPT_EXPORT duint GetDR0();
|
||||
SCRIPT_EXPORT bool SetDR0(duint value);
|
||||
SCRIPT_EXPORT duint GetDR1();
|
||||
SCRIPT_EXPORT bool SetDR1(duint value);
|
||||
SCRIPT_EXPORT duint GetDR2();
|
||||
SCRIPT_EXPORT bool SetDR2(duint value);
|
||||
SCRIPT_EXPORT duint GetDR3();
|
||||
SCRIPT_EXPORT bool SetDR3(duint value);
|
||||
SCRIPT_EXPORT duint GetDR6();
|
||||
SCRIPT_EXPORT bool SetDR6(duint value);
|
||||
SCRIPT_EXPORT duint GetDR7();
|
||||
SCRIPT_EXPORT bool SetDR7(duint value);
|
||||
SCRIPT_EXPORT duint GetDR0();
|
||||
SCRIPT_EXPORT bool SetDR0(duint value);
|
||||
SCRIPT_EXPORT duint GetDR1();
|
||||
SCRIPT_EXPORT bool SetDR1(duint value);
|
||||
SCRIPT_EXPORT duint GetDR2();
|
||||
SCRIPT_EXPORT bool SetDR2(duint value);
|
||||
SCRIPT_EXPORT duint GetDR3();
|
||||
SCRIPT_EXPORT bool SetDR3(duint value);
|
||||
SCRIPT_EXPORT duint GetDR6();
|
||||
SCRIPT_EXPORT bool SetDR6(duint value);
|
||||
SCRIPT_EXPORT duint GetDR7();
|
||||
SCRIPT_EXPORT bool SetDR7(duint value);
|
||||
|
||||
SCRIPT_EXPORT unsigned int GetEAX();
|
||||
SCRIPT_EXPORT bool SetEAX(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetAX();
|
||||
SCRIPT_EXPORT bool SetAX(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetAH();
|
||||
SCRIPT_EXPORT bool SetAH(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned char GetAL();
|
||||
SCRIPT_EXPORT bool SetAL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned int GetEBX();
|
||||
SCRIPT_EXPORT bool SetEBX(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetBX();
|
||||
SCRIPT_EXPORT bool SetBX(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetBH();
|
||||
SCRIPT_EXPORT bool SetBH(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned char GetBL();
|
||||
SCRIPT_EXPORT bool SetBL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned int GetECX();
|
||||
SCRIPT_EXPORT bool SetECX(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetCX();
|
||||
SCRIPT_EXPORT bool SetCX(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetCH();
|
||||
SCRIPT_EXPORT bool SetCH(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned char GetCL();
|
||||
SCRIPT_EXPORT bool SetCL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned int GetEDX();
|
||||
SCRIPT_EXPORT bool SetEDX(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetDX();
|
||||
SCRIPT_EXPORT bool SetDX(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetDH();
|
||||
SCRIPT_EXPORT bool SetDH(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned char GetDL();
|
||||
SCRIPT_EXPORT bool SetDL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned int GetEDI();
|
||||
SCRIPT_EXPORT bool SetEDI(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetDI();
|
||||
SCRIPT_EXPORT bool SetDI(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned int GetESI();
|
||||
SCRIPT_EXPORT bool SetESI(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetSI();
|
||||
SCRIPT_EXPORT bool SetSI(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned int GetEBP();
|
||||
SCRIPT_EXPORT bool SetEBP(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetBP();
|
||||
SCRIPT_EXPORT bool SetBP(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned int GetESP();
|
||||
SCRIPT_EXPORT bool SetESP(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetSP();
|
||||
SCRIPT_EXPORT bool SetSP(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned int GetEIP();
|
||||
SCRIPT_EXPORT bool SetEIP(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned int GetEAX();
|
||||
SCRIPT_EXPORT bool SetEAX(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetAX();
|
||||
SCRIPT_EXPORT bool SetAX(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetAH();
|
||||
SCRIPT_EXPORT bool SetAH(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned char GetAL();
|
||||
SCRIPT_EXPORT bool SetAL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned int GetEBX();
|
||||
SCRIPT_EXPORT bool SetEBX(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetBX();
|
||||
SCRIPT_EXPORT bool SetBX(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetBH();
|
||||
SCRIPT_EXPORT bool SetBH(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned char GetBL();
|
||||
SCRIPT_EXPORT bool SetBL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned int GetECX();
|
||||
SCRIPT_EXPORT bool SetECX(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetCX();
|
||||
SCRIPT_EXPORT bool SetCX(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetCH();
|
||||
SCRIPT_EXPORT bool SetCH(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned char GetCL();
|
||||
SCRIPT_EXPORT bool SetCL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned int GetEDX();
|
||||
SCRIPT_EXPORT bool SetEDX(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetDX();
|
||||
SCRIPT_EXPORT bool SetDX(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetDH();
|
||||
SCRIPT_EXPORT bool SetDH(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned char GetDL();
|
||||
SCRIPT_EXPORT bool SetDL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned int GetEDI();
|
||||
SCRIPT_EXPORT bool SetEDI(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetDI();
|
||||
SCRIPT_EXPORT bool SetDI(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned int GetESI();
|
||||
SCRIPT_EXPORT bool SetESI(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetSI();
|
||||
SCRIPT_EXPORT bool SetSI(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned int GetEBP();
|
||||
SCRIPT_EXPORT bool SetEBP(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetBP();
|
||||
SCRIPT_EXPORT bool SetBP(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned int GetESP();
|
||||
SCRIPT_EXPORT bool SetESP(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetSP();
|
||||
SCRIPT_EXPORT bool SetSP(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned int GetEIP();
|
||||
SCRIPT_EXPORT bool SetEIP(unsigned int value);
|
||||
|
||||
#ifdef _WIN64
|
||||
SCRIPT_EXPORT unsigned long long GetRAX();
|
||||
SCRIPT_EXPORT bool SetRAX(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetRBX();
|
||||
SCRIPT_EXPORT bool SetRBX(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetRCX();
|
||||
SCRIPT_EXPORT bool SetRCX(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetRDX();
|
||||
SCRIPT_EXPORT bool SetRDX(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetRSI();
|
||||
SCRIPT_EXPORT bool SetRSI(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned char GetSIL();
|
||||
SCRIPT_EXPORT bool SetSIL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRDI();
|
||||
SCRIPT_EXPORT bool SetRDI(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned char GetDIL();
|
||||
SCRIPT_EXPORT bool SetDIL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRBP();
|
||||
SCRIPT_EXPORT bool SetRBP(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned char GetBPL();
|
||||
SCRIPT_EXPORT bool SetBPL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRSP();
|
||||
SCRIPT_EXPORT bool SetRSP(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned char GetSPL();
|
||||
SCRIPT_EXPORT bool SetSPL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRIP();
|
||||
SCRIPT_EXPORT bool SetRIP(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetR8();
|
||||
SCRIPT_EXPORT bool SetR8(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR8D();
|
||||
SCRIPT_EXPORT bool SetR8D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR8W();
|
||||
SCRIPT_EXPORT bool SetR8W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR8B();
|
||||
SCRIPT_EXPORT bool SetR8B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR9();
|
||||
SCRIPT_EXPORT bool SetR9(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR9D();
|
||||
SCRIPT_EXPORT bool SetR9D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR9W();
|
||||
SCRIPT_EXPORT bool SetR9W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR9B();
|
||||
SCRIPT_EXPORT bool SetR9B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR10();
|
||||
SCRIPT_EXPORT bool SetR10(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR10D();
|
||||
SCRIPT_EXPORT bool SetR10D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR10W();
|
||||
SCRIPT_EXPORT bool SetR10W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR10B();
|
||||
SCRIPT_EXPORT bool SetR10B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR11();
|
||||
SCRIPT_EXPORT bool SetR11(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR11D();
|
||||
SCRIPT_EXPORT bool SetR11D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR11W();
|
||||
SCRIPT_EXPORT bool SetR11W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR11B();
|
||||
SCRIPT_EXPORT bool SetR11B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR12();
|
||||
SCRIPT_EXPORT bool SetR12(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR12D();
|
||||
SCRIPT_EXPORT bool SetR12D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR12W();
|
||||
SCRIPT_EXPORT bool SetR12W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR12B();
|
||||
SCRIPT_EXPORT bool SetR12B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR13();
|
||||
SCRIPT_EXPORT bool SetR13(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR13D();
|
||||
SCRIPT_EXPORT bool SetR13D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR13W();
|
||||
SCRIPT_EXPORT bool SetR13W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR13B();
|
||||
SCRIPT_EXPORT bool SetR13B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR14();
|
||||
SCRIPT_EXPORT bool SetR14(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR14D();
|
||||
SCRIPT_EXPORT bool SetR14D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR14W();
|
||||
SCRIPT_EXPORT bool SetR14W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR14B();
|
||||
SCRIPT_EXPORT bool SetR14B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR15();
|
||||
SCRIPT_EXPORT bool SetR15(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR15D();
|
||||
SCRIPT_EXPORT bool SetR15D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR15W();
|
||||
SCRIPT_EXPORT bool SetR15W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR15B();
|
||||
SCRIPT_EXPORT bool SetR15B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRAX();
|
||||
SCRIPT_EXPORT bool SetRAX(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetRBX();
|
||||
SCRIPT_EXPORT bool SetRBX(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetRCX();
|
||||
SCRIPT_EXPORT bool SetRCX(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetRDX();
|
||||
SCRIPT_EXPORT bool SetRDX(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetRSI();
|
||||
SCRIPT_EXPORT bool SetRSI(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned char GetSIL();
|
||||
SCRIPT_EXPORT bool SetSIL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRDI();
|
||||
SCRIPT_EXPORT bool SetRDI(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned char GetDIL();
|
||||
SCRIPT_EXPORT bool SetDIL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRBP();
|
||||
SCRIPT_EXPORT bool SetRBP(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned char GetBPL();
|
||||
SCRIPT_EXPORT bool SetBPL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRSP();
|
||||
SCRIPT_EXPORT bool SetRSP(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned char GetSPL();
|
||||
SCRIPT_EXPORT bool SetSPL(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetRIP();
|
||||
SCRIPT_EXPORT bool SetRIP(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned long long GetR8();
|
||||
SCRIPT_EXPORT bool SetR8(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR8D();
|
||||
SCRIPT_EXPORT bool SetR8D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR8W();
|
||||
SCRIPT_EXPORT bool SetR8W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR8B();
|
||||
SCRIPT_EXPORT bool SetR8B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR9();
|
||||
SCRIPT_EXPORT bool SetR9(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR9D();
|
||||
SCRIPT_EXPORT bool SetR9D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR9W();
|
||||
SCRIPT_EXPORT bool SetR9W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR9B();
|
||||
SCRIPT_EXPORT bool SetR9B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR10();
|
||||
SCRIPT_EXPORT bool SetR10(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR10D();
|
||||
SCRIPT_EXPORT bool SetR10D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR10W();
|
||||
SCRIPT_EXPORT bool SetR10W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR10B();
|
||||
SCRIPT_EXPORT bool SetR10B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR11();
|
||||
SCRIPT_EXPORT bool SetR11(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR11D();
|
||||
SCRIPT_EXPORT bool SetR11D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR11W();
|
||||
SCRIPT_EXPORT bool SetR11W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR11B();
|
||||
SCRIPT_EXPORT bool SetR11B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR12();
|
||||
SCRIPT_EXPORT bool SetR12(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR12D();
|
||||
SCRIPT_EXPORT bool SetR12D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR12W();
|
||||
SCRIPT_EXPORT bool SetR12W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR12B();
|
||||
SCRIPT_EXPORT bool SetR12B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR13();
|
||||
SCRIPT_EXPORT bool SetR13(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR13D();
|
||||
SCRIPT_EXPORT bool SetR13D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR13W();
|
||||
SCRIPT_EXPORT bool SetR13W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR13B();
|
||||
SCRIPT_EXPORT bool SetR13B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR14();
|
||||
SCRIPT_EXPORT bool SetR14(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR14D();
|
||||
SCRIPT_EXPORT bool SetR14D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR14W();
|
||||
SCRIPT_EXPORT bool SetR14W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR14B();
|
||||
SCRIPT_EXPORT bool SetR14B(unsigned char value);
|
||||
SCRIPT_EXPORT unsigned long long GetR15();
|
||||
SCRIPT_EXPORT bool SetR15(unsigned long long value);
|
||||
SCRIPT_EXPORT unsigned int GetR15D();
|
||||
SCRIPT_EXPORT bool SetR15D(unsigned int value);
|
||||
SCRIPT_EXPORT unsigned short GetR15W();
|
||||
SCRIPT_EXPORT bool SetR15W(unsigned short value);
|
||||
SCRIPT_EXPORT unsigned char GetR15B();
|
||||
SCRIPT_EXPORT bool SetR15B(unsigned char value);
|
||||
#endif //_WIN64
|
||||
|
||||
SCRIPT_EXPORT duint GetCIP();
|
||||
SCRIPT_EXPORT bool SetCIP(duint value);
|
||||
SCRIPT_EXPORT duint GetCSP();
|
||||
SCRIPT_EXPORT bool SetCSP(duint value);
|
||||
}; //Register
|
||||
SCRIPT_EXPORT duint GetCIP();
|
||||
SCRIPT_EXPORT bool SetCIP(duint value);
|
||||
SCRIPT_EXPORT duint GetCSP();
|
||||
SCRIPT_EXPORT bool SetCSP(duint value);
|
||||
}; //Register
|
||||
}; //Script
|
||||
|
||||
#endif //_SCRIPTAPI_REGISTER_H
|
|
@ -5,12 +5,12 @@
|
|||
|
||||
namespace Script
|
||||
{
|
||||
namespace Stack
|
||||
{
|
||||
SCRIPT_EXPORT duint Pop();
|
||||
SCRIPT_EXPORT duint Push(duint value); //returns the previous top, equal to Peek(1)
|
||||
SCRIPT_EXPORT duint Peek(int offset = 0); //offset is in multiples of Register::Size(), for easy x32/x64 portability
|
||||
}; //Stack
|
||||
namespace Stack
|
||||
{
|
||||
SCRIPT_EXPORT duint Pop();
|
||||
SCRIPT_EXPORT duint Push(duint value); //returns the previous top, equal to Peek(1)
|
||||
SCRIPT_EXPORT duint Peek(int offset = 0); //offset is in multiples of Register::Size(), for easy x32/x64 portability
|
||||
}; //Stack
|
||||
}; //Script
|
||||
|
||||
#endif //_SCRIPTAPI_STACK_H
|
|
@ -108,10 +108,10 @@ bool apienumimports(duint base, IMPORTENUMCALLBACK cbEnum)
|
|||
// Get page size
|
||||
VirtualQueryEx(fdProcessInfo->hProcess, (const void*)base, &mbi, sizeof(mbi));
|
||||
regionSize = mbi.RegionSize;
|
||||
Memory<void* > buffer(regionSize, "apienumimports:buffer");
|
||||
Memory<void*> buffer(regionSize, "apienumimports:buffer");
|
||||
|
||||
// Read first page into buffer
|
||||
if (!MemRead(base, buffer(), regionSize))
|
||||
if(!MemRead(base, buffer(), regionSize))
|
||||
return false;
|
||||
|
||||
// Import Table address and size
|
||||
|
@ -119,7 +119,7 @@ bool apienumimports(duint base, IMPORTENUMCALLBACK cbEnum)
|
|||
importTableSize = GetPE32DataFromMappedFile((duint)buffer(), 0, UE_IMPORTTABLESIZE);
|
||||
|
||||
// Return if no imports
|
||||
if (!importTableSize)
|
||||
if(!importTableSize)
|
||||
return false;
|
||||
|
||||
importTableVa = (PIMAGE_IMPORT_DESCRIPTOR)(base + importTableRva);
|
||||
|
@ -127,7 +127,7 @@ bool apienumimports(duint base, IMPORTENUMCALLBACK cbEnum)
|
|||
readSuccess = MemRead((duint)importTableVa, &importDescriptor, sizeof(importDescriptor));
|
||||
|
||||
// Loop through all dlls
|
||||
while (readSuccess && importDescriptor.FirstThunk)
|
||||
while(readSuccess && importDescriptor.FirstThunk)
|
||||
{
|
||||
// Copy module name into importModuleName
|
||||
MemRead((duint)(base + importDescriptor.Name), &importModuleName, MAX_MODULE_SIZE);
|
||||
|
@ -135,19 +135,19 @@ bool apienumimports(duint base, IMPORTENUMCALLBACK cbEnum)
|
|||
imageIATVa = (PIMAGE_THUNK_DATA)(base + importDescriptor.FirstThunk);
|
||||
imageINTVa = (PIMAGE_THUNK_DATA)(base + importDescriptor.OriginalFirstThunk);
|
||||
|
||||
if (!MemRead((duint)imageIATVa, &imageFtThunkData, sizeof(imageFtThunkData)))
|
||||
if(!MemRead((duint)imageIATVa, &imageFtThunkData, sizeof(imageFtThunkData)))
|
||||
return false;
|
||||
|
||||
if (!MemRead((duint)imageINTVa, &imageOftThunkData, sizeof(imageOftThunkData)))
|
||||
if(!MemRead((duint)imageINTVa, &imageOftThunkData, sizeof(imageOftThunkData)))
|
||||
return false;
|
||||
|
||||
// Loop through all imported function in this dll
|
||||
while (imageFtThunkData.u1.Function)
|
||||
while(imageFtThunkData.u1.Function)
|
||||
{
|
||||
pImageImportByNameVa = (PIMAGE_IMPORT_BY_NAME)(base + imageOftThunkData.u1.AddressOfData);
|
||||
|
||||
// Read every IMPORT_BY_NAME.name
|
||||
if (!MemRead((duint)pImageImportByNameVa + sizeof(WORD), buffer(), regionSize))
|
||||
if(!MemRead((duint)pImageImportByNameVa + sizeof(WORD), buffer(), regionSize))
|
||||
return false;
|
||||
|
||||
// Alloc buffer for name and copy name import name to buffer
|
||||
|
@ -165,7 +165,7 @@ bool apienumimports(duint base, IMPORTENUMCALLBACK cbEnum)
|
|||
|
||||
// Move to next address in the IAT and read it into imageFtThunkData
|
||||
imageIATVa++;
|
||||
if (!MemRead((duint)imageIATVa, &imageFtThunkData, sizeof(imageFtThunkData)))
|
||||
if(!MemRead((duint)imageIATVa, &imageFtThunkData, sizeof(imageFtThunkData)))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -69,16 +69,16 @@ bool assembleat(duint addr, const char* instruction, int* size, char* error, boo
|
|||
*size = destSize;
|
||||
|
||||
// Check if the instruction doesn't set IP to non-executable memory
|
||||
if (isInstructionPointingToExMemory(addr, dest) == NX_MEMORY)
|
||||
if(isInstructionPointingToExMemory(addr, dest) == NX_MEMORY)
|
||||
GuiDisplayWarning("Non-executable memory region", "Assembled instruction points to non-executable memory region !");
|
||||
|
||||
bool ret = MemPatch(addr, dest, destSize);
|
||||
|
||||
if (ret)
|
||||
if(ret)
|
||||
{
|
||||
if (fillnop && nopsize)
|
||||
if(fillnop && nopsize)
|
||||
{
|
||||
if (size)
|
||||
if(size)
|
||||
*size += nopsize;
|
||||
|
||||
// Ignored if the memory patch for NOPs fail (although it should not)
|
||||
|
@ -102,7 +102,7 @@ INSTR_POINTING_TO isInstructionPointingToExMemory(duint addr, const unsigned cha
|
|||
MEMMAP wMemMapStruct;
|
||||
DISASM_ARG arg;
|
||||
DISASM_INSTR wDisasInstrStruct;
|
||||
MEMORY_BASIC_INFORMATION *wMbiStruct = NULL;
|
||||
MEMORY_BASIC_INFORMATION* wMbiStruct = NULL;
|
||||
duint instrArgCount;
|
||||
dsint instrMemValues[3] = {0};
|
||||
duint instrMemValuesIndex = 0;
|
||||
|
@ -111,20 +111,20 @@ INSTR_POINTING_TO isInstructionPointingToExMemory(duint addr, const unsigned cha
|
|||
disasmget((unsigned char*)dest, 0, &wDisasInstrStruct);
|
||||
|
||||
instrArgCount = wDisasInstrStruct.argcount;
|
||||
if (instrArgCount)
|
||||
if(instrArgCount)
|
||||
{
|
||||
// Loop through all arguements
|
||||
for (int i = 0; i < wDisasInstrStruct.argcount; i++)
|
||||
for(int i = 0; i < wDisasInstrStruct.argcount; i++)
|
||||
{
|
||||
arg = wDisasInstrStruct.arg[i];
|
||||
|
||||
// Check if any of the arguments is a memory
|
||||
if (arg.type == arg_memory)
|
||||
if(arg.type == arg_memory)
|
||||
{
|
||||
instrMemValues[instrMemValuesIndex] = addr + arg.memvalue; // add current instruction VA for rip-relative addressing
|
||||
instrMemValuesIndex++;
|
||||
}
|
||||
else if (wDisasInstrStruct.type == instr_branch)
|
||||
else if(wDisasInstrStruct.type == instr_branch)
|
||||
{
|
||||
instrMemValues[instrMemValuesIndex] = addr + arg.value;
|
||||
instrMemValuesIndex++;
|
||||
|
@ -133,24 +133,25 @@ INSTR_POINTING_TO isInstructionPointingToExMemory(duint addr, const unsigned cha
|
|||
}
|
||||
|
||||
// No memory pointer in the instruction, no need to go further
|
||||
if (!instrMemValuesIndex)
|
||||
if(!instrMemValuesIndex)
|
||||
return NO_POINTER;
|
||||
|
||||
// TODO: this can be heavily optimized (both in code size and speed) by using memory.cpp (std::map)
|
||||
// Get memory map to locate the sections to which the instr memory address belongs to
|
||||
DbgMemMap(&wMemMapStruct);
|
||||
|
||||
// For each memPointerValue
|
||||
for (auto & memValue : instrMemValues)
|
||||
for(auto & memValue : instrMemValues)
|
||||
{
|
||||
// Loop through the memMaps
|
||||
for (int i = 0; i < wMemMapStruct.count; i++)
|
||||
for(int i = 0; i < wMemMapStruct.count; i++)
|
||||
{
|
||||
wMbiStruct = &(wMemMapStruct.page)[i].mbi;
|
||||
mbiBaseAddr = (dsint)wMbiStruct->BaseAddress;
|
||||
mbiEndAddr = (dsint)wMbiStruct->BaseAddress + (dsint)wMbiStruct->RegionSize;
|
||||
if (memValue >= mbiBaseAddr && memValue < mbiEndAddr)
|
||||
if(memValue >= mbiBaseAddr && memValue < mbiEndAddr)
|
||||
{
|
||||
if (wMbiStruct->Protect == PAGE_EXECUTE ||
|
||||
if(wMbiStruct->Protect == PAGE_EXECUTE ||
|
||||
wMbiStruct->Protect == PAGE_EXECUTE_READ ||
|
||||
wMbiStruct->Protect == PAGE_EXECUTE_READWRITE ||
|
||||
wMbiStruct->Protect == PAGE_EXECUTE_WRITECOPY)
|
||||
|
@ -161,13 +162,13 @@ INSTR_POINTING_TO isInstructionPointingToExMemory(duint addr, const unsigned cha
|
|||
BOOL bPermanentDep;
|
||||
|
||||
// DEP is disabled if lpFlagsDep == 0
|
||||
typedef BOOL (WINAPI *GETPROCESSDEPPOLICY)(
|
||||
typedef BOOL (WINAPI * GETPROCESSDEPPOLICY)(
|
||||
_In_ HANDLE hProcess,
|
||||
_Out_ LPDWORD lpFlags,
|
||||
_Out_ PBOOL lpPermanent
|
||||
);
|
||||
static GETPROCESSDEPPOLICY GPDP = (GETPROCESSDEPPOLICY)GetProcAddress(GetModuleHandleW(L"kernel32.dll"), "GetProcessDEPPolicy");
|
||||
if (GPDP && GPDP(fdProcessInfo->hProcess, &lpFlagsDep, &bPermanentDep) && lpFlagsDep != 0)
|
||||
if(GPDP && GPDP(fdProcessInfo->hProcess, &lpFlagsDep, &bPermanentDep) && lpFlagsDep != 0)
|
||||
return EX_MEMORY;
|
||||
#else
|
||||
// DEP enabled on x64
|
||||
|
|
|
@ -154,9 +154,9 @@ bool BpEnable(duint Address, BP_TYPE Type, bool Enable)
|
|||
bpInfo->enabled = Enable;
|
||||
|
||||
//Re-read oldbytes
|
||||
if (Enable && Type == BPNORMAL)
|
||||
if(Enable && Type == BPNORMAL)
|
||||
{
|
||||
if (!MemRead(Address, &bpInfo->oldbytes, sizeof(bpInfo->oldbytes)))
|
||||
if(!MemRead(Address, &bpInfo->oldbytes, sizeof(bpInfo->oldbytes)))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -204,7 +204,7 @@ bool BpEnumAll(BPENUMCALLBACK EnumCallback, const char* Module)
|
|||
// Loop each entry, executing the user's callback
|
||||
bool callbackStatus = true;
|
||||
|
||||
for (auto i = breakpoints.begin(); i != breakpoints.end();)
|
||||
for(auto i = breakpoints.begin(); i != breakpoints.end();)
|
||||
{
|
||||
auto j = i;
|
||||
++i; // Increment here, because the callback might remove the current entry
|
||||
|
|
|
@ -75,11 +75,11 @@ void cmdfree()
|
|||
*/
|
||||
bool cmdnew(const char* name, CBCOMMAND cbCommand, bool debugonly)
|
||||
{
|
||||
if (!cmd_list || !cbCommand || !name || !*name || cmdfind(name, 0))
|
||||
if(!cmd_list || !cbCommand || !name || !*name || cmdfind(name, 0))
|
||||
return false;
|
||||
COMMAND* cmd;
|
||||
bool nonext = false;
|
||||
if (!cmd_list->name)
|
||||
if(!cmd_list->name)
|
||||
{
|
||||
cmd = cmd_list;
|
||||
nonext = true;
|
||||
|
@ -156,7 +156,7 @@ bool cmddel(const char* name)
|
|||
if(!found)
|
||||
return false;
|
||||
efree(found->name, "cmddel:found->name");
|
||||
if (found == cmd_list)
|
||||
if(found == cmd_list)
|
||||
{
|
||||
COMMAND* next = cmd_list->next;
|
||||
if(next)
|
||||
|
|
|
@ -16,12 +16,12 @@ char* getCommandLineArgs()
|
|||
char* commandLineArguments = NULL;
|
||||
char* extensionPtr = strchr(commandLine, '.');
|
||||
|
||||
if (!extensionPtr)
|
||||
if(!extensionPtr)
|
||||
return NULL;
|
||||
|
||||
commandLineArguments = strchr(extensionPtr, ' ');
|
||||
|
||||
if (!commandLineArguments)
|
||||
if(!commandLineArguments)
|
||||
return NULL;
|
||||
|
||||
return (commandLineArguments + 1);
|
||||
|
@ -33,7 +33,7 @@ void CmdLineCacheSave(JSON Root)
|
|||
EXCLUSIVE_ACQUIRE(LockCmdLine);
|
||||
|
||||
// return if command line is empty
|
||||
if (!strlen(commandLine))
|
||||
if(!strlen(commandLine))
|
||||
return;
|
||||
|
||||
// Create a JSON array to store each sub-object with a breakpoint
|
||||
|
@ -56,10 +56,10 @@ void CmdLineCacheLoad(JSON Root)
|
|||
const JSON jsonCmdLine = json_object_get(Root, "commandLine");
|
||||
|
||||
// Return if there was nothing to load
|
||||
if (!jsonCmdLine)
|
||||
if(!jsonCmdLine)
|
||||
return;
|
||||
|
||||
const char *cmdLine = json_string_value(json_object_get(jsonCmdLine, "cmdLine"));
|
||||
const char* cmdLine = json_string_value(json_object_get(jsonCmdLine, "cmdLine"));
|
||||
|
||||
strcpy_s(commandLine, cmdLine);
|
||||
|
||||
|
@ -75,7 +75,7 @@ CMDRESULT SetCommandLine()
|
|||
{
|
||||
cmdline_error_t cmdline_error = { (cmdline_error_type_t)0, 0 };
|
||||
|
||||
if (!dbgsetcmdline(commandLine, &cmdline_error))
|
||||
if(!dbgsetcmdline(commandLine, &cmdline_error))
|
||||
{
|
||||
showcommandlineerror(&cmdline_error);
|
||||
return STATUS_ERROR;
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
void dputs(const char* Text)
|
||||
{
|
||||
// Only append the newline if the caller didn't
|
||||
if (Text[strlen(Text) - 1] != '\n')
|
||||
if(Text[strlen(Text) - 1] != '\n')
|
||||
dprintf("%s\n", Text);
|
||||
else
|
||||
dprintf("%s", Text);
|
||||
|
|
|
@ -39,12 +39,12 @@ void DBSave(LOAD_SAVE_DB_TYPE saveType)
|
|||
JSON root = json_object();
|
||||
|
||||
// Save only command line
|
||||
if (saveType == COMMAND_LINE_ONLY || saveType == ALL)
|
||||
if(saveType == COMMAND_LINE_ONLY || saveType == ALL)
|
||||
{
|
||||
CmdLineCacheSave(root);
|
||||
}
|
||||
|
||||
if (saveType == ALL_BUT_COMMAND_LINE || saveType == ALL)
|
||||
if(saveType == ALL_BUT_COMMAND_LINE || saveType == ALL)
|
||||
{
|
||||
CommentCacheSave(root);
|
||||
LabelCacheSave(root);
|
||||
|
@ -56,7 +56,7 @@ void DBSave(LOAD_SAVE_DB_TYPE saveType)
|
|||
//save notes
|
||||
char* text = nullptr;
|
||||
GuiGetDebuggeeNotes(&text);
|
||||
if (text)
|
||||
if(text)
|
||||
{
|
||||
json_object_set_new(root, "notes", json_string(text));
|
||||
BridgeFree(text);
|
||||
|
@ -65,10 +65,10 @@ void DBSave(LOAD_SAVE_DB_TYPE saveType)
|
|||
}
|
||||
|
||||
WString wdbpath = StringUtils::Utf8ToUtf16(dbpath);
|
||||
if (json_object_size(root))
|
||||
if(json_object_size(root))
|
||||
{
|
||||
Handle hFile = CreateFileW(wdbpath.c_str(), GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
|
||||
if (!hFile)
|
||||
if(!hFile)
|
||||
{
|
||||
dputs("\nFailed to open database for writing!");
|
||||
json_decref(root); //free root
|
||||
|
@ -77,7 +77,7 @@ void DBSave(LOAD_SAVE_DB_TYPE saveType)
|
|||
SetEndOfFile(hFile);
|
||||
char* jsonText = json_dumps(root, JSON_INDENT(4));
|
||||
DWORD written = 0;
|
||||
if (!WriteFile(hFile, jsonText, (DWORD)strlen(jsonText), &written, 0))
|
||||
if(!WriteFile(hFile, jsonText, (DWORD)strlen(jsonText), &written, 0))
|
||||
{
|
||||
json_free(jsonText);
|
||||
dputs("\nFailed to write database file!");
|
||||
|
@ -86,7 +86,7 @@ void DBSave(LOAD_SAVE_DB_TYPE saveType)
|
|||
}
|
||||
hFile.Close();
|
||||
json_free(jsonText);
|
||||
if (!settingboolget("Engine", "DisableDatabaseCompression"))
|
||||
if(!settingboolget("Engine", "DisableDatabaseCompression"))
|
||||
LZ4_compress_fileW(wdbpath.c_str(), wdbpath.c_str());
|
||||
}
|
||||
else //remove database when nothing is in there
|
||||
|
@ -98,7 +98,7 @@ void DBSave(LOAD_SAVE_DB_TYPE saveType)
|
|||
void DBLoad(LOAD_SAVE_DB_TYPE loadType)
|
||||
{
|
||||
// If the file doesn't exist, there is no DB to load
|
||||
if (!FileExists(dbpath))
|
||||
if(!FileExists(dbpath))
|
||||
return;
|
||||
|
||||
dprintf("Loading database...");
|
||||
|
@ -114,7 +114,7 @@ void DBLoad(LOAD_SAVE_DB_TYPE loadType)
|
|||
lzmaStatus = LZ4_decompress_fileW(databasePathW.c_str(), databasePathW.c_str());
|
||||
|
||||
// Check return code
|
||||
if (useCompression && lzmaStatus != LZ4_SUCCESS && lzmaStatus != LZ4_INVALID_ARCHIVE)
|
||||
if(useCompression && lzmaStatus != LZ4_SUCCESS && lzmaStatus != LZ4_INVALID_ARCHIVE)
|
||||
{
|
||||
dputs("\nInvalid database file!");
|
||||
return;
|
||||
|
@ -123,14 +123,14 @@ void DBLoad(LOAD_SAVE_DB_TYPE loadType)
|
|||
|
||||
// Read the database file
|
||||
Handle hFile = CreateFileW(databasePathW.c_str(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
|
||||
if (!hFile)
|
||||
if(!hFile)
|
||||
{
|
||||
dputs("\nFailed to open database file!");
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned int jsonFileSize = GetFileSize(hFile, 0);
|
||||
if (!jsonFileSize)
|
||||
if(!jsonFileSize)
|
||||
{
|
||||
dputs("\nEmpty database file!");
|
||||
return;
|
||||
|
@ -138,7 +138,7 @@ void DBLoad(LOAD_SAVE_DB_TYPE loadType)
|
|||
|
||||
Memory<char*> jsonText(jsonFileSize + 1);
|
||||
DWORD read = 0;
|
||||
if (!ReadFile(hFile, jsonText(), jsonFileSize, &read, 0))
|
||||
if(!ReadFile(hFile, jsonText(), jsonFileSize, &read, 0))
|
||||
{
|
||||
dputs("\nFailed to read database file!");
|
||||
return;
|
||||
|
@ -148,23 +148,23 @@ void DBLoad(LOAD_SAVE_DB_TYPE loadType)
|
|||
// Deserialize JSON
|
||||
JSON root = json_loads(jsonText(), 0, 0);
|
||||
|
||||
if (lzmaStatus != LZ4_INVALID_ARCHIVE && useCompression)
|
||||
if(lzmaStatus != LZ4_INVALID_ARCHIVE && useCompression)
|
||||
LZ4_compress_fileW(databasePathW.c_str(), databasePathW.c_str());
|
||||
|
||||
// Validate JSON load status
|
||||
if (!root)
|
||||
if(!root)
|
||||
{
|
||||
dputs("\nInvalid database file (JSON)!");
|
||||
return;
|
||||
}
|
||||
|
||||
// Load only command line
|
||||
if (loadType == COMMAND_LINE_ONLY || loadType == ALL)
|
||||
if(loadType == COMMAND_LINE_ONLY || loadType == ALL)
|
||||
{
|
||||
CmdLineCacheLoad(root);
|
||||
}
|
||||
|
||||
if (loadType == ALL_BUT_COMMAND_LINE || loadType == ALL)
|
||||
if(loadType == ALL_BUT_COMMAND_LINE || loadType == ALL)
|
||||
{
|
||||
// Finally load all structures
|
||||
CommentCacheLoad(root);
|
||||
|
@ -196,10 +196,10 @@ void DBClose()
|
|||
PatchClear();
|
||||
}
|
||||
|
||||
void DBSetPath(const char *Directory, const char *ModulePath)
|
||||
void DBSetPath(const char* Directory, const char* ModulePath)
|
||||
{
|
||||
// Initialize directory if it was only supplied
|
||||
if (Directory)
|
||||
if(Directory)
|
||||
{
|
||||
ASSERT_TRUE(strlen(Directory) > 0);
|
||||
|
||||
|
@ -207,22 +207,22 @@ void DBSetPath(const char *Directory, const char *ModulePath)
|
|||
strcpy_s(dbbasepath, Directory);
|
||||
|
||||
// Create directory
|
||||
if (!CreateDirectoryW(StringUtils::Utf8ToUtf16(Directory).c_str(), nullptr))
|
||||
if(!CreateDirectoryW(StringUtils::Utf8ToUtf16(Directory).c_str(), nullptr))
|
||||
{
|
||||
if (GetLastError() != ERROR_ALREADY_EXISTS)
|
||||
if(GetLastError() != ERROR_ALREADY_EXISTS)
|
||||
dprintf("Warning: Failed to create database folder '%s'. Path may be read only.\n", Directory);
|
||||
}
|
||||
}
|
||||
|
||||
// The database file path may be relative (dbbasepath) or a full path
|
||||
if (ModulePath)
|
||||
if(ModulePath)
|
||||
{
|
||||
ASSERT_TRUE(strlen(ModulePath) > 0);
|
||||
|
||||
#ifdef _WIN64
|
||||
const char *dbType = "dd64";
|
||||
const char* dbType = "dd64";
|
||||
#else
|
||||
const char *dbType = "dd32";
|
||||
const char* dbType = "dd32";
|
||||
#endif // _WIN64
|
||||
|
||||
// Get the module name and directory
|
||||
|
@ -235,7 +235,7 @@ void DBSetPath(const char *Directory, const char *ModulePath)
|
|||
// Find the last instance of a path delimiter (slash)
|
||||
char* fileStart = strrchr(fileDir, '\\');
|
||||
|
||||
if (fileStart)
|
||||
if(fileStart)
|
||||
{
|
||||
strcpy_s(dbName, fileStart + 1);
|
||||
fileStart[0] = '\0';
|
||||
|
@ -247,7 +247,7 @@ void DBSetPath(const char *Directory, const char *ModulePath)
|
|||
}
|
||||
}
|
||||
|
||||
if (settingboolget("Engine", "SaveDatabaseInProgramDirectory"))
|
||||
if(settingboolget("Engine", "SaveDatabaseInProgramDirectory"))
|
||||
{
|
||||
// Absolute path in the program directory
|
||||
sprintf_s(dbpath, "%s\\%s.%s", fileDir, dbName, dbType);
|
||||
|
|
|
@ -12,4 +12,4 @@ enum LOAD_SAVE_DB_TYPE
|
|||
void DBSave(LOAD_SAVE_DB_TYPE saveType);
|
||||
void DBLoad(LOAD_SAVE_DB_TYPE loadType);
|
||||
void DBClose();
|
||||
void DBSetPath(const char *Directory, const char *ModulePath);
|
||||
void DBSetPath(const char* Directory, const char* ModulePath);
|
|
@ -242,10 +242,10 @@ void DebugUpdateGui(duint disasm_addr, bool stack)
|
|||
|
||||
void DebugUpdateStack(duint dumpAddr, duint csp, bool forceDump)
|
||||
{
|
||||
if (!forceDump && bFreezeStack)
|
||||
if(!forceDump && bFreezeStack)
|
||||
{
|
||||
SELECTIONDATA selection;
|
||||
if (GuiSelectionGet(GUI_STACK, &selection))
|
||||
if(GuiSelectionGet(GUI_STACK, &selection))
|
||||
dumpAddr = selection.start;
|
||||
}
|
||||
GuiStackDumpAt(dumpAddr, csp);
|
||||
|
@ -523,9 +523,9 @@ bool cbSetModuleBreakpoints(const BREAKPOINT* bp)
|
|||
case BPNORMAL:
|
||||
{
|
||||
unsigned short oldbytes;
|
||||
if (MemRead(bp->addr, &oldbytes, sizeof(oldbytes)))
|
||||
if(MemRead(bp->addr, &oldbytes, sizeof(oldbytes)))
|
||||
{
|
||||
if (oldbytes != bp->oldbytes)
|
||||
if(oldbytes != bp->oldbytes)
|
||||
{
|
||||
dprintf("Breakpoint " fhex " has been disabled because the bytes don't match! Expected: %02X %02X, Found: %02X %02X\n",
|
||||
bp->addr,
|
||||
|
@ -533,7 +533,7 @@ bool cbSetModuleBreakpoints(const BREAKPOINT* bp)
|
|||
((unsigned char*)&oldbytes)[0], ((unsigned char*)&oldbytes)[1]);
|
||||
BpEnable(bp->addr, BPNORMAL, false);
|
||||
}
|
||||
else if (!SetBPX(bp->addr, bp->titantype, (void*)cbUserBreakpoint))
|
||||
else if(!SetBPX(bp->addr, bp->titantype, (void*)cbUserBreakpoint))
|
||||
dprintf("Could not set breakpoint " fhex "! (SetBPX)\n", bp->addr);
|
||||
}
|
||||
else
|
||||
|
@ -1158,12 +1158,12 @@ DWORD WINAPI threadDebugLoop(void* lpParameter)
|
|||
DBSetPath(nullptr, szFileName);
|
||||
DBLoad(COMMAND_LINE_ONLY);
|
||||
|
||||
if (!isCmdLineEmpty())
|
||||
if(!isCmdLineEmpty())
|
||||
{
|
||||
char* commandLineArguments = NULL;
|
||||
commandLineArguments = getCommandLineArgs();
|
||||
|
||||
if (commandLineArguments)
|
||||
if(commandLineArguments)
|
||||
init->commandline = commandLineArguments;
|
||||
}
|
||||
|
||||
|
|
|
@ -1027,10 +1027,10 @@ CMDRESULT cbDebugDump(int argc, char* argv[])
|
|||
dprintf("Invalid address \"%s\"!\n", argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if (argc > 2)
|
||||
if(argc > 2)
|
||||
{
|
||||
duint index = 0;
|
||||
if (!valfromstring(argv[2], &index))
|
||||
if(!valfromstring(argv[2], &index))
|
||||
{
|
||||
dprintf("Invalid address \"%s\"!\n", argv[2]);
|
||||
return STATUS_ERROR;
|
||||
|
@ -2105,7 +2105,7 @@ CMDRESULT cbDebugSkip(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbDebugSetfreezestack(int argc, char* argv[])
|
||||
{
|
||||
if (argc < 2)
|
||||
if(argc < 2)
|
||||
{
|
||||
dputs("Not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
bool FileHelper::ReadAllData(const String & fileName, std::vector<unsigned char> & content)
|
||||
{
|
||||
Handle hFile = CreateFileW(StringUtils::Utf8ToUtf16(fileName).c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
if(hFile == INVALID_HANDLE_VALUE)
|
||||
return false;
|
||||
unsigned int filesize = GetFileSize(hFile, 0);
|
||||
if (!filesize)
|
||||
if(!filesize)
|
||||
{
|
||||
content.clear();
|
||||
return true;
|
||||
}
|
||||
Memory<char*> filedata(filesize + 1, "FileReader::ReadAllData:filedata");
|
||||
DWORD read = 0;
|
||||
if (!ReadFile(hFile, filedata(), filesize, &read, nullptr))
|
||||
if(!ReadFile(hFile, filedata(), filesize, &read, nullptr))
|
||||
return false;
|
||||
content = std::vector<unsigned char>(filedata(), filedata() + filesize);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FileHelper::WriteAllData(const String& fileName, const void* data, size_t size)
|
||||
bool FileHelper::WriteAllData(const String & fileName, const void* data, size_t size)
|
||||
{
|
||||
Handle hFile = CreateFileW(StringUtils::Utf8ToUtf16(fileName).c_str(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, 0, nullptr);
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
if(hFile == INVALID_HANDLE_VALUE)
|
||||
return false;
|
||||
DWORD written = 0;
|
||||
return !!WriteFile(hFile, data, DWORD(size), &written, nullptr);
|
||||
|
@ -31,7 +31,7 @@ bool FileHelper::WriteAllData(const String& fileName, const void* data, size_t s
|
|||
bool FileHelper::ReadAllText(const String & fileName, String & content)
|
||||
{
|
||||
std::vector<unsigned char> data;
|
||||
if (!ReadAllData(fileName, data))
|
||||
if(!ReadAllData(fileName, data))
|
||||
return false;
|
||||
data.push_back(0);
|
||||
content = String((const char*)data.data());
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -4,11 +4,11 @@ bool IsProcessElevated()
|
|||
{
|
||||
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
|
||||
PSID SecurityIdentifier;
|
||||
if (!AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &SecurityIdentifier))
|
||||
if(!AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &SecurityIdentifier))
|
||||
return 0;
|
||||
|
||||
BOOL IsAdminMember;
|
||||
if (!CheckTokenMembership(NULL, SecurityIdentifier, &IsAdminMember))
|
||||
if(!CheckTokenMembership(NULL, SecurityIdentifier, &IsAdminMember))
|
||||
IsAdminMember = FALSE;
|
||||
|
||||
FreeSid(SecurityIdentifier);
|
||||
|
@ -22,14 +22,14 @@ static bool readwritejitkey(wchar_t* jit_key_value, DWORD* jit_key_vale_size, ch
|
|||
HKEY hKey;
|
||||
DWORD dwDisposition;
|
||||
|
||||
if (error != NULL)
|
||||
if(error != NULL)
|
||||
*error = ERROR_RW;
|
||||
|
||||
if (write)
|
||||
if(write)
|
||||
{
|
||||
if (!IsProcessElevated())
|
||||
if(!IsProcessElevated())
|
||||
{
|
||||
if (error != NULL)
|
||||
if(error != NULL)
|
||||
*error = ERROR_RW_NOTADMIN;
|
||||
return false;
|
||||
}
|
||||
|
@ -38,9 +38,9 @@ static bool readwritejitkey(wchar_t* jit_key_value, DWORD* jit_key_vale_size, ch
|
|||
else
|
||||
key_flags = KEY_READ;
|
||||
|
||||
if (arch_out != NULL)
|
||||
if(arch_out != NULL)
|
||||
{
|
||||
if (arch_in != x64 && arch_in != x32)
|
||||
if(arch_in != x64 && arch_in != x32)
|
||||
{
|
||||
#ifdef _WIN64
|
||||
*arch_out = x64;
|
||||
|
@ -52,29 +52,29 @@ static bool readwritejitkey(wchar_t* jit_key_value, DWORD* jit_key_vale_size, ch
|
|||
*arch_out = arch_in;
|
||||
}
|
||||
|
||||
if (arch_in == x64)
|
||||
if(arch_in == x64)
|
||||
{
|
||||
#ifndef _WIN64
|
||||
if (!IsWow64())
|
||||
if(!IsWow64())
|
||||
{
|
||||
if (error != NULL)
|
||||
if(error != NULL)
|
||||
*error = ERROR_RW_NOTWOW64;
|
||||
return false;
|
||||
}
|
||||
key_flags |= KEY_WOW64_64KEY;
|
||||
#endif //_WIN64
|
||||
}
|
||||
else if (arch_in == x32)
|
||||
else if(arch_in == x32)
|
||||
{
|
||||
#ifdef _WIN64
|
||||
key_flags |= KEY_WOW64_32KEY;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (write)
|
||||
if(write)
|
||||
{
|
||||
lRv = RegCreateKeyExW(HKEY_LOCAL_MACHINE, JIT_REG_KEY, 0, NULL, REG_OPTION_NON_VOLATILE, key_flags, NULL, &hKey, &dwDisposition);
|
||||
if (lRv != ERROR_SUCCESS)
|
||||
if(lRv != ERROR_SUCCESS)
|
||||
return false;
|
||||
|
||||
lRv = RegSetValueExW(hKey, StringUtils::Utf8ToUtf16(key).c_str(), 0, REG_SZ, (BYTE*)jit_key_value, (DWORD)(*jit_key_vale_size) + 1);
|
||||
|
@ -82,17 +82,17 @@ static bool readwritejitkey(wchar_t* jit_key_value, DWORD* jit_key_vale_size, ch
|
|||
else
|
||||
{
|
||||
lRv = RegOpenKeyExW(HKEY_LOCAL_MACHINE, JIT_REG_KEY, 0, key_flags, &hKey);
|
||||
if (lRv != ERROR_SUCCESS)
|
||||
if(lRv != ERROR_SUCCESS)
|
||||
{
|
||||
if (error != NULL)
|
||||
if(error != NULL)
|
||||
*error = ERROR_RW_FILE_NOT_FOUND;
|
||||
return false;
|
||||
}
|
||||
|
||||
lRv = RegQueryValueExW(hKey, StringUtils::Utf8ToUtf16(key).c_str(), 0, NULL, (LPBYTE)jit_key_value, jit_key_vale_size);
|
||||
if (lRv != ERROR_SUCCESS)
|
||||
if(lRv != ERROR_SUCCESS)
|
||||
{
|
||||
if (error != NULL)
|
||||
if(error != NULL)
|
||||
*error = ERROR_RW_FILE_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
@ -107,19 +107,19 @@ bool dbggetjitauto(bool* auto_on, arch arch_in, arch* arch_out, readwritejitkey_
|
|||
DWORD jit_entry_size = sizeof(jit_entry) - 1;
|
||||
readwritejitkey_error_t rw_error;
|
||||
|
||||
if (!readwritejitkey(jit_entry, &jit_entry_size, "Auto", arch_in, arch_out, &rw_error, false))
|
||||
if(!readwritejitkey(jit_entry, &jit_entry_size, "Auto", arch_in, arch_out, &rw_error, false))
|
||||
{
|
||||
if (rw_error == ERROR_RW_FILE_NOT_FOUND)
|
||||
if(rw_error == ERROR_RW_FILE_NOT_FOUND)
|
||||
{
|
||||
if (rw_error_out != NULL)
|
||||
if(rw_error_out != NULL)
|
||||
*rw_error_out = rw_error;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (_wcsicmp(jit_entry, L"1") == 0)
|
||||
if(_wcsicmp(jit_entry, L"1") == 0)
|
||||
*auto_on = true;
|
||||
else if (_wcsicmp(jit_entry, L"0") == 0)
|
||||
else if(_wcsicmp(jit_entry, L"0") == 0)
|
||||
*auto_on = false;
|
||||
else
|
||||
return false;
|
||||
|
@ -130,19 +130,19 @@ bool dbgsetjitauto(bool auto_on, arch arch_in, arch* arch_out, readwritejitkey_e
|
|||
{
|
||||
DWORD auto_string_size = sizeof(L"1");
|
||||
readwritejitkey_error_t rw_error;
|
||||
if (!auto_on)
|
||||
if(!auto_on)
|
||||
{
|
||||
wchar_t jit_entry[4] = L"";
|
||||
DWORD jit_entry_size = sizeof(jit_entry) - 1;
|
||||
if (!readwritejitkey(jit_entry, &jit_entry_size, "Auto", arch_in, arch_out, &rw_error, false))
|
||||
if(!readwritejitkey(jit_entry, &jit_entry_size, "Auto", arch_in, arch_out, &rw_error, false))
|
||||
{
|
||||
if (rw_error == ERROR_RW_FILE_NOT_FOUND)
|
||||
if(rw_error == ERROR_RW_FILE_NOT_FOUND)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (!readwritejitkey(auto_on ? L"1" : L"0", &auto_string_size, "Auto", arch_in, arch_out, &rw_error, true))
|
||||
if(!readwritejitkey(auto_on ? L"1" : L"0", &auto_string_size, "Auto", arch_in, arch_out, &rw_error, true))
|
||||
{
|
||||
if (rw_error_out != NULL)
|
||||
if(rw_error_out != NULL)
|
||||
*rw_error_out = rw_error;
|
||||
return false;
|
||||
}
|
||||
|
@ -154,9 +154,9 @@ bool dbggetjit(char jit_entry[JIT_ENTRY_MAX_SIZE], arch arch_in, arch* arch_out,
|
|||
wchar_t wszJitEntry[JIT_ENTRY_MAX_SIZE] = L"";
|
||||
DWORD jit_entry_size = JIT_ENTRY_MAX_SIZE * sizeof(wchar_t);
|
||||
readwritejitkey_error_t rw_error;
|
||||
if (!readwritejitkey(wszJitEntry, &jit_entry_size, "Debugger", arch_in, arch_out, &rw_error, false))
|
||||
if(!readwritejitkey(wszJitEntry, &jit_entry_size, "Debugger", arch_in, arch_out, &rw_error, false))
|
||||
{
|
||||
if (rw_error_out != NULL)
|
||||
if(rw_error_out != NULL)
|
||||
*rw_error_out = rw_error;
|
||||
return false;
|
||||
}
|
||||
|
@ -180,9 +180,9 @@ bool dbgsetjit(char* jit_cmd, arch arch_in, arch* arch_out, readwritejitkey_erro
|
|||
{
|
||||
DWORD jit_cmd_size = (DWORD)strlen(jit_cmd) * sizeof(wchar_t);
|
||||
readwritejitkey_error_t rw_error;
|
||||
if (!readwritejitkey((wchar_t*)StringUtils::Utf8ToUtf16(jit_cmd).c_str(), &jit_cmd_size, "Debugger", arch_in, arch_out, &rw_error, true))
|
||||
if(!readwritejitkey((wchar_t*)StringUtils::Utf8ToUtf16(jit_cmd).c_str(), &jit_cmd_size, "Debugger", arch_in, arch_out, &rw_error, true))
|
||||
{
|
||||
if (rw_error_out != NULL)
|
||||
if(rw_error_out != NULL)
|
||||
*rw_error_out = rw_error;
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ typedef enum
|
|||
} readwritejitkey_error_t;
|
||||
|
||||
bool IsProcessElevated();
|
||||
bool dbggetjit(char *jit_entry, arch arch_in, arch* arch_out, readwritejitkey_error_t* rw_error_out);
|
||||
bool dbggetjit(char* jit_entry, arch arch_in, arch* arch_out, readwritejitkey_error_t* rw_error_out);
|
||||
bool dbgsetjit(char* jit_cmd, arch arch_in, arch* arch_out, readwritejitkey_error_t* rw_error_out);
|
||||
bool dbggetjitauto(bool* auto_on, arch arch_in, arch* arch_out, readwritejitkey_error_t* rw_error_out);
|
||||
bool dbgsetjitauto(bool auto_on, arch arch_in, arch* arch_out, readwritejitkey_error_t* rw_error_out);
|
||||
|
|
|
@ -50,16 +50,16 @@ void MemUpdateMap()
|
|||
memset(&curPage, 0, sizeof(MEMPAGE));
|
||||
memcpy(&curPage.mbi, &mbi, sizeof(mbi));
|
||||
|
||||
if (!ModNameFromAddr(pageStart, curPage.info, true))
|
||||
if(!ModNameFromAddr(pageStart, curPage.info, true))
|
||||
{
|
||||
// Module lookup failed; check if it's a file mapping
|
||||
wchar_t szMappedName[sizeof(curPage.info)] = L"";
|
||||
if ((mbi.Type == MEM_MAPPED) &&
|
||||
if((mbi.Type == MEM_MAPPED) &&
|
||||
(GetMappedFileNameW(fdProcessInfo->hProcess, mbi.AllocationBase, szMappedName, MAX_MODULE_SIZE) != 0))
|
||||
{
|
||||
bool bFileNameOnly = false; //TODO: setting for this
|
||||
auto fileStart = wcsrchr(szMappedName, L'\\');
|
||||
if (bFileNameOnly && fileStart)
|
||||
if(bFileNameOnly && fileStart)
|
||||
strcpy_s(curPage.info, StringUtils::Utf16ToUtf8(fileStart + 1).c_str());
|
||||
else
|
||||
strcpy_s(curPage.info, StringUtils::Utf16ToUtf8(szMappedName).c_str());
|
||||
|
@ -160,26 +160,26 @@ void MemUpdateMap()
|
|||
THREADLIST threadList;
|
||||
ThreadGetList(&threadList);
|
||||
|
||||
for (auto & page : pageVector)
|
||||
for(auto & page : pageVector)
|
||||
{
|
||||
const duint pageBase = (duint)page.mbi.BaseAddress;
|
||||
const duint pageSize = (duint)page.mbi.RegionSize;
|
||||
|
||||
// Check for windows specific data
|
||||
if (pageBase == 0x7FFE0000)
|
||||
if(pageBase == 0x7FFE0000)
|
||||
{
|
||||
strcpy_s(page.info, "KUSER_SHARED_DATA");
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check in threads
|
||||
for (int i = 0; i < threadList.count; i++)
|
||||
for(int i = 0; i < threadList.count; i++)
|
||||
{
|
||||
duint tebBase = threadList.list[i].BasicInfo.ThreadLocalBase;
|
||||
DWORD threadId = threadList.list[i].BasicInfo.ThreadId;
|
||||
|
||||
// Mark TEB
|
||||
if (pageBase == tebBase)
|
||||
if(pageBase == tebBase)
|
||||
{
|
||||
sprintf_s(page.info, "Thread %X TEB", threadId);
|
||||
break;
|
||||
|
@ -187,19 +187,19 @@ void MemUpdateMap()
|
|||
|
||||
// Read the TEB to get stack information
|
||||
TEB teb;
|
||||
if (!ThreadGetTeb(tebBase, &teb))
|
||||
if(!ThreadGetTeb(tebBase, &teb))
|
||||
continue;
|
||||
|
||||
// The stack will be a specific range only, not always the base address
|
||||
duint stackAddr = (duint)teb.Tib.StackLimit;
|
||||
|
||||
if (stackAddr >= pageBase && stackAddr < (pageBase + pageSize))
|
||||
if(stackAddr >= pageBase && stackAddr < (pageBase + pageSize))
|
||||
sprintf_s(page.info, "Thread %X Stack", threadId);
|
||||
}
|
||||
}
|
||||
|
||||
// Only free thread data if it was allocated
|
||||
if (threadList.list)
|
||||
if(threadList.list)
|
||||
BridgeFree(threadList.list);
|
||||
|
||||
// Convert the vector to a map
|
||||
|
@ -360,9 +360,9 @@ bool MemPatch(duint BaseAddress, const void* Buffer, duint Size, duint* NumberOf
|
|||
}
|
||||
|
||||
// Are we able to write on this page?
|
||||
if (MemWrite(BaseAddress, Buffer, Size, NumberOfBytesWritten))
|
||||
if(MemWrite(BaseAddress, Buffer, Size, NumberOfBytesWritten))
|
||||
{
|
||||
for (duint i = 0; i < Size; i++)
|
||||
for(duint i = 0; i < Size; i++)
|
||||
PatchSet(BaseAddress + i, oldData()[i], ((const unsigned char*)Buffer)[i]);
|
||||
|
||||
// Done
|
||||
|
|
|
@ -301,7 +301,7 @@ bool ModImportsFromAddr(duint Address, std::vector<MODIMPORTINFO>* Imports)
|
|||
|
||||
auto module = ModInfoFromAddr(Address);
|
||||
|
||||
if (!module)
|
||||
if(!module)
|
||||
return false;
|
||||
|
||||
// Copy vector <-> vector
|
||||
|
@ -351,23 +351,23 @@ bool ModAddImportToModule(duint Base, MODIMPORTINFO importInfo)
|
|||
{
|
||||
SHARED_ACQUIRE(LockModules);
|
||||
|
||||
if (!Base || !importInfo.addr)
|
||||
if(!Base || !importInfo.addr)
|
||||
return false;
|
||||
|
||||
auto module = ModInfoFromAddr(Base);
|
||||
|
||||
if (!module)
|
||||
if(!module)
|
||||
return false;
|
||||
|
||||
// Search in Import Vector
|
||||
std::vector<MODIMPORTINFO> *pImports = &(module->imports);
|
||||
std::vector<MODIMPORTINFO>* pImports = &(module->imports);
|
||||
auto it = std::find_if(pImports->begin(), pImports->end(), [&importInfo](MODIMPORTINFO currentImportInfo)->bool
|
||||
{
|
||||
return (importInfo.addr == currentImportInfo.addr);
|
||||
});
|
||||
|
||||
// Import in the list already
|
||||
if (it != pImports->end())
|
||||
if(it != pImports->end())
|
||||
return false;
|
||||
|
||||
// Add import to imports vector
|
||||
|
|
|
@ -216,14 +216,14 @@ int PatchFile(const PATCHINFO* List, int Count, const char* FileName, char* Erro
|
|||
char modPath[MAX_PATH] = "";
|
||||
if(!ModPathFromAddr(moduleBase, modPath, MAX_PATH))
|
||||
{
|
||||
if (Error)
|
||||
if(Error)
|
||||
sprintf_s(Error, MAX_ERROR_SIZE, "Failed to get module path of module %s", moduleName);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Create a temporary backup file
|
||||
if (!CopyFileW(StringUtils::Utf8ToUtf16(modPath).c_str(), StringUtils::Utf8ToUtf16(FileName).c_str(), false))
|
||||
if(!CopyFileW(StringUtils::Utf8ToUtf16(modPath).c_str(), StringUtils::Utf8ToUtf16(FileName).c_str(), false))
|
||||
{
|
||||
if(Error)
|
||||
strcpy_s(Error, MAX_ERROR_SIZE, "Failed to make a copy of the original file (patch target is in use?)");
|
||||
|
|
|
@ -18,15 +18,15 @@ int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Sile
|
|||
REFINFO refInfo;
|
||||
|
||||
// Search in current Region
|
||||
if (type == CURRENT_REGION)
|
||||
if(type == CURRENT_REGION)
|
||||
{
|
||||
duint regionSize = 0;
|
||||
duint regionBase = MemFindBaseAddr(Address, ®ionSize, true);
|
||||
|
||||
// If the memory page wasn't found, fail
|
||||
if (!regionBase || !regionSize)
|
||||
if(!regionBase || !regionSize)
|
||||
{
|
||||
if (!Silent)
|
||||
if(!Silent)
|
||||
dprintf("Invalid memory page 0x%p\n", Address);
|
||||
|
||||
return 0;
|
||||
|
@ -47,7 +47,7 @@ int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Sile
|
|||
}
|
||||
|
||||
// Determine the full module name
|
||||
if (ModNameFromAddr(scanStart, moduleName, true))
|
||||
if(ModNameFromAddr(scanStart, moduleName, true))
|
||||
sprintf_s(fullName, "%s (Region %s)", Name, moduleName);
|
||||
else
|
||||
sprintf_s(fullName, "%s (Region %p)", Name, scanStart);
|
||||
|
@ -69,20 +69,20 @@ int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Sile
|
|||
|
||||
GuiReferenceReloadData();
|
||||
|
||||
if (!refFindInRangeRet)
|
||||
if(!refFindInRangeRet)
|
||||
return refFindInRangeRet;
|
||||
|
||||
refInfo.refcount += refFindInRangeRet;
|
||||
}
|
||||
|
||||
// Search in current Module
|
||||
else if (type == CURRENT_MODULE)
|
||||
else if(type == CURRENT_MODULE)
|
||||
{
|
||||
MODINFO *modInfo = ModInfoFromAddr(Address);
|
||||
MODINFO* modInfo = ModInfoFromAddr(Address);
|
||||
|
||||
if (!modInfo)
|
||||
if(!modInfo)
|
||||
{
|
||||
if (!Silent)
|
||||
if(!Silent)
|
||||
dprintf("Couldn't locate module for 0x%p\n", Address);
|
||||
|
||||
return 0;
|
||||
|
@ -95,7 +95,7 @@ int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Sile
|
|||
scanSize = modSize;
|
||||
|
||||
// Determine the full module name
|
||||
if (ModNameFromAddr(scanStart, moduleName, true))
|
||||
if(ModNameFromAddr(scanStart, moduleName, true))
|
||||
sprintf_s(fullName, "%s (%s)", Name, moduleName);
|
||||
else
|
||||
sprintf_s(fullName, "%s (%p)", Name, scanStart);
|
||||
|
@ -115,22 +115,22 @@ int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Sile
|
|||
});
|
||||
|
||||
|
||||
if (!refFindInRangeRet)
|
||||
if(!refFindInRangeRet)
|
||||
return refFindInRangeRet;
|
||||
|
||||
GuiReferenceReloadData();
|
||||
}
|
||||
|
||||
// Search in all Modules
|
||||
else if (type == ALL_MODULES)
|
||||
else if(type == ALL_MODULES)
|
||||
{
|
||||
bool initCallBack = true;
|
||||
std::vector<MODINFO > modList;
|
||||
std::vector<MODINFO> modList;
|
||||
ModGetList(modList);
|
||||
|
||||
if (!modList.size())
|
||||
if(!modList.size())
|
||||
{
|
||||
if (!Silent)
|
||||
if(!Silent)
|
||||
dprintf("Couldn't get module list");
|
||||
|
||||
return 0;
|
||||
|
@ -147,12 +147,12 @@ int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Sile
|
|||
refInfo.userinfo = UserData;
|
||||
refInfo.name = fullName;
|
||||
|
||||
for (duint i = 0; i < modList.size(); i++)
|
||||
for(duint i = 0; i < modList.size(); i++)
|
||||
{
|
||||
scanStart = modList[i].base;
|
||||
scanSize = modList[i].size;
|
||||
|
||||
if (i != 0)
|
||||
if(i != 0)
|
||||
initCallBack = false;
|
||||
|
||||
refFindInRangeRet = RefFindInRange(scanStart, scanSize, Callback, UserData, Silent, refInfo, cp, initCallBack, [&i, &modList](int percent)
|
||||
|
@ -170,7 +170,7 @@ int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Sile
|
|||
});
|
||||
|
||||
|
||||
if (!refFindInRangeRet)
|
||||
if(!refFindInRangeRet)
|
||||
return refFindInRangeRet;
|
||||
|
||||
GuiReferenceReloadData();
|
||||
|
@ -183,7 +183,7 @@ int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Sile
|
|||
}
|
||||
|
||||
|
||||
int RefFindInRange(duint scanStart, duint scanSize, CBREF Callback, void* UserData, bool Silent, REFINFO &refInfo, Capstone &cp, bool initCallBack, CBPROGRESS cbUpdateProgress)
|
||||
int RefFindInRange(duint scanStart, duint scanSize, CBREF Callback, void* UserData, bool Silent, REFINFO & refInfo, Capstone & cp, bool initCallBack, CBPROGRESS cbUpdateProgress)
|
||||
{
|
||||
// Allocate and read a buffer from the remote process
|
||||
Memory<unsigned char*> data(scanSize, "reffind:data");
|
||||
|
@ -216,7 +216,7 @@ int RefFindInRange(duint scanStart, duint scanSize, CBREF Callback, void* UserDa
|
|||
int disasmMaxSize = min(MAX_DISASM_BUFFER, (int)(scanSize - i)); // Prevent going past the boundary
|
||||
int disasmLen = 1;
|
||||
|
||||
if (cp.Disassemble(scanStart, data() + i, disasmMaxSize))
|
||||
if(cp.Disassemble(scanStart, data() + i, disasmMaxSize))
|
||||
{
|
||||
BASIC_INSTRUCTION_INFO basicinfo;
|
||||
fillbasicinfo(&cp, &basicinfo);
|
||||
|
|
|
@ -20,7 +20,7 @@ typedef enum
|
|||
|
||||
// Reference callback typedef
|
||||
typedef bool (*CBREF)(Capstone* disasm, BASIC_INSTRUCTION_INFO* basicinfo, REFINFO* refinfo);
|
||||
typedef std::function<void(int) > CBPROGRESS;
|
||||
typedef std::function<void(int)> CBPROGRESS;
|
||||
|
||||
int RefFind(duint Address, duint Size, CBREF Callback, void* UserData, bool Silent, const char* Name, REFFINDTYPE type);
|
||||
int RefFindInRange(duint scanStart, duint scanSize, CBREF Callback, void* UserData, bool Silent, REFINFO &refInfo, Capstone &cp, bool initCallBack, CBPROGRESS cbUpdateProgress);
|
||||
int RefFindInRange(duint scanStart, duint scanSize, CBREF Callback, void* UserData, bool Silent, REFINFO & refInfo, Capstone & cp, bool initCallBack, CBPROGRESS cbUpdateProgress);
|
||||
|
|
|
@ -157,7 +157,7 @@ static bool scriptcreatelinemap(const char* filename)
|
|||
//temp. remove comments from the raw line
|
||||
char line_comment[256] = "";
|
||||
char* comment = strstr(&cur.raw[0], "//");
|
||||
if (!comment)
|
||||
if(!comment)
|
||||
comment = strstr(&cur.raw[0], ";");
|
||||
if(comment && comment != cur.raw) //only when the line doesnt start with a comment
|
||||
{
|
||||
|
@ -178,7 +178,7 @@ static bool scriptcreatelinemap(const char* filename)
|
|||
{
|
||||
cur.type = lineempty;
|
||||
}
|
||||
else if (!strncmp(cur.raw, "//", 2) || *cur.raw == ';') //comment
|
||||
else if(!strncmp(cur.raw, "//", 2) || *cur.raw == ';') //comment
|
||||
{
|
||||
cur.type = linecomment;
|
||||
strcpy_s(cur.u.comment, cur.raw);
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
|
||||
namespace ValueType
|
||||
{
|
||||
enum ValueType
|
||||
{
|
||||
Unknown,
|
||||
SignedDecimal,
|
||||
UnsignedDecimal,
|
||||
Hex,
|
||||
Pointer,
|
||||
String
|
||||
};
|
||||
enum ValueType
|
||||
{
|
||||
Unknown,
|
||||
SignedDecimal,
|
||||
UnsignedDecimal,
|
||||
Hex,
|
||||
Pointer,
|
||||
String
|
||||
};
|
||||
}
|
||||
|
||||
static String printValue(FormatValueType value, ValueType::ValueType type)
|
||||
|
|
|
@ -31,7 +31,7 @@ BOOL CALLBACK EnumSymbols(PSYMBOL_INFO SymInfo, ULONG SymbolSize, PVOID UserCont
|
|||
// Convert from SYMBOL_INFO to SYMBOLINFO
|
||||
returnValue = SymGetSymbolInfo(SymInfo, &curSymbol, false);
|
||||
|
||||
if (!returnValue)
|
||||
if(!returnValue)
|
||||
return false;
|
||||
|
||||
// Add to the cache
|
||||
|
@ -62,12 +62,12 @@ void SymEnumFromCache(duint Base, CBSYMBOLENUM EnumCallback, void* UserData)
|
|||
symbolCbData.user = UserData;
|
||||
|
||||
// Check if this module is cached in the list
|
||||
if (modulesCacheList.find(Base) != modulesCacheList.end())
|
||||
if(modulesCacheList.find(Base) != modulesCacheList.end())
|
||||
{
|
||||
SymEnumImports(Base, &symbolCbData);
|
||||
|
||||
// Callback
|
||||
for (duint i = 0; i < modulesCacheList[Base].size(); i++)
|
||||
for(duint i = 0; i < modulesCacheList[Base].size(); i++)
|
||||
symbolCbData.cbSymbolEnum(&modulesCacheList[Base].at(i), symbolCbData.user);
|
||||
}
|
||||
else
|
||||
|
@ -320,12 +320,12 @@ bool SymGetSourceLine(duint Cip, char* FileName, int* Line)
|
|||
|
||||
void SymClearMemoryCache()
|
||||
{
|
||||
for (auto& itr : modulesCacheList)
|
||||
for(auto & itr : modulesCacheList)
|
||||
{
|
||||
SYMBOLINFOVECTOR* pModuleVector = &itr.second;
|
||||
|
||||
// Free up previously allocated memory
|
||||
for (duint i = 0; i < pModuleVector->size(); i++)
|
||||
for(duint i = 0; i < pModuleVector->size(); i++)
|
||||
{
|
||||
BridgeFree(pModuleVector->at(i).decoratedSymbol);
|
||||
BridgeFree(pModuleVector->at(i).undecoratedSymbol);
|
||||
|
@ -348,20 +348,20 @@ bool SymGetSymbolInfo(PSYMBOL_INFO SymInfo, SYMBOLINFO* curSymbol, bool isImport
|
|||
strcpy_s(curSymbol->decoratedSymbol, strlen(SymInfo->Name) + 1, SymInfo->Name);
|
||||
|
||||
// Skip bad ordinals
|
||||
if (strstr(SymInfo->Name, "Ordinal"))
|
||||
if(strstr(SymInfo->Name, "Ordinal"))
|
||||
{
|
||||
// Does the symbol point to the module base?
|
||||
if (SymInfo->Address == SymInfo->ModBase)
|
||||
if(SymInfo->Address == SymInfo->ModBase)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Convert a mangled/decorated C++ name to a readable format
|
||||
if (!SafeUnDecorateSymbolName(SymInfo->Name, curSymbol->undecoratedSymbol, MAX_SYM_NAME, UNDNAME_COMPLETE))
|
||||
if(!SafeUnDecorateSymbolName(SymInfo->Name, curSymbol->undecoratedSymbol, MAX_SYM_NAME, UNDNAME_COMPLETE))
|
||||
{
|
||||
BridgeFree(curSymbol->undecoratedSymbol);
|
||||
curSymbol->undecoratedSymbol = nullptr;
|
||||
}
|
||||
else if (!strcmp(curSymbol->decoratedSymbol, curSymbol->undecoratedSymbol))
|
||||
else if(!strcmp(curSymbol->decoratedSymbol, curSymbol->undecoratedSymbol))
|
||||
{
|
||||
BridgeFree(curSymbol->undecoratedSymbol);
|
||||
curSymbol->undecoratedSymbol = nullptr;
|
||||
|
@ -387,7 +387,7 @@ void SymEnumImports(duint Base, SYMBOLCBDATA* pSymbolCbData)
|
|||
pSymInfo->MaxNameLen = MAX_SYM_NAME;
|
||||
|
||||
// Enum imports if none found
|
||||
if (ModImportsFromAddr(Base, &imports) && !imports.size())
|
||||
if(ModImportsFromAddr(Base, &imports) && !imports.size())
|
||||
{
|
||||
// Enum imports from current module
|
||||
apienumimports(Base, [](duint Base, duint Address, char* name, char* moduleName)
|
||||
|
@ -403,15 +403,15 @@ void SymEnumImports(duint Base, SYMBOLCBDATA* pSymbolCbData)
|
|||
}
|
||||
|
||||
// Get imports
|
||||
if (ModImportsFromAddr(Base, &imports) && imports.size())
|
||||
if(ModImportsFromAddr(Base, &imports) && imports.size())
|
||||
{
|
||||
for (duint i = 0; i < imports.size(); i++)
|
||||
for(duint i = 0; i < imports.size(); i++)
|
||||
{
|
||||
// Can we get symbol for the import address?
|
||||
if (SafeSymFromAddr(fdProcessInfo->hProcess, (duint)imports[i].addr, 0, pSymInfo))
|
||||
if(SafeSymFromAddr(fdProcessInfo->hProcess, (duint)imports[i].addr, 0, pSymInfo))
|
||||
{
|
||||
// Does the symbol point to the module base?
|
||||
if (!SymGetSymbolInfo(pSymInfo, &curSymbol, true))
|
||||
if(!SymGetSymbolInfo(pSymInfo, &curSymbol, true))
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
@ -427,9 +427,9 @@ void SymEnumImports(duint Base, SYMBOLCBDATA* pSymbolCbData)
|
|||
strcpy_s(modImportString, imports[i].moduleName);
|
||||
|
||||
// Trim the extension if present
|
||||
char *modExt = strrchr(modImportString, '.');
|
||||
char* modExt = strrchr(modImportString, '.');
|
||||
|
||||
if (modExt)
|
||||
if(modExt)
|
||||
*modExt = '\0';
|
||||
|
||||
// Buffers to hold the decorated and undecorated strings. Must be declared
|
||||
|
@ -437,7 +437,7 @@ void SymEnumImports(duint Base, SYMBOLCBDATA* pSymbolCbData)
|
|||
char undecBuf[MAX_IMPORT_SIZE];
|
||||
char decBuf[MAX_IMPORT_SIZE];
|
||||
|
||||
if (curSymbol.undecoratedSymbol)
|
||||
if(curSymbol.undecoratedSymbol)
|
||||
{
|
||||
// module.undecorated
|
||||
strcpy_s(undecBuf, modImportString);
|
||||
|
@ -446,7 +446,7 @@ void SymEnumImports(duint Base, SYMBOLCBDATA* pSymbolCbData)
|
|||
curSymbol.undecoratedSymbol = undecBuf;
|
||||
}
|
||||
|
||||
if (curSymbol.decoratedSymbol)
|
||||
if(curSymbol.decoratedSymbol)
|
||||
{
|
||||
// module.decorated
|
||||
strcpy_s(decBuf, modImportString);
|
||||
|
|
|
@ -78,7 +78,7 @@ void ThreadGetList(THREADLIST* List)
|
|||
List->count = (int)threadList.size();
|
||||
List->list = nullptr;
|
||||
|
||||
if (List->count <= 0)
|
||||
if(List->count <= 0)
|
||||
return;
|
||||
|
||||
// Allocate C-style array
|
||||
|
|
|
@ -1641,7 +1641,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
|
|||
*isvar = true;
|
||||
return true;
|
||||
}
|
||||
else if (strstr(string, "sub_") == string) //then come sub_ functions
|
||||
else if(strstr(string, "sub_") == string) //then come sub_ functions
|
||||
{
|
||||
auto result = sscanf(string, "sub_%" fext "X", value) == 1;
|
||||
duint start;
|
||||
|
|
|
@ -249,10 +249,10 @@ static DWORD WINAPI DbgCommandLoopThread(void* a)
|
|||
|
||||
extern "C" DLL_EXPORT const char* _dbg_dbginit()
|
||||
{
|
||||
if (!EngineCheckStructAlignment(UE_STRUCT_TITAN_ENGINE_CONTEXT, sizeof(TITAN_ENGINE_CONTEXT_t)))
|
||||
if(!EngineCheckStructAlignment(UE_STRUCT_TITAN_ENGINE_CONTEXT, sizeof(TITAN_ENGINE_CONTEXT_t)))
|
||||
return "Invalid TITAN_ENGINE_CONTEXT_t alignment!";
|
||||
|
||||
if (sizeof(TITAN_ENGINE_CONTEXT_t) != sizeof(REGISTERCONTEXT))
|
||||
if(sizeof(TITAN_ENGINE_CONTEXT_t) != sizeof(REGISTERCONTEXT))
|
||||
return "Invalid REGISTERCONTEXT alignment!";
|
||||
|
||||
dputs("Initializing wait objects...");
|
||||
|
|
|
@ -422,7 +422,7 @@ typedef struct _IMAGE_RESOURCE_DATA_ENTRY
|
|||
DWORD Size;
|
||||
DWORD CodePage;
|
||||
DWORD Reserved;
|
||||
} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
|
||||
} IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;
|
||||
|
||||
|
||||
typedef struct _IMAGE_RESOURCE_DIRECTORY
|
||||
|
|
|
@ -183,7 +183,7 @@ void AbstractTableView::paintEvent(QPaintEvent* event)
|
|||
if(i < mNbrOfLineToPrint)
|
||||
{
|
||||
// Don't draw cells if the flag is set, and no process is running
|
||||
if (!mDrawDebugOnly || DbgIsDebugging())
|
||||
if(!mDrawDebugOnly || DbgIsDebugging())
|
||||
{
|
||||
QString wStr = paintContent(&wPainter, mTableOffset, i, j, x, y, getColumnWidth(j), getRowHeight());
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ QString Disassembly::paintContent(QPainter* painter, dsint rowBase, int rowOffse
|
|||
{
|
||||
if(bpxtype & bp_normal) //normal breakpoint
|
||||
{
|
||||
QColor& bpColor = mBreakpointBackgroundColor;
|
||||
QColor & bpColor = mBreakpointBackgroundColor;
|
||||
if(!bpColor.alpha()) //we don't want transparent text
|
||||
bpColor = mBreakpointColor;
|
||||
if(bpColor == mCipBackgroundColor)
|
||||
|
|
|
@ -53,7 +53,7 @@ ReferenceView::ReferenceView()
|
|||
connect(Bridge::getBridge(), SIGNAL(referenceReloadData()), this, SLOT(reloadData()));
|
||||
connect(Bridge::getBridge(), SIGNAL(referenceSetSingleSelection(int, bool)), this, SLOT(setSingleSelection(int, bool)));
|
||||
connect(Bridge::getBridge(), SIGNAL(referenceSetProgress(int)), this, SLOT(referenceSetProgressSlot(int)));
|
||||
connect(Bridge::getBridge(), SIGNAL(referenceSetCurrentTaskProgress(int,QString)), this, SLOT(referenceSetCurrentTaskProgressSlot(int,QString)));
|
||||
connect(Bridge::getBridge(), SIGNAL(referenceSetCurrentTaskProgress(int, QString)), this, SLOT(referenceSetCurrentTaskProgressSlot(int, QString)));
|
||||
connect(Bridge::getBridge(), SIGNAL(referenceSetSearchStartCol(int)), this, SLOT(setSearchStartCol(int)));
|
||||
connect(this, SIGNAL(listContextMenuSignal(QMenu*)), this, SLOT(referenceContextMenu(QMenu*)));
|
||||
connect(this, SIGNAL(enterPressedSignal()), this, SLOT(followGenericAddress()));
|
||||
|
|
|
@ -61,10 +61,10 @@ SearchListView::SearchListView(QWidget* parent) :
|
|||
connect(mSearchAction, SIGNAL(triggered()), this, SLOT(searchSlot()));
|
||||
|
||||
// Slots
|
||||
// connect(mList, SIGNAL(keyPressedSignal(QKeyEvent*)), this, SLOT(listKeyPressed(QKeyEvent*)));
|
||||
// connect(mList, SIGNAL(keyPressedSignal(QKeyEvent*)), this, SLOT(listKeyPressed(QKeyEvent*)));
|
||||
connect(mList, SIGNAL(contextMenuSignal(QPoint)), this, SLOT(listContextMenu(QPoint)));
|
||||
connect(mList, SIGNAL(doubleClickedSignal()), this, SLOT(doubleClickedSlot()));
|
||||
// connect(mSearchList, SIGNAL(keyPressedSignal(QKeyEvent*)), this, SLOT(listKeyPressed(QKeyEvent*)));
|
||||
// connect(mSearchList, SIGNAL(keyPressedSignal(QKeyEvent*)), this, SLOT(listKeyPressed(QKeyEvent*)));
|
||||
connect(mSearchList, SIGNAL(contextMenuSignal(QPoint)), this, SLOT(listContextMenu(QPoint)));
|
||||
connect(mSearchList, SIGNAL(doubleClickedSignal()), this, SLOT(doubleClickedSlot()));
|
||||
connect(mSearchBox, SIGNAL(textChanged(QString)), this, SLOT(searchTextChanged(QString)));
|
||||
|
@ -213,7 +213,7 @@ void SearchListView::addCharToSearchBox(char ch)
|
|||
}
|
||||
}
|
||||
|
||||
void SearchListView::deleteTextFromSearchBox(QKeyEvent *keyEvent)
|
||||
void SearchListView::deleteTextFromSearchBox(QKeyEvent* keyEvent)
|
||||
{
|
||||
QString newText;
|
||||
newText = mSearchBox->text();
|
||||
|
@ -245,7 +245,7 @@ void SearchListView::deleteTextFromSearchBox(QKeyEvent *keyEvent)
|
|||
if(keyEvent->key() == Qt::Key_Backspace)
|
||||
{
|
||||
if(mCursorPosition > 0)
|
||||
newText.remove(mCursorPosition-1, 1);
|
||||
newText.remove(mCursorPosition - 1, 1);
|
||||
|
||||
(mCursorPosition - 1) < 0 ? mCursorPosition = 0 : mCursorPosition--;
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ void SearchListView::deleteTextFromSearchBox(QKeyEvent *keyEvent)
|
|||
mSearchBox->setText(newText);
|
||||
}
|
||||
|
||||
bool SearchListView::eventFilter(QObject *obj, QEvent *event)
|
||||
bool SearchListView::eventFilter(QObject* obj, QEvent* event)
|
||||
{
|
||||
// Click in searchBox
|
||||
if(obj == mSearchBox && event->type() == QEvent::MouseButtonPress)
|
||||
|
@ -269,8 +269,8 @@ bool SearchListView::eventFilter(QObject *obj, QEvent *event)
|
|||
// Give focus to current list to avoid having it elsewhere when you click on a different searchbox
|
||||
mCurList->setFocus();
|
||||
|
||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent* >(event);
|
||||
QLineEdit *lineEdit = static_cast<QLineEdit* >(obj);
|
||||
QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
|
||||
QLineEdit* lineEdit = static_cast<QLineEdit*>(obj);
|
||||
|
||||
mCursorPosition = lineEdit->cursorPositionAt(mouseEvent->pos());
|
||||
lineEdit->setFocusPolicy(Qt::NoFocus);
|
||||
|
@ -280,7 +280,7 @@ bool SearchListView::eventFilter(QObject *obj, QEvent *event)
|
|||
// KeyPress in List
|
||||
else if((obj == mList || obj == mSearchList || obj == mSearchBox) && event->type() == QEvent::KeyPress)
|
||||
{
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent* >(event);
|
||||
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
|
||||
char ch = keyEvent->text().toUtf8().constData()[0];
|
||||
|
||||
//add a char to the search box
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class SearchListView;
|
||||
class SearchListView;
|
||||
}
|
||||
|
||||
class SearchListView : public QWidget
|
||||
|
@ -48,10 +48,10 @@ private:
|
|||
QAction* mSearchAction;
|
||||
int mCursorPosition;
|
||||
void addCharToSearchBox(char ch);
|
||||
void deleteTextFromSearchBox(QKeyEvent *keyEvent);
|
||||
void deleteTextFromSearchBox(QKeyEvent* keyEvent);
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
bool eventFilter(QObject* obj, QEvent* event);
|
||||
};
|
||||
|
||||
#endif // SEARCHLISTVIEW_H
|
||||
|
|
|
@ -382,7 +382,7 @@ bool CapstoneTokenizer::tokenizeRegOperand(const cs_x86_op & op)
|
|||
|
||||
bool CapstoneTokenizer::tokenizeImmOperand(const cs_x86_op & op)
|
||||
{
|
||||
duint value = duint (op.imm);
|
||||
duint value = duint(op.imm);
|
||||
auto valueType = TokenType::Value;
|
||||
if(_cp.InGroup(CS_GRP_JUMP) || _cp.InGroup(CS_GRP_CALL) || _cp.IsLoop())
|
||||
{
|
||||
|
@ -440,7 +440,7 @@ bool CapstoneTokenizer::tokenizeMemOperand(const cs_x86_op & op)
|
|||
//stuff inside the brackets
|
||||
if(mem.base == X86_REG_RIP) //rip-relative (#replacement)
|
||||
{
|
||||
duint addr = _cp.Address() + duint (mem.disp) + _cp.Size();
|
||||
duint addr = _cp.Address() + duint(mem.disp) + _cp.Size();
|
||||
TokenValue value = TokenValue(op.size, addr);
|
||||
auto displacementType = DbgMemIsValidReadPtr(addr) ? TokenType::Address : TokenType::Value;
|
||||
addToken(displacementType, printValue(value, false, _maxModuleLength), value);
|
||||
|
@ -468,13 +468,13 @@ bool CapstoneTokenizer::tokenizeMemOperand(const cs_x86_op & op)
|
|||
if(mem.disp)
|
||||
{
|
||||
char operatorText = '+';
|
||||
TokenValue value(op.size, duint (mem.disp));
|
||||
auto displacementType = DbgMemIsValidReadPtr(duint (mem.disp)) ? TokenType::Address : TokenType::Value;
|
||||
TokenValue value(op.size, duint(mem.disp));
|
||||
auto displacementType = DbgMemIsValidReadPtr(duint(mem.disp)) ? TokenType::Address : TokenType::Value;
|
||||
QString valueText;
|
||||
if(mem.disp < 0)
|
||||
{
|
||||
operatorText = '-';
|
||||
valueText = printValue(TokenValue(op.size, duint (mem.disp * -1)), false, _maxModuleLength);
|
||||
valueText = printValue(TokenValue(op.size, duint(mem.disp * -1)), false, _maxModuleLength);
|
||||
}
|
||||
else
|
||||
valueText = printValue(value, false, _maxModuleLength);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class AppearanceDialog;
|
||||
class AppearanceDialog;
|
||||
}
|
||||
|
||||
class AppearanceDialog : public QDialog
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
bool AssembleDialog::bWarningShowedOnce = false;
|
||||
|
||||
AssembleDialog::AssembleDialog(QWidget *parent) :
|
||||
AssembleDialog::AssembleDialog(QWidget* parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::AssembleDialog)
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ AssembleDialog::AssembleDialog(QWidget *parent) :
|
|||
mValidateThread->setOnExpressionChangedCallback(std::bind(&AssembleDialog::validateInstruction, this, std::placeholders::_1));
|
||||
|
||||
connect(ui->lineEdit, SIGNAL(textEdited(QString)), this, SLOT(textChangedSlot(QString)));
|
||||
connect(mValidateThread, SIGNAL(instructionChanged(dsint,QString)), this, SLOT(instructionChangedSlot(dsint, QString)));
|
||||
connect(mValidateThread, SIGNAL(instructionChanged(dsint, QString)), this, SLOT(instructionChangedSlot(dsint, QString)));
|
||||
}
|
||||
|
||||
AssembleDialog::~AssembleDialog()
|
||||
|
@ -32,7 +32,7 @@ AssembleDialog::~AssembleDialog()
|
|||
delete ui;
|
||||
}
|
||||
|
||||
void AssembleDialog::setTextEditValue(const QString &text)
|
||||
void AssembleDialog::setTextEditValue(const QString & text)
|
||||
{
|
||||
ui->lineEdit->setText(text);
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ void AssembleDialog::setKeepSizeChecked(bool checked)
|
|||
bKeepSizeChecked = checked;
|
||||
}
|
||||
|
||||
void AssembleDialog::setKeepSizeLabel(const QString &text)
|
||||
void AssembleDialog::setKeepSizeLabel(const QString & text)
|
||||
{
|
||||
ui->labelKeepSize->setText(text);
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ void AssembleDialog::setFillWithNopsChecked(bool checked)
|
|||
bFillWithNopsChecked = checked;
|
||||
}
|
||||
|
||||
void AssembleDialog::setFillWithNopsLabel(const QString &text)
|
||||
void AssembleDialog::setFillWithNopsLabel(const QString & text)
|
||||
{
|
||||
ui->labelFillWithNops->setText(text);
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ void AssembleDialog::validateInstruction(QString expression)
|
|||
emit mValidateThread->emitInstructionChanged(sizeDifference, "");
|
||||
}
|
||||
|
||||
void AssembleDialog::hideEvent(QHideEvent *event)
|
||||
void AssembleDialog::hideEvent(QHideEvent* event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
mValidateThread->stop();
|
||||
|
@ -162,7 +162,7 @@ void AssembleDialog::instructionChangedSlot(dsint sizeDifference, QString error)
|
|||
}
|
||||
}
|
||||
|
||||
void AssembleDialog::on_lineEdit_textChanged(const QString &arg1)
|
||||
void AssembleDialog::on_lineEdit_textChanged(const QString & arg1)
|
||||
{
|
||||
editText = arg1;
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class AssembleDialog;
|
||||
class AssembleDialog;
|
||||
}
|
||||
|
||||
class AssembleDialog : public QDialog
|
||||
|
@ -16,7 +16,7 @@ class AssembleDialog : public QDialog
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit AssembleDialog(QWidget *parent = 0);
|
||||
explicit AssembleDialog(QWidget* parent = 0);
|
||||
~AssembleDialog();
|
||||
QString editText;
|
||||
static bool bWarningShowedOnce;
|
||||
|
@ -34,19 +34,19 @@ public:
|
|||
void setOkButtonEnabled(bool enabled);
|
||||
|
||||
void validateInstruction(QString expression);
|
||||
void hideEvent(QHideEvent *event);
|
||||
void hideEvent(QHideEvent* event);
|
||||
|
||||
private slots:
|
||||
void textChangedSlot(QString text);
|
||||
void instructionChangedSlot(dsint sizeDifference, QString error);
|
||||
void on_lineEdit_textChanged(const QString &arg1);
|
||||
void on_lineEdit_textChanged(const QString & arg1);
|
||||
void on_checkBoxKeepSize_clicked(bool checked);
|
||||
void on_checkBoxFillWithNops_clicked(bool checked);
|
||||
|
||||
private:
|
||||
Ui::AssembleDialog *ui;
|
||||
Ui::AssembleDialog* ui;
|
||||
duint mSelectedInstrVa;
|
||||
ValidateExpressionThread *mValidateThread;
|
||||
ValidateExpressionThread* mValidateThread;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class AttachDialog;
|
||||
class AttachDialog;
|
||||
}
|
||||
|
||||
class AttachDialog : public QDialog
|
||||
|
|
|
@ -223,7 +223,7 @@ void CPUDisassembly::setupRightClickContextMenu()
|
|||
QAction* replaceSlot2Action = makeMenuAction(replaceSlotMenu, "Replace Slot 2 (Free)", SLOT(setHwBpOnSlot2ActionSlot()));
|
||||
QAction* replaceSlot3Action = makeMenuAction(replaceSlotMenu, "Replace Slot 3 (Free)", SLOT(setHwBpOnSlot3ActionSlot()));
|
||||
|
||||
mMenuBuilder->addMenu(makeMenu(QIcon(":/icons/images/breakpoint.png"), "Breakpoint"), [=](QMenu* menu)
|
||||
mMenuBuilder->addMenu(makeMenu(QIcon(":/icons/images/breakpoint.png"), "Breakpoint"), [ = ](QMenu * menu)
|
||||
{
|
||||
BPXTYPE bpType = DbgGetBpxTypeAt(rvaToVa(getInitialSelection()));
|
||||
|
||||
|
@ -281,7 +281,7 @@ void CPUDisassembly::setupRightClickContextMenu()
|
|||
return true;
|
||||
});
|
||||
|
||||
mMenuBuilder->addMenu(makeMenu("&Follow in Dump"), [this](QMenu* menu)
|
||||
mMenuBuilder->addMenu(makeMenu("&Follow in Dump"), [this](QMenu * menu)
|
||||
{
|
||||
setupFollowReferenceMenu(rvaToVa(getInitialSelection()), menu, false);
|
||||
return true;
|
||||
|
@ -404,7 +404,7 @@ void CPUDisassembly::setupRightClickContextMenu()
|
|||
mReferenceSelectedAddressAction = makeShortcutAction("&Selected Address(es)", SLOT(findReferencesSlot()), "ActionFindReferencesToSelectedAddress");
|
||||
mReferenceSelectedAddressAction->setFont(QFont("Courier New", 8));
|
||||
|
||||
mMenuBuilder->addMenu(makeMenu("Find &references to"), [this](QMenu* menu)
|
||||
mMenuBuilder->addMenu(makeMenu("Find &references to"), [this](QMenu * menu)
|
||||
{
|
||||
setupFollowReferenceMenu(rvaToVa(getInitialSelection()), menu, true);
|
||||
return true;
|
||||
|
@ -415,7 +415,7 @@ void CPUDisassembly::setupRightClickContextMenu()
|
|||
Bridge::getBridge()->emitMenuAddToList(this, mPluginMenu, GUI_DISASM_MENU);
|
||||
|
||||
mMenuBuilder->addSeparator();
|
||||
mMenuBuilder->addBuilder(new MenuBuilder(this, [this](QMenu* menu)
|
||||
mMenuBuilder->addBuilder(new MenuBuilder(this, [this](QMenu * menu)
|
||||
{
|
||||
menu->addActions(mPluginMenu->actions());
|
||||
return true;
|
||||
|
@ -1180,8 +1180,8 @@ void CPUDisassembly::findCommandSlot()
|
|||
|
||||
LineEditDialog mLineEdit(this);
|
||||
mLineEdit.enableCheckBox(false);
|
||||
// mLineEdit.setCheckBoxText("Entire &Block");
|
||||
// mLineEdit.setCheckBox(ConfigBool("Disassembler", "FindCommandEntireBlock"));
|
||||
// mLineEdit.setCheckBoxText("Entire &Block");
|
||||
// mLineEdit.setCheckBox(ConfigBool("Disassembler", "FindCommandEntireBlock"));
|
||||
mLineEdit.setWindowTitle("Find Command");
|
||||
if(mLineEdit.exec() != QDialog::Accepted)
|
||||
return;
|
||||
|
@ -1251,7 +1251,7 @@ void CPUDisassembly::paintEvent(QPaintEvent* event)
|
|||
// Ensures the two widgets are synced and prevents "draw lag"
|
||||
auto sidebar = mParentCPUWindow->getSidebarWidget();
|
||||
|
||||
if (sidebar)
|
||||
if(sidebar)
|
||||
sidebar->repaint();
|
||||
|
||||
// Signal to render the original content
|
||||
|
|
|
@ -115,7 +115,7 @@ private:
|
|||
GotoDialog* mGoto;
|
||||
|
||||
// Parent CPU window
|
||||
CPUWidget *mParentCPUWindow;
|
||||
CPUWidget* mParentCPUWindow;
|
||||
|
||||
MenuBuilder* mMenuBuilder;
|
||||
|
||||
|
|
|
@ -178,9 +178,9 @@ void CPUDump::setupContextMenu()
|
|||
#endif //_WIN64
|
||||
|
||||
int maxDumps = mMultiDump->getMaxCPUTabs();
|
||||
for(int i=0; i<maxDumps; i++)
|
||||
for(int i = 0; i < maxDumps; i++)
|
||||
{
|
||||
QAction* action = new QAction(QString("Dump %1").arg(i+1), this);
|
||||
QAction* action = new QAction(QString("Dump %1").arg(i + 1), this);
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(followInDumpNSlot()));
|
||||
mFollowInDumpMenu->addAction(action);
|
||||
mFollowInDumpActions.push_back(action);
|
||||
|
@ -626,7 +626,7 @@ void CPUDump::contextMenuEvent(QContextMenuEvent* event)
|
|||
|
||||
QList<QString> tabNames;
|
||||
mMultiDump->getTabNames(tabNames);
|
||||
for(int i=0; i<tabNames.length(); i++)
|
||||
for(int i = 0; i < tabNames.length(); i++)
|
||||
mFollowInDumpActions[i]->setText(tabNames[i]);
|
||||
|
||||
if((DbgGetBpxTypeAt(selectedAddr) & bp_hardware) == bp_hardware) //hardware breakpoint set
|
||||
|
@ -697,7 +697,7 @@ void CPUDump::mouseDoubleClickEvent(QMouseEvent* event)
|
|||
}
|
||||
}
|
||||
|
||||
void CPUDump::mouseMoveEvent(QMouseEvent *event)
|
||||
void CPUDump::mouseMoveEvent(QMouseEvent* event)
|
||||
{
|
||||
dsint ptr = 0, ptrValue = 0;
|
||||
|
||||
|
@ -1676,7 +1676,7 @@ void CPUDump::copyRvaSlot()
|
|||
|
||||
void CPUDump::followInDumpNSlot()
|
||||
{
|
||||
for(int i=0; i<mFollowInDumpActions.length(); i++)
|
||||
for(int i = 0; i < mFollowInDumpActions.length(); i++)
|
||||
{
|
||||
if(mFollowInDumpActions[i] == sender())
|
||||
{
|
||||
|
|
|
@ -41,7 +41,7 @@ void CPUMultiDump::getTabNames(QList<QString> & names)
|
|||
{
|
||||
bool addedDetachedWindows = false;
|
||||
names.clear();
|
||||
for(int i=0; i<count(); i++)
|
||||
for(int i = 0; i < count(); i++)
|
||||
{
|
||||
// If empty name, then widget is detached
|
||||
if(this->tabBar()->tabText(i).length() == 0)
|
||||
|
@ -52,7 +52,7 @@ void CPUMultiDump::getTabNames(QList<QString> & names)
|
|||
|
||||
QString windowName;
|
||||
// Loop through all detached widgets
|
||||
for(int n=0; n < this->windows().size(); n++)
|
||||
for(int n = 0; n < this->windows().size(); n++)
|
||||
{
|
||||
// Get the name and add it to the list
|
||||
windowName = ((MHDetachedWindow*)this->windows().at(n)->parent())->windowTitle();
|
||||
|
|
|
@ -281,7 +281,7 @@ void CPUSideBar::mouseReleaseEvent(QMouseEvent* e)
|
|||
}
|
||||
}
|
||||
|
||||
void CPUSideBar::mouseMoveEvent(QMouseEvent *event)
|
||||
void CPUSideBar::mouseMoveEvent(QMouseEvent* event)
|
||||
{
|
||||
if(!DbgIsDebugging() || !mInstrBuffer->size())
|
||||
{
|
||||
|
@ -486,8 +486,8 @@ void CPUSideBar::drawLabel(QPainter* painter, int Line, QString Text)
|
|||
const int LineCoordinate = fontHeight * (1 + Line);
|
||||
int length = Text.length();
|
||||
|
||||
const QColor& IPLabel = mCipLabelColor;
|
||||
const QColor& IPLabelBG = mCipLabelBackgroundColor;
|
||||
const QColor & IPLabel = mCipLabelColor;
|
||||
const QColor & IPLabelBG = mCipLabelBackgroundColor;
|
||||
|
||||
int width = length * fontWidth + 2;
|
||||
int x = 1;
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class CPUWidget;
|
||||
class CPUWidget;
|
||||
}
|
||||
|
||||
class CPUWidget : public QWidget
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class CalculatorDialog;
|
||||
class CalculatorDialog;
|
||||
}
|
||||
|
||||
class CalculatorDialog : public QDialog
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class CloseDialog;
|
||||
class CloseDialog;
|
||||
}
|
||||
|
||||
class CloseDialog : public QDialog
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class CommandHelpView;
|
||||
class CommandHelpView;
|
||||
}
|
||||
|
||||
class CommandHelpView : public QWidget
|
||||
|
|
|
@ -11,20 +11,20 @@ CommandLineEdit::CommandLineEdit(QWidget* parent) : HistoryLineEdit(parent)
|
|||
this->setCompleter(mCompleter);
|
||||
|
||||
//Setup signals & slots
|
||||
connect(mCompleter, SIGNAL(activated(const QString&)), this, SLOT(clear()), Qt::QueuedConnection);
|
||||
connect(mCompleter, SIGNAL(activated(const QString &)), this, SLOT(clear()), Qt::QueuedConnection);
|
||||
connect(Bridge::getBridge(), SIGNAL(autoCompleteAddCmd(QString)), this, SLOT(autoCompleteAddCmd(QString)));
|
||||
connect(Bridge::getBridge(), SIGNAL(autoCompleteDelCmd(QString)), this, SLOT(autoCompleteDelCmd(QString)));
|
||||
connect(Bridge::getBridge(), SIGNAL(autoCompleteClearAll()), this, SLOT(autoCompleteClearAll()));
|
||||
}
|
||||
|
||||
void CommandLineEdit::keyPressEvent(QKeyEvent *event)
|
||||
void CommandLineEdit::keyPressEvent(QKeyEvent* event)
|
||||
{
|
||||
if(event->type() == QEvent::KeyPress)
|
||||
{
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
|
||||
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
|
||||
if(keyEvent->key() == Qt::Key_Tab)
|
||||
{
|
||||
QStringListModel *strListModel = (QStringListModel*)(mCompleter->model());
|
||||
QStringListModel* strListModel = (QStringListModel*)(mCompleter->model());
|
||||
QStringList stringList = strListModel->stringList();
|
||||
|
||||
if(stringList.size())
|
||||
|
@ -39,7 +39,7 @@ void CommandLineEdit::keyPressEvent(QKeyEvent *event)
|
|||
// If popup list is not visible, selected next suggested command
|
||||
if(!mCompleter->popup()->isVisible())
|
||||
{
|
||||
for(int row=0; row < mCompleter->popup()->model()->rowCount(); row++)
|
||||
for(int row = 0; row < mCompleter->popup()->model()->rowCount(); row++)
|
||||
{
|
||||
QModelIndex modelIndex = mCompleter->popup()->model()->index(row, 0);
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ class CommandLineEdit : public HistoryLineEdit
|
|||
|
||||
public:
|
||||
explicit CommandLineEdit(QWidget* parent = 0);
|
||||
void keyPressEvent(QKeyEvent *event);
|
||||
void keyPressEvent(QKeyEvent* event);
|
||||
bool focusNextPrevChild(bool next);
|
||||
|
||||
public slots:
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class DataCopyDialog;
|
||||
class DataCopyDialog;
|
||||
}
|
||||
|
||||
class DataCopyDialog : public QDialog
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class EntropyDialog;
|
||||
class EntropyDialog;
|
||||
}
|
||||
|
||||
class EntropyDialog : public QDialog
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class ExceptionRangeDialog;
|
||||
class ExceptionRangeDialog;
|
||||
}
|
||||
|
||||
class ExceptionRangeDialog : public QDialog
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class GotoDialog;
|
||||
class GotoDialog;
|
||||
}
|
||||
|
||||
class GotoDialog : public QDialog
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class HexEditDialog;
|
||||
class HexEditDialog;
|
||||
}
|
||||
|
||||
class HexEditDialog : public QDialog
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class LineEditDialog;
|
||||
class LineEditDialog;
|
||||
}
|
||||
|
||||
class LineEditDialog : public QDialog
|
||||
|
|
|
@ -249,7 +249,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
|
|||
connect(mCpuWidget->getDisasmWidget(), SIGNAL(decompileAt(dsint, dsint)), this, SLOT(decompileAt(dsint, dsint)));
|
||||
connect(mCpuWidget->getDumpWidget(), SIGNAL(displayReferencesWidget()), this, SLOT(displayReferencesWidget()));
|
||||
connect(mCpuWidget->getStackWidget(), SIGNAL(displayReferencesWidget()), this, SLOT(displayReferencesWidget()));
|
||||
connect(mTabWidget, SIGNAL(tabMovedTabWidget(int,int)), this, SLOT(tabMovedSlot(int, int)));
|
||||
connect(mTabWidget, SIGNAL(tabMovedTabWidget(int, int)), this, SLOT(tabMovedSlot(int, int)));
|
||||
connect(Config(), SIGNAL(shortcutsUpdated()), this, SLOT(refreshShortcuts()));
|
||||
|
||||
|
||||
|
@ -319,7 +319,7 @@ void MainWindow::loadTabDefaultOrder()
|
|||
clearTabWidget();
|
||||
|
||||
// Setup tabs
|
||||
for(int i=0; i < mWidgetList.size(); i++)
|
||||
for(int i = 0; i < mWidgetList.size(); i++)
|
||||
addQWidgetTab(mWidgetList[i]);
|
||||
}
|
||||
|
||||
|
@ -327,10 +327,10 @@ void MainWindow::loadTabSavedOrder()
|
|||
{
|
||||
clearTabWidget();
|
||||
|
||||
QMap<duint, QWidget* > tabIndexToWidget;
|
||||
QMap<duint, QWidget*> tabIndexToWidget;
|
||||
|
||||
// Get tabIndex for each widget and add them to tabIndexToWidget
|
||||
for(int i=0; i < mWidgetList.size(); i++)
|
||||
for(int i = 0; i < mWidgetList.size(); i++)
|
||||
{
|
||||
QString tabName = mWidgetList[i]->windowTitle();
|
||||
tabName = tabName.replace(" ", "") + "Tab";
|
||||
|
@ -339,7 +339,7 @@ void MainWindow::loadTabSavedOrder()
|
|||
}
|
||||
|
||||
// Setup tabs
|
||||
QMap<duint, QWidget* >::iterator it = tabIndexToWidget.begin();
|
||||
QMap<duint, QWidget*>::iterator it = tabIndexToWidget.begin();
|
||||
for(it; it != tabIndexToWidget.end(); it++)
|
||||
{
|
||||
addQWidgetTab(it.value());
|
||||
|
@ -351,7 +351,7 @@ void MainWindow::clearTabWidget()
|
|||
if(!mTabWidget->count())
|
||||
return;
|
||||
|
||||
for(int i=mTabWidget->count()-1; i >= 0; i--)
|
||||
for(int i = mTabWidget->count() - 1; i >= 0; i--)
|
||||
{
|
||||
mTabWidget->removeTab(i);
|
||||
}
|
||||
|
@ -527,7 +527,7 @@ QString MainWindow::getMRUEntry(int index)
|
|||
|
||||
void MainWindow::executeCommand()
|
||||
{
|
||||
QString& wCmd = mCmdLineEdit->text();
|
||||
QString & wCmd = mCmdLineEdit->text();
|
||||
|
||||
DbgCmdExec(wCmd.toUtf8().constData());
|
||||
|
||||
|
@ -764,7 +764,7 @@ void MainWindow::displaySnowmanWidget()
|
|||
|
||||
void MainWindow::openSettings()
|
||||
{
|
||||
SettingsDialog *settings = new SettingsDialog(this);
|
||||
SettingsDialog* settings = new SettingsDialog(this);
|
||||
connect(settings, SIGNAL(chkSaveLoadTabOrderStateChanged(bool)), this, SLOT(chkSaveloadTabSavedOrderStateChangedSlot(bool)));
|
||||
settings->lastException = lastException;
|
||||
settings->exec();
|
||||
|
@ -1215,7 +1215,7 @@ void MainWindow::executeOnGuiThread(void* cbGuiThread)
|
|||
|
||||
void MainWindow::tabMovedSlot(int from, int to)
|
||||
{
|
||||
for(int i=0; i < mTabWidget->count(); i++)
|
||||
for(int i = 0; i < mTabWidget->count(); i++)
|
||||
{
|
||||
// Remove space in widget name and append Tab to get config settings (CPUTab, MemoryMapTab, etc...)
|
||||
QString tabName = mTabWidget->tabText(i).replace(" ", "") + "Tab";
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class MainWindow;
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
|
@ -192,7 +192,7 @@ private:
|
|||
|
||||
bool bCanClose;
|
||||
MainWindowCloseThread* mCloseThread;
|
||||
QVector<QWidget* > mWidgetList;
|
||||
QVector<QWidget*> mWidgetList;
|
||||
|
||||
protected:
|
||||
void dragEnterEvent(QDragEnterEvent* pEvent);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class PageMemoryRights;
|
||||
class PageMemoryRights;
|
||||
}
|
||||
|
||||
class PageMemoryRights : public QDialog
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class PatchDialog;
|
||||
class PatchDialog;
|
||||
}
|
||||
|
||||
class PatchDialog : public QDialog
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class PatchDialogGroupSelector;
|
||||
class PatchDialogGroupSelector;
|
||||
}
|
||||
|
||||
class PatchDialogGroupSelector : public QDialog
|
||||
|
|
|
@ -18,7 +18,7 @@ typedef struct
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class RegistersView;
|
||||
class RegistersView;
|
||||
}
|
||||
|
||||
class RegistersView : public QScrollArea
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class SelectFields;
|
||||
class SelectFields;
|
||||
}
|
||||
|
||||
class SelectFields : public QDialog
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class SettingsDialog;
|
||||
class SettingsDialog;
|
||||
}
|
||||
|
||||
class SettingsDialog : public QDialog
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class ShortcutsDialog;
|
||||
class ShortcutsDialog;
|
||||
}
|
||||
|
||||
class ShortcutsDialog : public QDialog
|
||||
|
|
|
@ -49,13 +49,13 @@ void StatusLabel::debugStateChangedSlot(DBGSTATE state)
|
|||
|
||||
void StatusLabel::logUpdate(QString message)
|
||||
{
|
||||
if (labelText.contains('\n'))
|
||||
if(labelText.contains('\n'))
|
||||
labelText = "";
|
||||
|
||||
// Split each newline into a separate string
|
||||
QStringList lineList = message.split('\n', QString::SkipEmptyParts);
|
||||
|
||||
if (lineList.size() > 0)
|
||||
if(lineList.size() > 0)
|
||||
{
|
||||
// Get a substring for the last line only
|
||||
labelText += lineList[lineList.size() - 1] + "\n";
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class SymbolView;
|
||||
class SymbolView;
|
||||
}
|
||||
|
||||
class SymbolView : public QWidget
|
||||
|
|
|
@ -11,7 +11,7 @@ MHTabWidget::MHTabWidget(QWidget* parent, bool allowDetach, bool allowDelete) :
|
|||
connect(m_tabBar, SIGNAL(OnDetachTab(int, QPoint &)), this, SLOT(DetachTab(int, QPoint &)));
|
||||
connect(m_tabBar, SIGNAL(OnMoveTab(int, int)), this, SLOT(MoveTab(int, int)));
|
||||
connect(m_tabBar, SIGNAL(OnDeleteTab(int)), this, SLOT(DeleteTab(int)));
|
||||
connect(m_tabBar, SIGNAL(tabMoved(int,int)), this, SLOT(tabMoved(int, int)));
|
||||
connect(m_tabBar, SIGNAL(tabMoved(int, int)), this, SLOT(tabMoved(int, int)));
|
||||
|
||||
setTabBar(m_tabBar);
|
||||
setMovable(true);
|
||||
|
@ -47,7 +47,7 @@ int MHTabWidget::count() const
|
|||
return QTabWidget::count() + m_Windows.size();
|
||||
}
|
||||
|
||||
QList<QWidget *> MHTabWidget::windows()
|
||||
QList<QWidget*> MHTabWidget::windows()
|
||||
{
|
||||
return m_Windows;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class WordEditDialog;
|
||||
class WordEditDialog;
|
||||
}
|
||||
|
||||
class WordEditDialog : public QDialog
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace Ui
|
||||
{
|
||||
class YaraRuleSelectionDialog;
|
||||
class YaraRuleSelectionDialog;
|
||||
}
|
||||
|
||||
class YaraRuleSelectionDialog : public QDialog
|
||||
|
|
|
@ -42,7 +42,7 @@ public:
|
|||
|
||||
inline QMenu* addMenu(QMenu* submenu, BuildCallback callback)
|
||||
{
|
||||
addBuilder(new MenuBuilder(submenu->parent(), [submenu, callback](QMenu* menu)
|
||||
addBuilder(new MenuBuilder(submenu->parent(), [submenu, callback](QMenu * menu)
|
||||
{
|
||||
submenu->clear();
|
||||
if(callback(submenu))
|
||||
|
@ -54,7 +54,7 @@ public:
|
|||
|
||||
inline QMenu* addMenu(QMenu* submenu, MenuBuilder* builder)
|
||||
{
|
||||
addBuilder(new MenuBuilder(submenu->parent(), [submenu, builder](QMenu* menu)
|
||||
addBuilder(new MenuBuilder(submenu->parent(), [submenu, builder](QMenu * menu)
|
||||
{
|
||||
submenu->clear();
|
||||
builder->build(submenu);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <functional>
|
||||
#include "Imports.h"
|
||||
|
||||
typedef std::function<void(QString expression) > EXPRESSIONCHANGEDCB;
|
||||
typedef std::function<void(QString expression)> EXPRESSIONCHANGEDCB;
|
||||
|
||||
class ValidateExpressionThread : public QThread
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue