1
0
Fork 0

removed fhex

This commit is contained in:
torusrxxx 2016-08-21 16:10:55 +08:00
parent 638fca28e4
commit 7b222f786b
16 changed files with 218 additions and 185 deletions

View File

@ -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;
}
}

View File

@ -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

View File

@ -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);

View File

@ -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);
}

View File

@ -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)

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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", ""));
}
}

View File

@ -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)

View File

@ -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;
}

View File

@ -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

View File

@ -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)

View File

@ -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;
}

View File

@ -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 "";
}

View File

@ -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;
}

View File

@ -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;
}
}