From 7b222f786bb7f3e510e2effb0d85ec13fed656bf Mon Sep 17 00:00:00 2001 From: torusrxxx Date: Sun, 21 Aug 2016 16:10:55 +0800 Subject: [PATCH] removed fhex --- src/dbg/_exports.cpp | 2 +- src/dbg/_global.h | 8 +- src/dbg/analysis/advancedanalysis.cpp | 2 +- src/dbg/analysis/advancedanalysis.h | 10 +- src/dbg/analysis/recursiveanalysis.cpp | 2 +- src/dbg/analysis/recursiveanalysis.h | 10 +- src/dbg/datainst_helper.cpp | 26 ++--- src/dbg/debugger_commands.cpp | 96 ++++++++--------- src/dbg/disasm_helper.cpp | 2 +- src/dbg/instruction.cpp | 144 ++++++++++++++----------- src/dbg/stackinfo.cpp | 20 ++-- src/dbg/stringformat.cpp | 21 ++-- src/dbg/stringutils.cpp | 2 +- src/dbg/symbolinfo.cpp | 20 ++-- src/dbg/value.cpp | 8 +- src/dbg/watch.cpp | 30 +++--- 16 files changed, 218 insertions(+), 185 deletions(-) diff --git a/src/dbg/_exports.cpp b/src/dbg/_exports.cpp index 980306ba..3a0f464d 100644 --- a/src/dbg/_exports.cpp +++ b/src/dbg/_exports.cpp @@ -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; } } diff --git a/src/dbg/_global.h b/src/dbg/_global.h index 347e38d3..28f47d84 100644 --- a/src/dbg/_global.h +++ b/src/dbg/_global.h @@ -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 diff --git a/src/dbg/analysis/advancedanalysis.cpp b/src/dbg/analysis/advancedanalysis.cpp index bce1836b..d23cde13 100644 --- a/src/dbg/analysis/advancedanalysis.cpp +++ b/src/dbg/analysis/advancedanalysis.cpp @@ -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); diff --git a/src/dbg/analysis/advancedanalysis.h b/src/dbg/analysis/advancedanalysis.h index 18ee5004..186fe935 100644 --- a/src/dbg/analysis/advancedanalysis.h +++ b/src/dbg/analysis/advancedanalysis.h @@ -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); } diff --git a/src/dbg/analysis/recursiveanalysis.cpp b/src/dbg/analysis/recursiveanalysis.cpp index 26cf6dc0..caf96152 100644 --- a/src/dbg/analysis/recursiveanalysis.cpp +++ b/src/dbg/analysis/recursiveanalysis.cpp @@ -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) diff --git a/src/dbg/analysis/recursiveanalysis.h b/src/dbg/analysis/recursiveanalysis.h index ab8b4dcb..b90ea389 100644 --- a/src/dbg/analysis/recursiveanalysis.h +++ b/src/dbg/analysis/recursiveanalysis.h @@ -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); } diff --git a/src/dbg/datainst_helper.cpp b/src/dbg/datainst_helper.cpp index d960aa31..1aea0d24 100644 --- a/src/dbg/datainst_helper.cpp +++ b/src/dbg/datainst_helper.cpp @@ -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 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 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; } diff --git a/src/dbg/debugger_commands.cpp b/src/dbg/debugger_commands.cpp index 2e65a256..83fad323 100644 --- a/src/dbg/debugger_commands.cpp +++ b/src/dbg/debugger_commands.cpp @@ -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", "")); } } diff --git a/src/dbg/disasm_helper.cpp b/src/dbg/disasm_helper.cpp index e705e02f..1009ad9a 100644 --- a/src/dbg/disasm_helper.cpp +++ b/src/dbg/disasm_helper.cpp @@ -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) diff --git a/src/dbg/instruction.cpp b/src/dbg/instruction.cpp index 10a78bb3..35e3261f 100644 --- a/src/dbg/instruction.cpp +++ b/src/dbg/instruction.cpp @@ -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; } diff --git a/src/dbg/stackinfo.cpp b/src/dbg/stackinfo.cpp index c05b644e..4df7727d 100644 --- a/src/dbg/stackinfo.cpp +++ b/src/dbg/stackinfo.cpp @@ -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 diff --git a/src/dbg/stringformat.cpp b/src/dbg/stringformat.cpp index 4d0718f6..cf54878c 100644 --- a/src/dbg/stringformat.cpp +++ b/src/dbg/stringformat.cpp @@ -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) diff --git a/src/dbg/stringutils.cpp b/src/dbg/stringutils.cpp index 6a26d2a8..6bf05646 100644 --- a/src/dbg/stringutils.cpp +++ b/src/dbg/stringutils.cpp @@ -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; } diff --git a/src/dbg/symbolinfo.cpp b/src/dbg/symbolinfo.cpp index c97a3ca8..8ca8dd60 100644 --- a/src/dbg/symbolinfo.cpp +++ b/src/dbg/symbolinfo.cpp @@ -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* 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 ""; } diff --git a/src/dbg/value.cpp b/src/dbg/value.cpp index 014c9b29..f378768b 100644 --- a/src/dbg/value.cpp +++ b/src/dbg/value.cpp @@ -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; } diff --git a/src/dbg/watch.cpp b/src/dbg/watch.cpp index 28c451b2..c5f411ea 100644 --- a/src/dbg/watch.cpp +++ b/src/dbg/watch.cpp @@ -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; } }