removed fhex
This commit is contained in:
parent
638fca28e4
commit
7b222f786b
|
@ -169,7 +169,7 @@ static bool getLabel(duint addr, char* label)
|
|||
duint start;
|
||||
if(FunctionGet(addr, &start, nullptr) && addr == start)
|
||||
{
|
||||
sprintf_s(label, MAX_LABEL_SIZE, "sub_%" fext "X", start);
|
||||
sprintf_s(label, MAX_LABEL_SIZE, "sub_%p", start);
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,11 +50,11 @@
|
|||
#define deflen 1024
|
||||
|
||||
#ifdef _WIN64 //defined by default
|
||||
#define fhex "%.16llX"
|
||||
#define fext "ll"
|
||||
//#define fhex "%.16llX"
|
||||
//#define fext "ll"
|
||||
#else
|
||||
#define fhex "%.8X"
|
||||
#define fext ""
|
||||
//#define fhex "%.8X"
|
||||
//#define fext ""
|
||||
#endif // _WIN64
|
||||
|
||||
enum arch
|
||||
|
|
|
@ -34,7 +34,7 @@ void AdvancedAnalysis::SetMarkers()
|
|||
{
|
||||
if(mDump)
|
||||
for(const auto & function : mFunctions)
|
||||
FileHelper::WriteAllText(StringUtils::sprintf("cfgraph_" fhex ".dot", function.entryPoint), function.ToDot());
|
||||
FileHelper::WriteAllText(StringUtils::sprintf("cfgraph_%p.dot", function.entryPoint), function.ToDot());
|
||||
|
||||
byte* buffer = (byte*)EncodeMapGetBuffer(mBase, true);
|
||||
memcpy(buffer, mEncMap, mSize);
|
||||
|
|
|
@ -43,7 +43,7 @@ public:
|
|||
|
||||
String ToString() const
|
||||
{
|
||||
return StringUtils::sprintf("start: " fhex "\nend: " fhex "\nfunction: " fhex, start, end, parentGraph);
|
||||
return StringUtils::sprintf("start: p\nend: p\nfunction: %p", start, end, parentGraph);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -93,7 +93,7 @@ public:
|
|||
{
|
||||
String result = "digraph CFGraph {\n";
|
||||
for(const auto & node : nodes)
|
||||
result += StringUtils::sprintf(" n" fhex "[label=\"%s\" style=filled fillcolor=%s shape=box]\n",
|
||||
result += StringUtils::sprintf(" n%p[label=\"%s\" style=filled fillcolor=%s shape=box]\n",
|
||||
node.second.start,
|
||||
node.second.ToString().c_str(),
|
||||
GetNodeColor(node.second));
|
||||
|
@ -101,11 +101,11 @@ public:
|
|||
for(const auto & node : nodes)
|
||||
{
|
||||
if(node.second.brtrue)
|
||||
result += StringUtils::sprintf(" n" fhex "-> n" fhex " [color=green]\n",
|
||||
result += StringUtils::sprintf(" n%p-> n%p [color=green]\n",
|
||||
node.second.start,
|
||||
node.second.brtrue);
|
||||
if(node.second.brfalse)
|
||||
result += StringUtils::sprintf(" n" fhex "-> n" fhex " [color=red]\n",
|
||||
result += StringUtils::sprintf(" n%p-> n%p [color=red]\n",
|
||||
node.second.start,
|
||||
node.second.brfalse);
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ public:
|
|||
for(const auto & parent : parents)
|
||||
{
|
||||
for(const auto & node : parent.second)
|
||||
result += StringUtils::sprintf(" n" fhex "-> n" fhex " [style=dotted color=grey]\n",
|
||||
result += StringUtils::sprintf(" n%p-> n%p [style=dotted color=grey]\n",
|
||||
node,
|
||||
parent.first);
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ void RecursiveAnalysis::SetMarkers()
|
|||
{
|
||||
if(mDump)
|
||||
for(const auto & function : mFunctions)
|
||||
FileHelper::WriteAllText(StringUtils::sprintf("cfgraph_" fhex ".dot", function.entryPoint), GraphToDot(function));
|
||||
FileHelper::WriteAllText(StringUtils::sprintf("cfgraph_%p.dot", function.entryPoint), GraphToDot(function));
|
||||
|
||||
//set function ranges
|
||||
for(const auto & function : mFunctions)
|
||||
|
|
|
@ -19,7 +19,7 @@ public:
|
|||
|
||||
static String NodeToString(const CFNode & n)
|
||||
{
|
||||
return StringUtils::sprintf("start: " fhex ", %" fext "d\nend: " fhex "\nfunction: " fhex, n.start, n.icount, n.end, n.parentGraph);
|
||||
return StringUtils::sprintf("start: %p, %p\nend: %p\nfunction: %p", n.start, n.icount, n.end, n.parentGraph); //TODO: %llu or %u
|
||||
}
|
||||
|
||||
static const char* GetNodeColor(const CFGraph & graph, const CFNode & node)
|
||||
|
@ -35,7 +35,7 @@ public:
|
|||
{
|
||||
String result = "digraph CFGraph {\n";
|
||||
for(const auto & node : graph.nodes)
|
||||
result += StringUtils::sprintf(" n" fhex "[label=\"%s\" style=filled fillcolor=%s shape=box]\n",
|
||||
result += StringUtils::sprintf(" n%p[label=\"%s\" style=filled fillcolor=%s shape=box]\n",
|
||||
node.second.start,
|
||||
NodeToString(node.second).c_str(),
|
||||
GetNodeColor(graph, node.second));
|
||||
|
@ -43,12 +43,12 @@ public:
|
|||
for(const auto & node : graph.nodes)
|
||||
{
|
||||
if(node.second.brtrue)
|
||||
result += StringUtils::sprintf(" n" fhex "-> n" fhex " [color=%s]\n",
|
||||
result += StringUtils::sprintf(" n%p-> n%p [color=%s]\n",
|
||||
node.second.start,
|
||||
node.second.brtrue,
|
||||
node.second.split ? "black" : "green");
|
||||
if(node.second.brfalse)
|
||||
result += StringUtils::sprintf(" n" fhex "-> n" fhex " [color=red]\n",
|
||||
result += StringUtils::sprintf(" n%p-> n%p [color=red]\n",
|
||||
node.second.start,
|
||||
node.second.brfalse);
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ public:
|
|||
for(const auto & parent : graph.parents)
|
||||
{
|
||||
for(const auto & node : parent.second)
|
||||
result += StringUtils::sprintf(" n" fhex "-> n" fhex " [style=dotted color=grey]\n",
|
||||
result += StringUtils::sprintf(" n%p-> n%p [style=dotted color=grey]\n",
|
||||
node,
|
||||
parent.first);
|
||||
}
|
||||
|
|
|
@ -149,7 +149,7 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
if(!parsedatainstruction(instruction, di))
|
||||
{
|
||||
if(di.operand == "")
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "missing operand");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "missing operand")));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -167,14 +167,14 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
unsigned long long result = 0;
|
||||
if(!convertLongLongNumber(di.operand.c_str(), result, 16))
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "failed to convert operand");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "failed to convert operand")));
|
||||
return false;
|
||||
}
|
||||
auto buf = (char*)&result;
|
||||
for(auto i = retsize; i < sizeof(result); i++)
|
||||
if(buf[i])
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "operand value too big");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "operand value too big")));
|
||||
return false;
|
||||
}
|
||||
buffer = String(buf, retsize);
|
||||
|
@ -187,12 +187,12 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
std::vector<unsigned char> data;
|
||||
if(!StringUtils::FromHex(StringUtils::PadLeft(di.operand, retsize * 2, '0'), data, true))
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "invalid operand (FromHex failed)");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "invalid operand (FromHex failed)")));
|
||||
return false;
|
||||
}
|
||||
if(data.size() != retsize)
|
||||
{
|
||||
sprintf_s(error, MAX_ERROR_SIZE, "invalid size (expected %" fext "u, got %" fext "u)", retsize, data.size());
|
||||
sprintf_s(error, MAX_ERROR_SIZE, "invalid size (expected %p, got %p)", retsize, data.size()); //TODO: %llu or %u
|
||||
return false;
|
||||
}
|
||||
buffer = String((char*)data.data(), data.size());
|
||||
|
@ -206,12 +206,12 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
std::vector<unsigned char> data;
|
||||
if(!StringUtils::FromHex(StringUtils::PadLeft(di.operand, retsize * 2, '0'), data, false))
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "invalid operand (FromHex failed)");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "invalid operand (FromHex failed)")));
|
||||
return false;
|
||||
}
|
||||
if(data.size() != retsize)
|
||||
{
|
||||
sprintf_s(error, MAX_ERROR_SIZE, "invalid size (expected %" fext "u, got %" fext "u)", retsize, data.size());
|
||||
sprintf_s(error, MAX_ERROR_SIZE, "invalid size (expected %p, got %p)", retsize, data.size()); //TODO: %llu or %u
|
||||
return false;
|
||||
}
|
||||
buffer = String((char*)data.data(), data.size());
|
||||
|
@ -235,7 +235,7 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
}
|
||||
|
||||
case enc_real10:
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "80bit extended float is not supported");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "80bit extended float is not supported")));
|
||||
return false; //80 bit float is not supported in MSVC, need to add other library
|
||||
|
||||
case enc_ascii:
|
||||
|
@ -243,12 +243,12 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
String unescaped;
|
||||
if(!StringUtils::Unescape(di.operand, unescaped))
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "invalid string literal");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "invalid string literal")));
|
||||
return false;
|
||||
}
|
||||
if(unescaped.size() > size_t(destsize))
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "string too long");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "string too long")));
|
||||
if(size)
|
||||
{
|
||||
*size = int(unescaped.size()); //return correct size
|
||||
|
@ -266,14 +266,14 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
String unescaped;
|
||||
if(!StringUtils::Unescape(di.operand, unescaped))
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "invalid string literal");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "invalid string literal")));
|
||||
return false;
|
||||
}
|
||||
WString unicode = StringUtils::Utf8ToUtf16(unescaped);
|
||||
|
||||
if(unicode.size()*sizeof(wchar_t) > size_t(destsize))
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "string too long");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "string too long")));
|
||||
if(size)
|
||||
{
|
||||
retsize = unicode.size() * 2; //return correct size
|
||||
|
@ -293,7 +293,7 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
|
||||
if(retsize > size_t(destsize))
|
||||
{
|
||||
strcpy_s(error, MAX_ERROR_SIZE, "dest buffer too small");
|
||||
strcpy_s(error, MAX_ERROR_SIZE, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "dest buffer too small")));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -260,23 +260,23 @@ CMDRESULT cbDebugSetBPX(int argc, char* argv[]) //bp addr [,name [,type]]
|
|||
if(BpGet(addr, BPNORMAL, bpname, &bp))
|
||||
{
|
||||
if(!bp.enabled)
|
||||
return DbgCmdExecDirect(StringUtils::sprintf("bpe " fhex, bp.addr).c_str()) ? STATUS_CONTINUE : STATUS_ERROR;
|
||||
return DbgCmdExecDirect(StringUtils::sprintf("bpe %p", bp.addr).c_str()) ? STATUS_CONTINUE : STATUS_ERROR;
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Breakpoint already set!"));
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
if(IsBPXEnabled(addr))
|
||||
{
|
||||
dprintf("Error setting breakpoint at " fhex "! (IsBPXEnabled)\n", addr);
|
||||
dprintf("Error setting breakpoint at %p! (IsBPXEnabled)\n", addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!MemRead(addr, &oldbytes, sizeof(short)))
|
||||
{
|
||||
dprintf("Error setting breakpoint at " fhex "! (memread)\n", addr);
|
||||
dprintf("Error setting breakpoint at %p! (memread)\n", addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!BpNew(addr, true, singleshoot, oldbytes, BPNORMAL, type, bpname))
|
||||
{
|
||||
dprintf("Error setting breakpoint at " fhex "! (bpnew)\n", addr);
|
||||
dprintf("Error setting breakpoint at %p! (bpnew)\n", addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
GuiUpdateAllViews();
|
||||
|
@ -284,10 +284,10 @@ CMDRESULT cbDebugSetBPX(int argc, char* argv[]) //bp addr [,name [,type]]
|
|||
{
|
||||
if(!MemIsValidReadPtr(addr))
|
||||
return STATUS_CONTINUE;
|
||||
dprintf("Error setting breakpoint at " fhex "! (SetBPX)\n", addr);
|
||||
dprintf("Error setting breakpoint at %p! (SetBPX)\n", addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dprintf("Breakpoint at " fhex " set!\n", addr);
|
||||
dprintf("Breakpoint at %p set!\n", addr);
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
|
@ -314,7 +314,7 @@ CMDRESULT cbDebugDeleteBPX(int argc, char* argv[])
|
|||
{
|
||||
if(!BpDelete(found.addr, BPNORMAL))
|
||||
{
|
||||
dprintf("Delete breakpoint failed (bpdel): " fhex "\n", found.addr);
|
||||
dprintf("Delete breakpoint failed (bpdel): %p\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(found.enabled && !DeleteBPX(found.addr))
|
||||
|
@ -322,7 +322,7 @@ CMDRESULT cbDebugDeleteBPX(int argc, char* argv[])
|
|||
GuiUpdateAllViews();
|
||||
if(!MemIsValidReadPtr(found.addr))
|
||||
return STATUS_CONTINUE;
|
||||
dprintf("Delete breakpoint failed (DeleteBPX): " fhex "\n", found.addr);
|
||||
dprintf("Delete breakpoint failed (DeleteBPX): %p\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
return STATUS_CONTINUE;
|
||||
|
@ -335,7 +335,7 @@ CMDRESULT cbDebugDeleteBPX(int argc, char* argv[])
|
|||
}
|
||||
if(!BpDelete(found.addr, BPNORMAL))
|
||||
{
|
||||
dprintf("Delete breakpoint failed (bpdel): " fhex "\n", found.addr);
|
||||
dprintf("Delete breakpoint failed (bpdel): %p\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(found.enabled && !DeleteBPX(found.addr))
|
||||
|
@ -343,7 +343,7 @@ CMDRESULT cbDebugDeleteBPX(int argc, char* argv[])
|
|||
GuiUpdateAllViews();
|
||||
if(!MemIsValidReadPtr(found.addr))
|
||||
return STATUS_CONTINUE;
|
||||
dprintf("Delete breakpoint failed (DeleteBPX): " fhex "\n", found.addr);
|
||||
dprintf("Delete breakpoint failed (DeleteBPX): %p\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Breakpoint deleted!"));
|
||||
|
@ -371,12 +371,12 @@ CMDRESULT cbDebugEnableBPX(int argc, char* argv[])
|
|||
{
|
||||
if(!SetBPX(found.addr, found.titantype, (void*)cbUserBreakpoint))
|
||||
{
|
||||
dprintf("Could not enable breakpoint " fhex " (SetBPX)\n", found.addr);
|
||||
dprintf("Could not enable breakpoint %p (SetBPX)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!BpEnable(found.addr, BPNORMAL, true))
|
||||
{
|
||||
dprintf("Could not enable breakpoint " fhex " (BpEnable)\n", found.addr);
|
||||
dprintf("Could not enable breakpoint %p (BpEnable)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
GuiUpdateAllViews();
|
||||
|
@ -396,12 +396,12 @@ CMDRESULT cbDebugEnableBPX(int argc, char* argv[])
|
|||
}
|
||||
if(!SetBPX(found.addr, found.titantype, (void*)cbUserBreakpoint))
|
||||
{
|
||||
dprintf("Could not enable breakpoint " fhex " (SetBPX)\n", found.addr);
|
||||
dprintf("Could not enable breakpoint %p (SetBPX)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!BpEnable(found.addr, BPNORMAL, true))
|
||||
{
|
||||
dprintf("Could not enable breakpoint " fhex " (BpEnable)\n", found.addr);
|
||||
dprintf("Could not enable breakpoint %p (BpEnable)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
GuiUpdateAllViews();
|
||||
|
@ -429,7 +429,7 @@ CMDRESULT cbDebugDisableBPX(int argc, char* argv[])
|
|||
{
|
||||
if(!BpEnable(found.addr, BPNORMAL, false))
|
||||
{
|
||||
dprintf("Could not disable breakpoint " fhex " (BpEnable)\n", found.addr);
|
||||
dprintf("Could not disable breakpoint %p (BpEnable)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!DeleteBPX(found.addr))
|
||||
|
@ -437,7 +437,7 @@ CMDRESULT cbDebugDisableBPX(int argc, char* argv[])
|
|||
GuiUpdateAllViews();
|
||||
if(!MemIsValidReadPtr(found.addr))
|
||||
return STATUS_CONTINUE;
|
||||
dprintf("Could not disable breakpoint " fhex " (DeleteBPX)\n", found.addr);
|
||||
dprintf("Could not disable breakpoint %p (DeleteBPX)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
GuiUpdateAllViews();
|
||||
|
@ -456,7 +456,7 @@ CMDRESULT cbDebugDisableBPX(int argc, char* argv[])
|
|||
}
|
||||
if(!BpEnable(found.addr, BPNORMAL, false))
|
||||
{
|
||||
dprintf("Could not disable breakpoint " fhex " (BpEnable)\n", found.addr);
|
||||
dprintf("Could not disable breakpoint %p (BpEnable)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!DeleteBPX(found.addr))
|
||||
|
@ -464,7 +464,7 @@ CMDRESULT cbDebugDisableBPX(int argc, char* argv[])
|
|||
GuiUpdateAllViews();
|
||||
if(!MemIsValidReadPtr(found.addr))
|
||||
return STATUS_CONTINUE;
|
||||
dprintf("Could not disable breakpoint " fhex " (DeleteBPX)\n", found.addr);
|
||||
dprintf("Could not disable breakpoint %p (DeleteBPX)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Breakpoint disabled!"));
|
||||
|
@ -868,7 +868,7 @@ CMDRESULT cbDebugSetHardwareBreakpoint(int argc, char* argv[])
|
|||
if(BpGet(addr, BPHARDWARE, 0, &bp))
|
||||
{
|
||||
if(!bp.enabled)
|
||||
return DbgCmdExecDirect(StringUtils::sprintf("bphwe " fhex, bp.addr).c_str()) ? STATUS_CONTINUE : STATUS_ERROR;
|
||||
return DbgCmdExecDirect(StringUtils::sprintf("bphwe %p", bp.addr).c_str()) ? STATUS_CONTINUE : STATUS_ERROR;
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Hardware breakpoint already set!"));
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -882,7 +882,7 @@ CMDRESULT cbDebugSetHardwareBreakpoint(int argc, char* argv[])
|
|||
dputs(QT_TRANSLATE_NOOP("DBG", "Error setting hardware breakpoint (TitanEngine)!"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dprintf("Hardware breakpoint at " fhex " set!\n", addr);
|
||||
dprintf("Hardware breakpoint at %p set!\n", addr);
|
||||
GuiUpdateAllViews();
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -907,12 +907,12 @@ CMDRESULT cbDebugDeleteHardwareBreakpoint(int argc, char* argv[])
|
|||
{
|
||||
if(!BpDelete(found.addr, BPHARDWARE))
|
||||
{
|
||||
dprintf("Delete hardware breakpoint failed: " fhex " (BpDelete)\n", found.addr);
|
||||
dprintf("Delete hardware breakpoint failed: %p (BpDelete)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!DeleteHardwareBreakPoint(TITANGETDRX(found.titantype)))
|
||||
{
|
||||
dprintf("Delete hardware breakpoint failed: " fhex " (DeleteHardwareBreakPoint)\n", found.addr);
|
||||
dprintf("Delete hardware breakpoint failed: %p (DeleteHardwareBreakPoint)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
return STATUS_CONTINUE;
|
||||
|
@ -925,12 +925,12 @@ CMDRESULT cbDebugDeleteHardwareBreakpoint(int argc, char* argv[])
|
|||
}
|
||||
if(!BpDelete(found.addr, BPHARDWARE))
|
||||
{
|
||||
dprintf("Delete hardware breakpoint failed: " fhex " (BpDelete)\n", found.addr);
|
||||
dprintf("Delete hardware breakpoint failed: %p (BpDelete)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!DeleteHardwareBreakPoint(TITANGETDRX(found.titantype)))
|
||||
{
|
||||
dprintf("Delete hardware breakpoint failed: " fhex " (DeleteHardwareBreakPoint)\n", found.addr);
|
||||
dprintf("Delete hardware breakpoint failed: %p (DeleteHardwareBreakPoint)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Hardware breakpoint deleted!"));
|
||||
|
@ -976,12 +976,12 @@ CMDRESULT cbDebugEnableHardwareBreakpoint(int argc, char* argv[])
|
|||
BpSetTitanType(found.addr, BPHARDWARE, found.titantype);
|
||||
if(!SetHardwareBreakPoint(found.addr, drx, TITANGETTYPE(found.titantype), TITANGETSIZE(found.titantype), (void*)cbHardwareBreakpoint))
|
||||
{
|
||||
dprintf("Could not enable hardware breakpoint " fhex " (SetHardwareBreakpoint)\n", found.addr);
|
||||
dprintf("Could not enable hardware breakpoint %p (SetHardwareBreakpoint)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!BpEnable(found.addr, BPHARDWARE, true))
|
||||
{
|
||||
dprintf("Could not enable hardware breakpoint " fhex " (BpEnable)\n", found.addr);
|
||||
dprintf("Could not enable hardware breakpoint %p (BpEnable)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Hardware breakpoint enabled!"));
|
||||
|
@ -1018,12 +1018,12 @@ CMDRESULT cbDebugDisableHardwareBreakpoint(int argc, char* argv[])
|
|||
}
|
||||
if(!BpEnable(found.addr, BPHARDWARE, false))
|
||||
{
|
||||
dprintf("Could not disable hardware breakpoint " fhex " (BpEnable)\n", found.addr);
|
||||
dprintf("Could not disable hardware breakpoint %p (BpEnable)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!DeleteHardwareBreakPoint(TITANGETDRX(found.titantype)))
|
||||
{
|
||||
dprintf("Could not disable hardware breakpoint " fhex " (DeleteHardwareBreakpoint)\n", found.addr);
|
||||
dprintf("Could not disable hardware breakpoint %p (DeleteHardwareBreakpoint)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Hardware breakpoint disabled!"));
|
||||
|
@ -1101,7 +1101,7 @@ CMDRESULT cbDebugSetMemoryBpx(int argc, char* argv[])
|
|||
dputs(QT_TRANSLATE_NOOP("DBG", "Error setting memory breakpoint! (SetMemoryBPXEx)"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dprintf("Memory breakpoint at " fhex " set!\n", addr);
|
||||
dprintf("Memory breakpoint at %p set!\n", addr);
|
||||
GuiUpdateAllViews();
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -1128,12 +1128,12 @@ CMDRESULT cbDebugDeleteMemoryBreakpoint(int argc, char* argv[])
|
|||
MemFindBaseAddr(found.addr, &size);
|
||||
if(!BpDelete(found.addr, BPMEMORY))
|
||||
{
|
||||
dprintf("Delete memory breakpoint failed: " fhex " (BpDelete)\n", found.addr);
|
||||
dprintf("Delete memory breakpoint failed: %p (BpDelete)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!RemoveMemoryBPX(found.addr, size))
|
||||
{
|
||||
dprintf("Delete memory breakpoint failed: " fhex " (RemoveMemoryBPX)\n", found.addr);
|
||||
dprintf("Delete memory breakpoint failed: %p (RemoveMemoryBPX)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
return STATUS_CONTINUE;
|
||||
|
@ -1148,12 +1148,12 @@ CMDRESULT cbDebugDeleteMemoryBreakpoint(int argc, char* argv[])
|
|||
MemFindBaseAddr(found.addr, &size);
|
||||
if(!BpDelete(found.addr, BPMEMORY))
|
||||
{
|
||||
dprintf("Delete memory breakpoint failed: " fhex " (BpDelete)\n", found.addr);
|
||||
dprintf("Delete memory breakpoint failed: %p (BpDelete)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!RemoveMemoryBPX(found.addr, size))
|
||||
{
|
||||
dprintf("Delete memory breakpoint failed: " fhex " (RemoveMemoryBPX)\n", found.addr);
|
||||
dprintf("Delete memory breakpoint failed: %p (RemoveMemoryBPX)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Memory breakpoint deleted!"));
|
||||
|
@ -1193,12 +1193,12 @@ CMDRESULT cbDebugEnableMemoryBreakpoint(int argc, char* argv[])
|
|||
MemFindBaseAddr(found.addr, &size);
|
||||
if(!SetMemoryBPXEx(found.addr, size, found.titantype, !found.singleshoot, (void*)cbMemoryBreakpoint))
|
||||
{
|
||||
dprintf("Could not enable memory breakpoint " fhex " (SetMemoryBPXEx)\n", found.addr);
|
||||
dprintf("Could not enable memory breakpoint %p (SetMemoryBPXEx)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!BpEnable(found.addr, BPMEMORY, true))
|
||||
{
|
||||
dprintf("Could not enable memory breakpoint " fhex " (BpEnable)\n", found.addr);
|
||||
dprintf("Could not enable memory breakpoint %p (BpEnable)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Memory breakpoint enabled!"));
|
||||
|
@ -1237,12 +1237,12 @@ CMDRESULT cbDebugDisableMemoryBreakpoint(int argc, char* argv[])
|
|||
MemFindBaseAddr(found.addr, &size);
|
||||
if(!RemoveMemoryBPX(found.addr, size))
|
||||
{
|
||||
dprintf("Could not disable memory breakpoint " fhex " (RemoveMemoryBPX)\n", found.addr);
|
||||
dprintf("Could not disable memory breakpoint %p (RemoveMemoryBPX)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!BpEnable(found.addr, BPMEMORY, false))
|
||||
{
|
||||
dprintf("Could not disable memory breakpoint " fhex " (BpEnable)\n", found.addr);
|
||||
dprintf("Could not disable memory breakpoint %p (BpEnable)\n", found.addr);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Memory breakpoint disabled!"));
|
||||
|
@ -1514,7 +1514,7 @@ CMDRESULT cbDebugAlloc(int argc, char* argv[])
|
|||
if(!mem)
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "VirtualAllocEx failed"));
|
||||
else
|
||||
dprintf(fhex"\n", mem);
|
||||
dprintf("%p\n", mem);
|
||||
if(mem)
|
||||
varset("$lastalloc", mem, true);
|
||||
//update memory map
|
||||
|
@ -1586,7 +1586,7 @@ CMDRESULT cbDebugMemset(int argc, char* argv[])
|
|||
if(!Fill((void*)addr, size & 0xFFFFFFFF, &fi))
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Memset failed"));
|
||||
else
|
||||
dprintf("Memory " fhex " (size: %.8X) set to %.2X\n", addr, size & 0xFFFFFFFF, value & 0xFF);
|
||||
dprintf("Memory %p (size: %.8X) set to %.2X\n", addr, size & 0xFFFFFFFF, value & 0xFF);
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
|
@ -1620,7 +1620,7 @@ CMDRESULT cbDebugPause(int argc, char* argv[])
|
|||
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
if(!SetBPX(CIP, UE_BREAKPOINT, (void*)cbPauseBreakpoint))
|
||||
{
|
||||
dprintf("Error setting breakpoint at " fhex "! (SetBPX)\n", CIP);
|
||||
dprintf("Error setting breakpoint at %p! (SetBPX)\n", CIP);
|
||||
if(ResumeThread(hActiveThread) == -1)
|
||||
{
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Error resuming thread"));
|
||||
|
@ -2444,7 +2444,7 @@ CMDRESULT cbDebugGetPageRights(int argc, char* argv[])
|
|||
return STATUS_ERROR;
|
||||
}
|
||||
|
||||
dprintf("Page: " fhex ", Rights: %s\n", addr, rights);
|
||||
dprintf("Page: %p, Rights: %s\n", addr, rights);
|
||||
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -2462,7 +2462,7 @@ CMDRESULT cbDebugSetPageRights(int argc, char* argv[])
|
|||
|
||||
if(!MemSetPageRights(addr, argv[2]))
|
||||
{
|
||||
dprintf("Error: Set rights of " fhex " with Rights: %s\n", addr, argv[2]);
|
||||
dprintf("Error: Set rights of %p with Rights: %s\n", addr, argv[2]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
|
||||
|
@ -2476,7 +2476,7 @@ CMDRESULT cbDebugSetPageRights(int argc, char* argv[])
|
|||
MemUpdateMap();
|
||||
GuiUpdateMemoryView();
|
||||
|
||||
dprintf("New rights of " fhex ": %s\n", addr, rights);
|
||||
dprintf("New rights of %p: %s\n", addr, rights);
|
||||
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -2523,21 +2523,21 @@ CMDRESULT cbDebugLoadLib(int argc, char* argv[])
|
|||
|
||||
// Arch specific asm code
|
||||
#ifdef _WIN64
|
||||
sprintf(command, "mov rcx, " fhex, (duint)DLLNameMem);
|
||||
sprintf(command, "mov rcx, %p", (duint)DLLNameMem);
|
||||
#else
|
||||
sprintf(command, "push " fhex, DLLNameMem);
|
||||
sprintf(command, "push %p", DLLNameMem);
|
||||
#endif // _WIN64
|
||||
|
||||
assembleat((duint)ASMAddr, command, &size, error, true);
|
||||
counter += size;
|
||||
|
||||
#ifdef _WIN64
|
||||
sprintf(command, "mov rax, " fhex, LoadLibraryA);
|
||||
sprintf(command, "mov rax, %p", LoadLibraryA);
|
||||
assembleat((duint)ASMAddr + counter, command, &size, error, true);
|
||||
counter += size;
|
||||
sprintf(command, "call rax");
|
||||
#else
|
||||
sprintf(command, "call " fhex, LoadLibraryA);
|
||||
sprintf(command, "call %p", LoadLibraryA);
|
||||
#endif // _WIN64
|
||||
|
||||
assembleat((duint)ASMAddr + counter, command, &size, error, true);
|
||||
|
@ -2635,7 +2635,7 @@ void showcommandlineerror(cmdline_error_t* cmdline_error)
|
|||
if(!unkown)
|
||||
{
|
||||
if(cmdline_error->addr != 0)
|
||||
dprintf(" (Address: " fhex ")", cmdline_error->addr);
|
||||
dprintf(" (Address: %p)", cmdline_error->addr);
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", ""));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -249,7 +249,7 @@ void disasmprint(duint addr)
|
|||
disasmget(addr, &instr);
|
||||
dprintf(">%d:\"%s\":\n", instr.type, instr.instruction);
|
||||
for(int i = 0; i < instr.argcount; i++)
|
||||
dprintf(" %d:%d:%" fext "X:%" fext "X:%" fext "X\n", i, instr.arg[i].type, instr.arg[i].constant, instr.arg[i].value, instr.arg[i].memvalue);
|
||||
dprintf(" %d:%d:%p:%p:%p\n", i, instr.arg[i].type, instr.arg[i].constant, instr.arg[i].value, instr.arg[i].memvalue);
|
||||
}
|
||||
|
||||
static bool isasciistring(const unsigned char* data, int maxlen)
|
||||
|
|
|
@ -67,14 +67,22 @@ CMDRESULT cbBadCmd(int argc, char* argv[])
|
|||
if(value > 15 && !hexonly)
|
||||
{
|
||||
if(!valuesignedcalc()) //signed numbers
|
||||
sprintf(format_str, "%%s=%%.%d" fext "X (%%" fext "ud)\n", valsize);
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%s=%%.%llud (%%llud)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%s=%%.%ud (%%ud)\n", valsize);
|
||||
#endif //_WIN64
|
||||
else
|
||||
sprintf(format_str, "%%s=%%.%d" fext "X (%%" fext "d)\n", valsize);
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%s=%%.%lld (%%lld)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%s=%%.%d (%%d)\n", valsize);
|
||||
#endif //_WIN64
|
||||
dprintf(format_str, *argv, value, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(format_str, "%%s=%%.%d" fext "X\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%d\n", valsize);
|
||||
dprintf(format_str, *argv, value);
|
||||
}
|
||||
}
|
||||
|
@ -83,22 +91,34 @@ CMDRESULT cbBadCmd(int argc, char* argv[])
|
|||
if(value > 15 && !hexonly)
|
||||
{
|
||||
if(!valuesignedcalc()) //signed numbers
|
||||
sprintf(format_str, "%%s=%%.%d" fext "X (%%" fext "ud)\n", valsize);
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%s=%%.%llud (%%llud)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%s=%%.%ud (%%ud)\n", valsize);
|
||||
#endif //_WIN64
|
||||
else
|
||||
sprintf(format_str, "%%s=%%.%d" fext "X (%%" fext "d)\n", valsize);
|
||||
sprintf(format_str, "%%.%d" fext "X (%%" fext "ud)\n", valsize);
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%s=%%.%lld (%%lld)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%s=%%.%d (%%d)\n", valsize);
|
||||
#endif //_WIN64
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%.%llud (%%llud)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%.%ud (%%ud)\n", valsize);
|
||||
#endif //_WIN64
|
||||
dprintf(format_str, value, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(format_str, "%%.%d" fext "X\n", valsize);
|
||||
sprintf(format_str, "%%.%d\n", valsize);
|
||||
dprintf(format_str, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
else //unknown command
|
||||
{
|
||||
dprintf("unknown command/expression: \"%s\"\n", *argv);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "unknown command/expression: \"%s\"\n"), *argv);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
return STATUS_CONTINUE;
|
||||
|
@ -120,25 +140,29 @@ CMDRESULT cbInstrVar(int argc, char* argv[])
|
|||
add++;
|
||||
if(valfromstring(argv[1] + add, &value))
|
||||
{
|
||||
dprintf("invalid variable name \"%s\"\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid variable name \"%s\"\n"), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!valfromstring(arg2, &value))
|
||||
{
|
||||
dprintf("invalid value \"%s\"\n", arg2);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid value \"%s\"\n"), arg2);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!varnew(argv[1], value, VAR_USER))
|
||||
{
|
||||
dprintf("error creating variable \"%s\"\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "error creating variable \"%s\"\n"), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(value > 15)
|
||||
dprintf("%s=%" fext "X (%" fext "ud)\n", argv[1], value, value);
|
||||
#ifdef _WIN64
|
||||
dprintf("DBG", "%s=%p (%llud)\n", argv[1], value, value);
|
||||
#else //x86
|
||||
dprintf("%s=%p (%ud)\n", argv[1], value, value);
|
||||
#endif //_WIN64
|
||||
else
|
||||
dprintf("%s=%" fext "X\n", argv[1], value);
|
||||
dprintf("%s=%p\n", argv[1], value);
|
||||
}
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -151,9 +175,9 @@ CMDRESULT cbInstrVarDel(int argc, char* argv[])
|
|||
return STATUS_ERROR;
|
||||
}
|
||||
if(!vardel(argv[1], false))
|
||||
dprintf("could not delete variable \"%s\"\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "could not delete variable \"%s\"\n"), argv[1]);
|
||||
else
|
||||
dprintf("deleted variable \"%s\"\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "deleted variable \"%s\"\n"), argv[1]);
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
|
@ -180,7 +204,7 @@ CMDRESULT cbInstrMov(int argc, char* argv[])
|
|||
{
|
||||
if(!isxdigit(dataText[i]))
|
||||
{
|
||||
dprintf("invalid hex string \"%s\" (contains invalid characters)\n", dataText.c_str());
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid hex string \"%s\" (contains invalid characters)\n"), dataText.c_str());
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
}
|
||||
|
@ -188,7 +212,7 @@ CMDRESULT cbInstrMov(int argc, char* argv[])
|
|||
duint dest;
|
||||
if(!valfromstring(argv[1], &dest) || !MemIsValidReadPtr(dest))
|
||||
{
|
||||
dprintf("invalid destination \"%s\"\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid destination \"%s\"\n"), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
//Convert text to byte array (very ugly)
|
||||
|
@ -201,7 +225,7 @@ CMDRESULT cbInstrMov(int argc, char* argv[])
|
|||
int res = 0;
|
||||
if(sscanf_s(b, "%X", &res) != 1)
|
||||
{
|
||||
dprintf("invalid hex byte \"%s\"\n", b);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid hex byte \"%s\"\n"), b);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
data()[j] = res;
|
||||
|
@ -220,7 +244,7 @@ CMDRESULT cbInstrMov(int argc, char* argv[])
|
|||
duint set_value = 0;
|
||||
if(!valfromstring(srcText.c_str(), &set_value))
|
||||
{
|
||||
dprintf("invalid src \"%s\"\n", argv[2]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid src \"%s\"\n"), argv[2]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
bool isvar = false;
|
||||
|
@ -233,7 +257,7 @@ CMDRESULT cbInstrMov(int argc, char* argv[])
|
|||
duint value;
|
||||
if(valfromstring(argv[1], &value)) //if the var is a value already it's an invalid destination
|
||||
{
|
||||
dprintf("invalid dest \"%s\"\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid dest \"%s\"\n"), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
varnew(argv[1], set_value, VAR_USER);
|
||||
|
@ -278,22 +302,16 @@ CMDRESULT cbInstrVarList(int argc, char* argv[])
|
|||
duint value = (duint)variables()[i].value.u.value;
|
||||
if(variables()[i].type != VAR_HIDDEN)
|
||||
{
|
||||
if(filter)
|
||||
{
|
||||
if(variables()[i].type == filter)
|
||||
{
|
||||
if(value > 15)
|
||||
dprintf("%s=%" fext "X (%" fext "ud)\n", name, value, value);
|
||||
else
|
||||
dprintf("%s=%" fext "X\n", name, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
if(!filter || variables()[i].type == filter)
|
||||
{
|
||||
if(value > 15)
|
||||
dprintf("%s=%" fext "X (%" fext "ud)\n", name, value, value);
|
||||
#ifdef _WIN64
|
||||
dprintf("%s=%p (%llud)\n", name, value, value);
|
||||
#else //x86
|
||||
dprintf"%s=%p (%ud)\n", name, value, value);
|
||||
#endif //_WIN64
|
||||
else
|
||||
dprintf("%s=%" fext "X\n", name, value);
|
||||
dprintf("%s=%p\n", name, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -452,7 +470,7 @@ CMDRESULT cbInstrAssemble(int argc, char* argv[])
|
|||
duint addr = 0;
|
||||
if(!valfromstring(argv[1], &addr))
|
||||
{
|
||||
dprintf("invalid expression: \"%s\"!\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid expression: \"%s\"!\n"), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!DbgMemIsValidReadPtr(addr))
|
||||
|
@ -468,7 +486,7 @@ CMDRESULT cbInstrAssemble(int argc, char* argv[])
|
|||
if(!assembleat(addr, argv[2], &size, error, fillnop))
|
||||
{
|
||||
varset("$result", size, false);
|
||||
dprintf("failed to assemble \"%s\" (%s)\n", argv[2], error);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "failed to assemble \"%s\" (%s)\n"), argv[2], error);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
varset("$result", size, false);
|
||||
|
@ -834,7 +852,7 @@ CMDRESULT cbInstrPush(int argc, char* argv[])
|
|||
duint value;
|
||||
if(!valfromstring(argv[1], &value))
|
||||
{
|
||||
dprintf("invalid argument \"%s\"!\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid argument \"%s\"!\n"), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
Script::Stack::Push(value);
|
||||
|
@ -872,7 +890,7 @@ CMDRESULT cbInstrBswap(int argc, char* argv[])
|
|||
return STATUS_ERROR;
|
||||
if(!isvar)
|
||||
{
|
||||
dprintf("Invalid expression: \"%s\"", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Invalid expression: \"%s\""), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
duint result = arg1;
|
||||
|
@ -1160,7 +1178,7 @@ CMDRESULT cbInstrGetstr(int argc, char* argv[])
|
|||
dprintf(QT_TRANSLATE_NOOP("DBG", "failed to get variable data \"%s\"!\n"), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dprintf("%s=\"%s\"\n", argv[1], string());
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "%s=\"%s\"\n"), argv[1], string());
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
|
@ -1437,7 +1455,7 @@ CMDRESULT cbInstrFindMemAll(int argc, char* argv[])
|
|||
if(len > 16)
|
||||
strcat_s(patternshort, "...");
|
||||
char patterntitle[256] = "";
|
||||
sprintf_s(patterntitle, "Pattern: %s", patternshort);
|
||||
sprintf_s(patterntitle, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "Pattern: %s")), patternshort);
|
||||
GuiReferenceInitialize(patterntitle);
|
||||
GuiReferenceAddColumn(2 * sizeof(duint), "Address");
|
||||
if(findData)
|
||||
|
@ -1696,11 +1714,17 @@ CMDRESULT cbInstrFunctionList(int argc, char* argv[])
|
|||
CMDRESULT cbInstrArgumentList(int argc, char* argv[])
|
||||
{
|
||||
//setup reference view
|
||||
GuiReferenceInitialize("Arguments");
|
||||
GuiReferenceAddColumn(2 * sizeof(duint), "Start");
|
||||
GuiReferenceAddColumn(2 * sizeof(duint), "End");
|
||||
GuiReferenceAddColumn(64, "Disassembly (Start)");
|
||||
GuiReferenceAddColumn(0, "Label/Comment");
|
||||
String TranslatedString;
|
||||
TranslatedString = GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "Arguments"));
|
||||
GuiReferenceInitialize(TranslatedString.c_str());
|
||||
TranslatedString = GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "Start"));
|
||||
GuiReferenceAddColumn(2 * sizeof(duint), TranslatedString.c_str());
|
||||
TranslatedString = GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "End"));
|
||||
GuiReferenceAddColumn(2 * sizeof(duint), TranslatedString.c_str());
|
||||
TranslatedString = GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "Disassembly (Start)"));
|
||||
GuiReferenceAddColumn(64, TranslatedString.c_str());
|
||||
TranslatedString = GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "Label/Comment"));
|
||||
GuiReferenceAddColumn(10, TranslatedString.c_str());
|
||||
GuiReferenceReloadData();
|
||||
size_t cbsize;
|
||||
ArgumentEnum(0, &cbsize);
|
||||
|
@ -1853,7 +1877,7 @@ CMDRESULT cbInstrFindAsm(int argc, char* argv[])
|
|||
char error[MAX_ERROR_SIZE] = "";
|
||||
if(!assemble(addr + size / 2, dest, &asmsize, argv[1], error))
|
||||
{
|
||||
dprintf("failed to assemble \"%s\" (%s)!\n", argv[1], error);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "failed to assemble \"%s\" (%s)!\n"), argv[1], error);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
BASIC_INSTRUCTION_INFO basicinfo;
|
||||
|
@ -1880,7 +1904,7 @@ static void yaraCompilerCallback(int error_level, const char* file_name, int lin
|
|||
dprintf("[YARA WARNING] ");
|
||||
break;
|
||||
}
|
||||
dprintf("File: \"%s\", Line: %d, Message: \"%s\"\n", file_name, line_number, message);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "File: \"%s\", Line: %d, Message: \"%s\"\n"), file_name, line_number, message);
|
||||
}
|
||||
|
||||
static String yara_print_string(const uint8_t* data, int length)
|
||||
|
@ -1961,13 +1985,13 @@ static int yaraScanCallback(int message, void* message_data, void* user_data)
|
|||
if(STRING_IS_NULL(yrRule->strings))
|
||||
{
|
||||
if(debug)
|
||||
dprintf("[YARA] Global rule \"%s\' matched!\n", yrRule->identifier);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "[YARA] Global rule \"%s\' matched!\n"), yrRule->identifier);
|
||||
addReference(base, nullptr, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
if(debug)
|
||||
dprintf("[YARA] Rule \"%s\" matched:\n", yrRule->identifier);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "[YARA] Rule \"%s\" matched:\n"), yrRule->identifier);
|
||||
YR_STRING* string;
|
||||
yr_rule_strings_foreach(yrRule, string)
|
||||
{
|
||||
|
@ -1987,7 +2011,7 @@ static int yaraScanCallback(int message, void* message_data, void* user_data)
|
|||
addr = base + offset;
|
||||
|
||||
if(debug)
|
||||
dprintf("[YARA] String \"%s\" : %s on %p\n", string->identifier, pattern.c_str(), addr);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "[YARA] String \"%s\" : %s on %p\n"), string->identifier, pattern.c_str(), addr);
|
||||
|
||||
addReference(addr, string->identifier, pattern);
|
||||
}
|
||||
|
@ -2000,7 +2024,7 @@ static int yaraScanCallback(int message, void* message_data, void* user_data)
|
|||
{
|
||||
YR_RULE* yrRule = (YR_RULE*)message_data;
|
||||
if(debug)
|
||||
dprintf("[YARA] Rule \"%s\" did not match!\n", yrRule->identifier);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "[YARA] Rule \"%s\" did not match!\n"), yrRule->identifier);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -2015,7 +2039,7 @@ static int yaraScanCallback(int message, void* message_data, void* user_data)
|
|||
{
|
||||
YR_MODULE_IMPORT* yrModuleImport = (YR_MODULE_IMPORT*)message_data;
|
||||
if(debug)
|
||||
dprintf("[YARA] Imported module \"%s\"!\n", yrModuleImport->module_name);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "[YARA] Imported module \"%s\"!\n"), yrModuleImport->module_name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -2048,7 +2072,7 @@ CMDRESULT cbInstrYara(int argc, char* argv[])
|
|||
{
|
||||
if(!valfromstring(argv[2], &addr))
|
||||
{
|
||||
dprintf("invalid value \"%s\"!\n", argv[2]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid value \"%s\"!\n"), argv[2]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
|
||||
|
@ -2071,7 +2095,7 @@ CMDRESULT cbInstrYara(int argc, char* argv[])
|
|||
}
|
||||
if(!FileHelper::ReadAllData(modPath, rawFileData))
|
||||
{
|
||||
dprintf("failed to read file \"%s\"!\n", modPath);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "failed to read file \"%s\"!\n"), modPath);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
size = rawFileData.size();
|
||||
|
@ -2088,7 +2112,7 @@ CMDRESULT cbInstrYara(int argc, char* argv[])
|
|||
String rulesContent;
|
||||
if(!FileHelper::ReadAllText(argv[1], rulesContent))
|
||||
{
|
||||
dprintf("Failed to read the rules file \"%s\"\n", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Failed to read the rules file \"%s\"\n"), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
|
||||
|
@ -2166,7 +2190,7 @@ CMDRESULT cbInstrYaramod(int argc, char* argv[])
|
|||
}
|
||||
if(!ModBaseFromName(argv[2]))
|
||||
{
|
||||
dprintf("invalid module \"%s\"!\n", argv[2]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid module \"%s\"!\n"), argv[2]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
return cmddirectexec(StringUtils::sprintf("yara \"%s\",\"%s\",%s", argv[1], argv[2], argc > 3 && *argv[3] == '1' ? "1" : "0").c_str());
|
||||
|
@ -2231,12 +2255,12 @@ CMDRESULT cbInstrCapstone(int argc, char* argv[])
|
|||
const cs_insn* instr = cp.GetInstr();
|
||||
const cs_x86 & x86 = cp.x86();
|
||||
int argcount = x86.op_count;
|
||||
dprintf("%s %s\n", instr->mnemonic, instr->op_str);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "%s %s\n"), instr->mnemonic, instr->op_str);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "size: %d, id: %d, opcount: %d\n"), cp.Size(), cp.GetId(), cp.OpCount());
|
||||
for(int i = 0; i < argcount; i++)
|
||||
{
|
||||
const cs_x86_op & op = x86.operands[i];
|
||||
dprintf("operand \"%s\" %d, ", cp.OperandText(i).c_str(), i + 1);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "operand \"%s\" %d, "), cp.OperandText(i).c_str(), i + 1);
|
||||
switch(op.type)
|
||||
{
|
||||
case X86_OP_REG:
|
||||
|
@ -2396,7 +2420,7 @@ CMDRESULT cbInstrVirtualmod(int argc, char* argv[])
|
|||
if(ModNameFromAddr(base, modname, true))
|
||||
BpEnumAll(cbSetModuleBreakpoints, modname);
|
||||
|
||||
dprintf("Virtual module \"%s\" loaded on %p[%p]!\n", argv[1], base, size);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Virtual module \"%s\" loaded on %p[%p]!\n"), argv[1], base, size);
|
||||
GuiUpdateAllViews();
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -2540,7 +2564,7 @@ CMDRESULT cbInstrSetMaxFindResult(int argc, char* argv[])
|
|||
duint num;
|
||||
if(!valfromstring(argv[1], &num))
|
||||
{
|
||||
dprintf("Invalid expression: \"%s\"", argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Invalid expression: \"%s\""), argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
maxFindResults = int(num & 0x7FFFFFFF);
|
||||
|
@ -2571,7 +2595,7 @@ CMDRESULT cbInstrSavedata(int argc, char* argv[])
|
|||
return STATUS_ERROR;
|
||||
}
|
||||
|
||||
dprintf("%p[%p] written to \"%s\" !\n", addr, size, argv[1]);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "%p[%p] written to \"%s\" !\n"), addr, size, argv[1]);
|
||||
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
|
|
@ -30,9 +30,9 @@ void stackupdateseh()
|
|||
for(duint i = 0; i < count; i++)
|
||||
{
|
||||
if(i + 1 != count)
|
||||
sprintf_s(comment.comment, "Pointer to SEH_Record[%d]", i + 1);
|
||||
sprintf_s(comment.comment, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "Pointer to SEH_Record[%d]")), i + 1);
|
||||
else
|
||||
sprintf_s(comment.comment, "End of SEH Chain");
|
||||
sprintf_s(comment.comment, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "End of SEH Chain")));
|
||||
newcache.insert({ SEHList[i], comment });
|
||||
}
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ bool stackcommentget(duint addr, STACK_COMMENT* comment)
|
|||
if(*module)
|
||||
sprintf(returnToAddr, "%s.", module);
|
||||
if(!*label)
|
||||
sprintf(label, fhex, data);
|
||||
sprintf(label, "%p", data);
|
||||
strcat(returnToAddr, label);
|
||||
|
||||
data = basicinfo.addr;
|
||||
|
@ -98,12 +98,12 @@ bool stackcommentget(duint addr, STACK_COMMENT* comment)
|
|||
if(*module)
|
||||
sprintf(returnFromAddr, "%s.", module);
|
||||
if(!*label)
|
||||
sprintf(label, fhex, data);
|
||||
sprintf(label, "%p", data);
|
||||
strcat_s(returnFromAddr, label);
|
||||
sprintf_s(comment->comment, "return to %s from %s", returnToAddr, returnFromAddr);
|
||||
sprintf_s(comment->comment, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "return to %s from %s")), returnToAddr, returnFromAddr);
|
||||
}
|
||||
else
|
||||
sprintf_s(comment->comment, "return to %s from ???", returnToAddr);
|
||||
sprintf_s(comment->comment, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "return to %s from ???")), returnToAddr);
|
||||
strcpy_s(comment->color, "!rtnclr"); // Special token for return address color;
|
||||
return true;
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ bool stackcommentget(duint addr, STACK_COMMENT* comment)
|
|||
if(*label) //+label
|
||||
sprintf(comment->comment, "%s.%s", module, label);
|
||||
else //module only
|
||||
sprintf(comment->comment, "%s." fhex, module, data);
|
||||
sprintf(comment->comment, "%s.%p", module, data);
|
||||
return true;
|
||||
}
|
||||
else if(*label) //label only
|
||||
|
@ -179,7 +179,7 @@ void StackEntryFromFrame(CALLSTACKENTRY* Entry, duint Address, duint From, duint
|
|||
{
|
||||
auto symname = SymGetSymbolicName(addr);
|
||||
if(!symname.length())
|
||||
symname = StringUtils::sprintf(fhex, addr);
|
||||
symname = StringUtils::sprintf("%p", addr);
|
||||
return symname;
|
||||
};
|
||||
|
||||
|
@ -187,9 +187,9 @@ void StackEntryFromFrame(CALLSTACKENTRY* Entry, duint Address, duint From, duint
|
|||
strncpy_s(returnToAddr, getSymAddrName(Entry->to).c_str(), _TRUNCATE);
|
||||
|
||||
if(Entry->from)
|
||||
sprintf_s(Entry->comment, "return to %s from %s", returnToAddr, getSymAddrName(Entry->from).c_str());
|
||||
sprintf_s(Entry->comment, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "return to %s from %s")), returnToAddr, getSymAddrName(Entry->from).c_str());
|
||||
else
|
||||
sprintf_s(Entry->comment, "return to %s from ???", returnToAddr);
|
||||
sprintf_s(Entry->comment, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "return to %s from ???")), returnToAddr);
|
||||
}
|
||||
|
||||
#define MAX_CALLSTACK_CACHE 20
|
||||
|
|
|
@ -29,17 +29,26 @@ static String printValue(FormatValueType value, ValueType::ValueType type)
|
|||
{
|
||||
case ValueType::Unknown:
|
||||
break;
|
||||
#ifdef _WIN64
|
||||
case ValueType::SignedDecimal:
|
||||
result = StringUtils::sprintf("%" fext "d", valuint);
|
||||
result = StringUtils::sprintf("%lld", valuint);
|
||||
break;
|
||||
case ValueType::UnsignedDecimal:
|
||||
result = StringUtils::sprintf("%" fext "u", valuint);
|
||||
result = StringUtils::sprintf("%llu", valuint);
|
||||
break;
|
||||
#else //x86
|
||||
case ValueType::SignedDecimal:
|
||||
result = StringUtils::sprintf("%d", valuint);
|
||||
break;
|
||||
case ValueType::UnsignedDecimal:
|
||||
result = StringUtils::sprintf("%u", valuint);
|
||||
break;
|
||||
#endif //_WIN64
|
||||
case ValueType::Hex:
|
||||
result = StringUtils::sprintf("%" fext "X", valuint);
|
||||
result = StringUtils::sprintf("%p", valuint);
|
||||
break;
|
||||
case ValueType::Pointer:
|
||||
result = StringUtils::sprintf(fhex, valuint);
|
||||
result = StringUtils::sprintf("%p", valuint);
|
||||
break;
|
||||
case ValueType::String:
|
||||
if(DbgGetStringAt(valuint, string))
|
||||
|
@ -127,7 +136,7 @@ static String handleFormatString(const String & formatString, const FormatValueV
|
|||
auto argnum = getArgNumType(formatString, type);
|
||||
if(type != ValueType::Unknown && argnum < values.size())
|
||||
return printValue(values.at(argnum), type);
|
||||
return "[Formatting Error]";
|
||||
return GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "[Formatting Error]"));
|
||||
}
|
||||
|
||||
String stringformat(String format, const FormatValueVector & values)
|
||||
|
@ -185,7 +194,7 @@ static String handleFormatStringInline(const String & formatString)
|
|||
auto value = getArgExpressionType(formatString, type);
|
||||
if(value && *value)
|
||||
return printValue(value, type);
|
||||
return "[Formatting Error]";
|
||||
return GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "[Formatting Error]"));
|
||||
}
|
||||
|
||||
String stringformatinline(String format)
|
||||
|
|
|
@ -365,7 +365,7 @@ String StringUtils::ToCompressedHex(unsigned char* buffer, size_t size)
|
|||
result.push_back(HEXLOOKUP[lastCh & 0xF]);
|
||||
}
|
||||
else if(repeat > 2)
|
||||
result.append(StringUtils::sprintf("{%" fext "X}", repeat));
|
||||
result.append(StringUtils::sprintf("{%p}", repeat));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ void SymEnum(duint Base, CBSYMBOLENUM EnumCallback, void* UserData)
|
|||
|
||||
// Enumerate every single symbol for the module in 'base'
|
||||
if(!SafeSymEnumSymbols(fdProcessInfo->hProcess, Base, "*", EnumSymbols, &symbolCbData))
|
||||
dputs("SymEnumSymbols failed!");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "SymEnumSymbols failed!"));
|
||||
|
||||
// Emit pseudo entry point symbol
|
||||
SYMBOLINFO symbol;
|
||||
|
@ -113,7 +113,7 @@ bool SymGetModuleList(std::vector<SYMBOLMODULEINFO>* List)
|
|||
// Execute the symbol enumerator (Force cast to STDCALL)
|
||||
if(!SafeSymEnumerateModules64(fdProcessInfo->hProcess, EnumModules, List))
|
||||
{
|
||||
dputs("SymEnumerateModules64 failed!");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "SymEnumerateModules64 failed!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -163,7 +163,7 @@ void SymDownloadAllSymbols(const char* SymbolStore)
|
|||
|
||||
if(!SafeSymGetSearchPathW(fdProcessInfo->hProcess, oldSearchPath, MAX_PATH))
|
||||
{
|
||||
dputs("SymGetSearchPathW failed!");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "SymGetSearchPathW failed!"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -173,7 +173,7 @@ void SymDownloadAllSymbols(const char* SymbolStore)
|
|||
|
||||
if(!SafeSymSetSearchPathW(fdProcessInfo->hProcess, StringUtils::Utf8ToUtf16(customSearchPath).c_str()))
|
||||
{
|
||||
dputs("SymSetSearchPathW (1) failed!");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "SymSetSearchPathW (1) failed!"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -183,24 +183,24 @@ void SymDownloadAllSymbols(const char* SymbolStore)
|
|||
// Reload
|
||||
for(auto & module : modList)
|
||||
{
|
||||
dprintf("Downloading symbols for %s...\n", module.name);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Downloading symbols for %s...\n"), module.name);
|
||||
|
||||
wchar_t modulePath[MAX_PATH];
|
||||
if(!GetModuleFileNameExW(fdProcessInfo->hProcess, (HMODULE)module.base, modulePath, MAX_PATH))
|
||||
{
|
||||
dprintf("GetModuleFileNameExW(" fhex ") failed!\n", module.base);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "GetModuleFileNameExW(%p) failed!\n"), module.base);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!SafeSymUnloadModule64(fdProcessInfo->hProcess, (DWORD64)module.base))
|
||||
{
|
||||
dprintf("SymUnloadModule64(" fhex ") failed!\n", module.base);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "SymUnloadModule64(%p) failed!\n"), module.base);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!SafeSymLoadModuleExW(fdProcessInfo->hProcess, 0, modulePath, 0, (DWORD64)module.base, 0, 0, 0))
|
||||
{
|
||||
dprintf("SymLoadModuleEx(" fhex ") failed!\n", module.base);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "SymLoadModuleEx(%p) failed!\n"), module.base);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -209,7 +209,7 @@ void SymDownloadAllSymbols(const char* SymbolStore)
|
|||
|
||||
// Restore the old search path
|
||||
if(!SafeSymSetSearchPathW(fdProcessInfo->hProcess, oldSearchPath))
|
||||
dputs("SymSetSearchPathW (2) failed!");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "SymSetSearchPathW (2) failed!"));
|
||||
}
|
||||
|
||||
bool SymAddrFromName(const char* Name, duint* Address)
|
||||
|
@ -254,7 +254,7 @@ String SymGetSymbolicName(duint Address)
|
|||
if(!DbgGetLabelAt(Address, SEG_DEFAULT, label))
|
||||
{
|
||||
if(hasModule)
|
||||
return StringUtils::sprintf("%s." fhex, modname, Address);
|
||||
return StringUtils::sprintf("%s.%p", modname, Address);
|
||||
return "";
|
||||
}
|
||||
|
||||
|
|
|
@ -1312,7 +1312,7 @@ bool valapifromstring(const char* name, duint* value, int* value_size, bool prin
|
|||
if(!GetModuleFileNameExW(fdProcessInfo->hProcess, (HMODULE)modbase, szModName, MAX_PATH))
|
||||
{
|
||||
if(!silent)
|
||||
dprintf("could not get filename of module " fhex "\n", modbase);
|
||||
dprintf("could not get filename of module %p\n", modbase);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1435,7 +1435,7 @@ bool valapifromstring(const char* name, duint* value, int* value_size, bool prin
|
|||
return true;
|
||||
for(int i = 0; i < found; i++)
|
||||
if(i != kernel32)
|
||||
dprintf(fhex"\n", addrfound()[i]);
|
||||
dprintf("%p\n", addrfound()[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1443,7 +1443,7 @@ bool valapifromstring(const char* name, duint* value, int* value_size, bool prin
|
|||
if(!printall || silent)
|
||||
return true;
|
||||
for(int i = 1; i < found; i++)
|
||||
dprintf(fhex"\n", addrfound()[i]);
|
||||
dprintf("%p\n", addrfound()[i]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -1710,7 +1710,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
|
|||
}
|
||||
else if(strstr(string, "sub_") == string) //then come sub_ functions
|
||||
{
|
||||
auto result = sscanf(string, "sub_%" fext "X", value) == 1;
|
||||
auto result = sscanf(string, "sub_%p", value) == 1;
|
||||
duint start;
|
||||
return result && FunctionGet(*value, &start, nullptr) && *value == start;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ duint WatchExpr::getIntValue()
|
|||
if(currValue != 0)
|
||||
{
|
||||
duint cip = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
dprintf("Watchdog %s (expression \"%s\") is triggered at " fhex " ! Original value: " fhex ", New value: " fhex "\n", WatchName, getExpr().c_str(), cip, origVal, currValue);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Watchdog %s (expression \"%s\") is triggered at %p ! Original value: %p, New value: %p\n"), WatchName, getExpr().c_str(), cip, origVal, currValue);
|
||||
watchdogTriggered = 1;
|
||||
}
|
||||
break;
|
||||
|
@ -48,7 +48,7 @@ duint WatchExpr::getIntValue()
|
|||
if(currValue == 0)
|
||||
{
|
||||
duint cip = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
dprintf("Watchdog %s (expression \"%s\") is triggered at " fhex " ! Original value: " fhex ", New value: " fhex "\n", WatchName, getExpr().c_str(), cip, origVal, currValue);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Watchdog %s (expression \"%s\") is triggered at %p ! Original value: %p, New value: %p\n"), WatchName, getExpr().c_str(), cip, origVal, currValue);
|
||||
watchdogTriggered = 1;
|
||||
}
|
||||
break;
|
||||
|
@ -56,7 +56,7 @@ duint WatchExpr::getIntValue()
|
|||
if(currValue != origVal || !haveCurrValue)
|
||||
{
|
||||
duint cip = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
dprintf("Watchdog %s (expression \"%s\") is triggered at " fhex " ! Original value: " fhex ", New value: " fhex "\n", WatchName, getExpr().c_str(), cip, origVal, currValue);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Watchdog %s (expression \"%s\") is triggered at %p ! Original value: %p, New value: %p\n"), WatchName, getExpr().c_str(), cip, origVal, currValue);
|
||||
watchdogTriggered = 1;
|
||||
}
|
||||
break;
|
||||
|
@ -64,7 +64,7 @@ duint WatchExpr::getIntValue()
|
|||
if(currValue == origVal || !haveCurrValue)
|
||||
{
|
||||
duint cip = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
dprintf("Watchdog %s (expression \"%s\") is triggered at " fhex " ! Original value: " fhex ", New value: " fhex "\n", WatchName, getExpr().c_str(), cip, origVal, currValue);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Watchdog %s (expression \"%s\") is triggered at %p ! Original value: %p, New value: %p\n"), WatchName, getExpr().c_str(), cip, origVal, currValue);
|
||||
watchdogTriggered = 1;
|
||||
}
|
||||
break;
|
||||
|
@ -122,7 +122,7 @@ unsigned int WatchAddExprUnlocked(const char* expr, WATCHVARTYPE type)
|
|||
{
|
||||
unsigned int newid = InterlockedExchangeAdd(&idCounter, 1);
|
||||
char DefaultName[MAX_WATCH_NAME_SIZE];
|
||||
sprintf_s(DefaultName, "Watch %u", newid);
|
||||
sprintf_s(DefaultName, GuiTranslateDbg(QT_TRANSLATE_NOOP("DBG", "Watch %u")), newid);
|
||||
WatchExpr* newWatch = new WatchExpr(DefaultName, expr, type);
|
||||
auto temp = watchexpr.emplace(std::make_pair(newid, newWatch));
|
||||
if(temp.second)
|
||||
|
@ -433,7 +433,7 @@ CMDRESULT cbAddWatch(int argc, char* argv[])
|
|||
{
|
||||
if(argc < 2)
|
||||
{
|
||||
dputs("No enough arguments for addwatch\n");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "No enough arguments for addwatch\n"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
WATCHVARTYPE newtype = WATCHVARTYPE::TYPE_UINT;
|
||||
|
@ -459,14 +459,14 @@ CMDRESULT cbDelWatch(int argc, char* argv[])
|
|||
{
|
||||
if(argc < 2)
|
||||
{
|
||||
dputs("No enough arguments for delwatch\n");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "No enough arguments for delwatch\n"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
duint id;
|
||||
bool ok = valfromstring(argv[1], &id);
|
||||
if(!ok)
|
||||
{
|
||||
dputs("Error expression in argument 1.\n");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Error expression in argument 1.\n"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
WatchDelete((unsigned int)id);
|
||||
|
@ -477,7 +477,7 @@ CMDRESULT cbSetWatchName(int argc, char* argv[])
|
|||
{
|
||||
if(argc < 3)
|
||||
{
|
||||
dputs("No enough arguments for SetWatchName");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "No enough arguments for SetWatchName"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
duint id;
|
||||
|
@ -489,7 +489,7 @@ CMDRESULT cbSetWatchName(int argc, char* argv[])
|
|||
}
|
||||
else
|
||||
{
|
||||
dputs("Error expression in argument 1.\n");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Error expression in argument 1.\n"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
}
|
||||
|
@ -498,7 +498,7 @@ CMDRESULT cbSetWatchExpression(int argc, char* argv[])
|
|||
{
|
||||
if(argc < 3)
|
||||
{
|
||||
dputs("No enough arguments for SetWatchExpression");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "No enough arguments for SetWatchExpression"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
duint id;
|
||||
|
@ -528,7 +528,7 @@ CMDRESULT cbSetWatchExpression(int argc, char* argv[])
|
|||
}
|
||||
else
|
||||
{
|
||||
dputs("Error expression in argument 1.\n");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Error expression in argument 1.\n"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
}
|
||||
|
@ -537,14 +537,14 @@ CMDRESULT cbSetWatchdog(int argc, char* argv[])
|
|||
{
|
||||
if(argc < 2)
|
||||
{
|
||||
dputs("No enough arguments for delwatch\n");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "No enough arguments for delwatch\n"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
duint id;
|
||||
bool ok = valfromstring(argv[1], &id);
|
||||
if(!ok)
|
||||
{
|
||||
dputs("Error expression in argument 1.\n");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Error expression in argument 1.\n"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
WATCHDOGMODE mode;
|
||||
|
@ -562,7 +562,7 @@ CMDRESULT cbSetWatchdog(int argc, char* argv[])
|
|||
mode = WATCHDOGMODE::MODE_ISFALSE;
|
||||
else
|
||||
{
|
||||
dputs("Unknown watchdog mode.\n");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "Unknown watchdog mode.\n"));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue