restored "fext" sematics
This commit is contained in:
parent
740684100c
commit
cdafdb2b8b
|
@ -169,7 +169,11 @@ static bool getLabel(duint addr, char* label)
|
|||
duint start;
|
||||
if(FunctionGet(addr, &start, nullptr) && addr == start)
|
||||
{
|
||||
sprintf_s(label, MAX_LABEL_SIZE, "sub_%p", start);
|
||||
#ifdef _WIN64
|
||||
sprintf_s(label, MAX_LABEL_SIZE, "sub_%llX", start);
|
||||
#else //x86
|
||||
sprintf_s(label, MAX_LABEL_SIZE, "sub_%X", start);
|
||||
#endif //_WIN64
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,14 +49,6 @@
|
|||
//defines
|
||||
#define deflen 1024
|
||||
|
||||
#ifdef _WIN64 //defined by default
|
||||
//#define fhex "%.16llX"
|
||||
//#define fext "ll"
|
||||
#else
|
||||
//#define fhex "%.8X"
|
||||
//#define fext ""
|
||||
#endif // _WIN64
|
||||
|
||||
enum arch
|
||||
{
|
||||
notfound,
|
||||
|
|
|
@ -19,7 +19,11 @@ public:
|
|||
|
||||
static String NodeToString(const CFNode & n)
|
||||
{
|
||||
return StringUtils::sprintf("start: %p, %p\nend: %p\nfunction: %p", n.start, n.icount, n.end, n.parentGraph); //TODO: %llu or %u
|
||||
#ifdef _WIN64
|
||||
return StringUtils::sprintf("start: %p, %lld\nend: %p\nfunction: %p", n.start, n.icount, n.end, n.parentGraph); //TODO: %llu or %u
|
||||
#else //x86
|
||||
return StringUtils::sprintf("start: %p, %d\nend: %p\nfunction: %p", n.start, n.icount, n.end, n.parentGraph); //TODO: %llu or %u
|
||||
#endif //_WIN64
|
||||
}
|
||||
|
||||
static const char* GetNodeColor(const CFGraph & graph, const CFNode & node)
|
||||
|
@ -62,7 +66,7 @@ public:
|
|||
parent.first);
|
||||
}
|
||||
result += "}";
|
||||
return result;
|
||||
return std::move(result);
|
||||
}
|
||||
|
||||
const CFGraph* GetFunctionGraph(duint entry) const
|
||||
|
|
|
@ -49,6 +49,15 @@ void dprintf(const char* Format, ...)
|
|||
va_end(args);
|
||||
}
|
||||
|
||||
void dprintf_untranslated(const char* Format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, Format);
|
||||
dprintf_args_untranslated(Format, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Print a formatted string to the console.
|
||||
\param format The printf format to use (see documentation of printf for more information).
|
||||
|
|
|
@ -7,6 +7,7 @@ void dputs(const char* Text);
|
|||
void dprintf(const char* Format, ...);
|
||||
void dprintf_args(const char* Format, va_list Args);
|
||||
void dputs_untranslated(const char* Text);
|
||||
void dprintf_untranslated(const char* Format, ...);
|
||||
void dprintf_args_untranslated(const char* Format, va_list Args);
|
||||
|
||||
#endif // _CONSOLE_H
|
|
@ -192,7 +192,11 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
}
|
||||
if(data.size() != retsize)
|
||||
{
|
||||
sprintf_s(error, MAX_ERROR_SIZE, "invalid size (expected %p, got %p)", retsize, data.size()); //TODO: %llu or %u
|
||||
#ifdef _WIN64
|
||||
sprintf_s(error, MAX_ERROR_SIZE, GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "invalid size (expected %llu, got %llu)")), retsize, data.size());
|
||||
#else //x86
|
||||
sprintf_s(error, MAX_ERROR_SIZE, GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "invalid size (expected %u, got %u)")), retsize, data.size());
|
||||
#endif //_WIN64
|
||||
return false;
|
||||
}
|
||||
buffer = String((char*)data.data(), data.size());
|
||||
|
@ -211,7 +215,11 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
|
|||
}
|
||||
if(data.size() != retsize)
|
||||
{
|
||||
sprintf_s(error, MAX_ERROR_SIZE, "invalid size (expected %p, got %p)", retsize, data.size()); //TODO: %llu or %u
|
||||
#ifdef _WIN64
|
||||
sprintf_s(error, MAX_ERROR_SIZE, GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "invalid size (expected %llu, got %llu)")), retsize, data.size());
|
||||
#else //x86
|
||||
sprintf_s(error, MAX_ERROR_SIZE, GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "invalid size (expected %u, got %u)")), retsize, data.size());
|
||||
#endif //_WIN64
|
||||
return false;
|
||||
}
|
||||
buffer = String((char*)data.data(), data.size());
|
||||
|
|
|
@ -1001,138 +1001,84 @@ void cbRtrStep()
|
|||
}
|
||||
}
|
||||
|
||||
void cbTOCNDStep()
|
||||
static void cbTXCNDStep(bool bStepInto, void (*callback)())
|
||||
{
|
||||
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
|
||||
if(traceCondition && traceCondition->ContinueTrace())
|
||||
{
|
||||
if(bTraceRecordEnabledDuringTrace)
|
||||
_dbg_dbgtraceexecute(GetContextDataEx(hActiveThread, UE_CIP));
|
||||
StepOver((void*)cbTOCNDStep);
|
||||
(bStepInto ? StepInto : StepOver)(callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
auto steps = dbgcleartracecondition();
|
||||
#ifdef _WIN64
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %llu steps!\n"), steps);
|
||||
#else //x86
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
|
||||
#endif //_WIN64
|
||||
cbRtrFinalStep();
|
||||
}
|
||||
}
|
||||
|
||||
void cbTOCNDStep()
|
||||
{
|
||||
cbTXCNDStep(false, cbTOCNDStep);
|
||||
}
|
||||
|
||||
void cbTICNDStep()
|
||||
{
|
||||
cbTXCNDStep(true, cbTICNDStep);
|
||||
}
|
||||
|
||||
static void cbTXXTStep(bool bStepInto, bool bInto, void (*callback)())
|
||||
{
|
||||
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
|
||||
if(traceCondition && traceCondition->ContinueTrace())
|
||||
// Trace record
|
||||
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
if(!traceCondition)
|
||||
{
|
||||
if(bTraceRecordEnabledDuringTrace)
|
||||
_dbg_dbgtraceexecute(GetContextDataEx(hActiveThread, UE_CIP));
|
||||
StepInto((void*)cbTICNDStep);
|
||||
}
|
||||
else
|
||||
{
|
||||
auto steps = dbgcleartracecondition();
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && (TraceRecord.getHitCount(CIP) == 0 ^ bInto)) || !traceCondition->ContinueTrace())
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
auto steps = dbgcleartracecondition();
|
||||
#ifdef _WIN64
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %llu steps!\n"), steps);
|
||||
#else //x86
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
|
||||
#endif //_WIN64
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if(bTraceRecordEnabledDuringTrace)
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
(bStepInto ? StepInto : StepOver)(callback);
|
||||
}
|
||||
|
||||
void cbTIBTStep()
|
||||
{
|
||||
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
|
||||
// Trace record
|
||||
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
if(!traceCondition)
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && TraceRecord.getHitCount(CIP) == 0) || !traceCondition->ContinueTrace())
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
auto steps = dbgcleartracecondition();
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if(bTraceRecordEnabledDuringTrace)
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
StepInto((void*)cbTIBTStep);
|
||||
cbTXXTStep(true, false, cbTIBTStep);
|
||||
}
|
||||
|
||||
void cbTOBTStep()
|
||||
{
|
||||
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
|
||||
// Trace record
|
||||
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
if(!traceCondition)
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && TraceRecord.getHitCount(CIP) == 0) || !traceCondition->ContinueTrace())
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
auto steps = dbgcleartracecondition();
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if(bTraceRecordEnabledDuringTrace)
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
StepOver((void*)cbTOBTStep);
|
||||
cbTXXTStep(false, false, cbTIBTStep);
|
||||
}
|
||||
|
||||
void cbTIITStep()
|
||||
{
|
||||
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
|
||||
// Trace record
|
||||
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
if(!traceCondition)
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && TraceRecord.getHitCount(CIP) != 0) || !traceCondition->ContinueTrace())
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
auto steps = dbgcleartracecondition();
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if(bTraceRecordEnabledDuringTrace)
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
StepInto((void*)cbTIITStep);
|
||||
cbTXXTStep(true, true, cbTIBTStep);
|
||||
}
|
||||
|
||||
void cbTOITStep()
|
||||
{
|
||||
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
|
||||
// Trace record
|
||||
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
if(!traceCondition)
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && TraceRecord.getHitCount(CIP) != 0) || !traceCondition->ContinueTrace())
|
||||
{
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
auto steps = dbgcleartracecondition();
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
|
||||
cbRtrFinalStep();
|
||||
return;
|
||||
}
|
||||
if(bTraceRecordEnabledDuringTrace)
|
||||
_dbg_dbgtraceexecute(CIP);
|
||||
StepOver((void*)cbTOITStep);
|
||||
cbTXXTStep(false, true, cbTIBTStep);
|
||||
}
|
||||
|
||||
static void cbCreateProcess(CREATE_PROCESS_DEBUG_INFO* CreateProcessInfo)
|
||||
|
|
|
@ -249,7 +249,11 @@ 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:%p:%p:%p\n", i, instr.arg[i].type, instr.arg[i].constant, instr.arg[i].value, instr.arg[i].memvalue);
|
||||
#ifdef _WIN64
|
||||
dprintf(" %d:%d:%llX:%llX:%llX\n", i, instr.arg[i].type, instr.arg[i].constant, instr.arg[i].value, instr.arg[i].memvalue);
|
||||
#else //x86
|
||||
dprintf(" %d:%d:%X:%X:%X\n", i, instr.arg[i].type, instr.arg[i].constant, instr.arg[i].value, instr.arg[i].memvalue);
|
||||
#endif //_WIN64
|
||||
}
|
||||
|
||||
static bool isasciistring(const unsigned char* data, int maxlen)
|
||||
|
|
|
@ -68,15 +68,15 @@ CMDRESULT cbBadCmd(int argc, char* argv[])
|
|||
{
|
||||
if(!valuesignedcalc()) //signed numbers
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%s=%%.%llud (%%llud)\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%dllX (%%llud)\n", valsize); // TODO: This and the following statements use "%llX" for a "int"-typed variable. Maybe we can use "%X" everywhere?
|
||||
#else //x86
|
||||
sprintf(format_str, "%%s=%%.%ud (%%ud)\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%dX (%%ud)\n", valsize);
|
||||
#endif //_WIN64
|
||||
else
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%s=%%.%lld (%%lld)\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%dllX (%%lld)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%s=%%.%d (%%d)\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%dX (%%d)\n", valsize);
|
||||
#endif //_WIN64
|
||||
dprintf(format_str, *argv, value, value);
|
||||
}
|
||||
|
@ -92,27 +92,31 @@ CMDRESULT cbBadCmd(int argc, char* argv[])
|
|||
{
|
||||
if(!valuesignedcalc()) //signed numbers
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%s=%%.%llud (%%llud)\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%dllX (%%llud)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%s=%%.%ud (%%ud)\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%dX (%%ud)\n", valsize);
|
||||
#endif //_WIN64
|
||||
else
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%s=%%.%lld (%%lld)\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%dllX (%%lld)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%s=%%.%d (%%d)\n", valsize);
|
||||
sprintf(format_str, "%%s=%%.%dX (%%d)\n", valsize);
|
||||
#endif //_WIN64
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%.%llud (%%llud)\n", valsize);
|
||||
sprintf(format_str, "%%.%dllX (%%llud)\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%.%ud (%%ud)\n", valsize);
|
||||
sprintf(format_str, "%%.%dX (%%ud)\n", valsize);
|
||||
#endif //_WIN64
|
||||
dprintf(format_str, value, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(format_str, "%%.%d\n", valsize);
|
||||
dprintf(format_str, value);
|
||||
#ifdef _WIN64
|
||||
sprintf(format_str, "%%.%dllX\n", valsize);
|
||||
#else //x86
|
||||
sprintf(format_str, "%%.%dX\n", valsize);
|
||||
#endif //_WIN64
|
||||
dprintf_untranslated(format_str, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -157,12 +161,16 @@ CMDRESULT cbInstrVar(int argc, char* argv[])
|
|||
{
|
||||
if(value > 15)
|
||||
#ifdef _WIN64
|
||||
dprintf("DBG", "%s=%p (%llud)\n", argv[1], value, value);
|
||||
dprintf_untranslated("%s=%llX (%llud)\n", argv[1], value, value);
|
||||
#else //x86
|
||||
dprintf("%s=%p (%ud)\n", argv[1], value, value);
|
||||
dprintf_untranslated("%s=%X (%ud)\n", argv[1], value, value);
|
||||
#endif //_WIN64
|
||||
else
|
||||
dprintf("%s=%p\n", argv[1], value);
|
||||
#ifdef _WIN64
|
||||
dprintf_untranslated("%s=%llX\n", argv[1], value);
|
||||
#else //x86
|
||||
dprintf_untranslated("%s=%X\n", argv[1], value);
|
||||
#endif //_WIN64
|
||||
}
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -306,12 +314,16 @@ CMDRESULT cbInstrVarList(int argc, char* argv[])
|
|||
{
|
||||
if(value > 15)
|
||||
#ifdef _WIN64
|
||||
dprintf("%s=%p (%llud)\n", name, value, value);
|
||||
dprintf_untranslated("%s=%llX (%llud)\n", name, value, value);
|
||||
#else //x86
|
||||
dprintf("%s=%p (%ud)\n", name, value, value);
|
||||
dprintf_untranslated("%s=%X (%ud)\n", name, value, value);
|
||||
#endif //_WIN64
|
||||
else
|
||||
dprintf("%s=%p\n", name, value);
|
||||
#ifdef _WIN64
|
||||
dprintf_untranslated("%s=%llX\n", name, value);
|
||||
#else //x86
|
||||
dprintf_untranslated("%s=%X\n", name, value);
|
||||
#endif //_WIN64
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2594,8 +2606,11 @@ CMDRESULT cbInstrSavedata(int argc, char* argv[])
|
|||
dputs(QT_TRANSLATE_NOOP("DBG", "Failed to write file..."));
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "%p[%p] written to \"%s\" !\n"), addr, size, argv[1]);
|
||||
#ifdef _WIN64
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "%p[% llX] written to \"%s\" !\n"), addr, size, argv[1]);
|
||||
#else //x86
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "%p[% X] written to \"%s\" !\n"), addr, size, argv[1]);
|
||||
#endif
|
||||
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
@ -2721,7 +2736,11 @@ CMDRESULT cbHandleClose(int argc, char* argv[])
|
|||
dprintf(QT_TRANSLATE_NOOP("DBG", "DuplicateHandle failed: %s\n"), ErrorCodeToName(GetLastError()).c_str());
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Handle %p closed!\n"), handle);
|
||||
#ifdef _WIN64
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Handle %llX closed!\n"), handle);
|
||||
#else //x86
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "Handle %X closed!\n"), handle);
|
||||
#endif
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,9 @@ static String printValue(FormatValueType value, ValueType::ValueType type)
|
|||
case ValueType::UnsignedDecimal:
|
||||
result = StringUtils::sprintf("%llu", valuint);
|
||||
break;
|
||||
case ValueType::Hex:
|
||||
result = StringUtils::sprintf("%llX", valuint);
|
||||
break;
|
||||
#else //x86
|
||||
case ValueType::SignedDecimal:
|
||||
result = StringUtils::sprintf("%d", valuint);
|
||||
|
@ -43,10 +46,10 @@ static String printValue(FormatValueType value, ValueType::ValueType type)
|
|||
case ValueType::UnsignedDecimal:
|
||||
result = StringUtils::sprintf("%u", valuint);
|
||||
break;
|
||||
#endif //_WIN64
|
||||
case ValueType::Hex:
|
||||
result = StringUtils::sprintf("%p", valuint);
|
||||
result = StringUtils::sprintf("%X", valuint);
|
||||
break;
|
||||
#endif //_WIN64
|
||||
case ValueType::Pointer:
|
||||
result = StringUtils::sprintf("%p", valuint);
|
||||
break;
|
||||
|
|
|
@ -365,7 +365,11 @@ String StringUtils::ToCompressedHex(unsigned char* buffer, size_t size)
|
|||
result.push_back(HEXLOOKUP[lastCh & 0xF]);
|
||||
}
|
||||
else if(repeat > 2)
|
||||
result.append(StringUtils::sprintf("{%p}", repeat));
|
||||
#ifdef _WIN64
|
||||
result.append(StringUtils::sprintf("{%llX}", repeat));
|
||||
#else //x86
|
||||
result.append(StringUtils::sprintf("{%X}", repeat));
|
||||
#endif //_WIN64
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -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 %p\n", modbase);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "could not get filename of module %p\n"), modbase);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1320,7 +1320,7 @@ bool valapifromstring(const char* name, duint* value, int* value_size, bool prin
|
|||
if(!mod)
|
||||
{
|
||||
if(!silent)
|
||||
dprintf("unable to load library %s\n", szModName);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "unable to load library %s\n"), szModName);
|
||||
}
|
||||
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("%p\n", addrfound()[i]);
|
||||
dprintf_untranslated("%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("%p\n", addrfound()[i]);
|
||||
dprintf_untranslated("%p\n", addrfound()[i]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -1556,7 +1556,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
|
|||
if(!DbgIsDebugging())
|
||||
{
|
||||
if(!silent)
|
||||
dputs("not debugging");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging"));
|
||||
*value = 0;
|
||||
if(value_size)
|
||||
*value_size = 0;
|
||||
|
@ -1615,7 +1615,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
|
|||
if(!valfromstring(ptrstring.c_str(), value, silent, baseonly))
|
||||
{
|
||||
if(!silent)
|
||||
dprintf("noexpr failed on %s\n", ptrstring.c_str());
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "noexpr failed on %s\n"), ptrstring.c_str());
|
||||
return false;
|
||||
}
|
||||
duint addr = *value;
|
||||
|
@ -1623,7 +1623,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
|
|||
if(!MemRead(addr + seg_offset, value, read_size))
|
||||
{
|
||||
if(!silent)
|
||||
dputs("failed to read memory");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "failed to read memory"));
|
||||
return false;
|
||||
}
|
||||
if(value_size)
|
||||
|
@ -1637,7 +1637,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
|
|||
if(!DbgIsDebugging())
|
||||
{
|
||||
if(!silent)
|
||||
dputs("not debugging!");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging!"));
|
||||
*value = 0;
|
||||
if(value_size)
|
||||
*value_size = 0;
|
||||
|
@ -1655,7 +1655,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
|
|||
if(!DbgIsDebugging())
|
||||
{
|
||||
if(!silent)
|
||||
dputs("not debugging");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging"));
|
||||
*value = 0;
|
||||
if(value_size)
|
||||
*value_size = 0;
|
||||
|
@ -1710,12 +1710,16 @@ 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_%p", value) == 1;
|
||||
#ifdef _WIN64
|
||||
bool result = sscanf(string, "sub_%llX", value) == 1;
|
||||
#else //x86
|
||||
bool result = sscanf(string, "sub_%X", value) == 1;
|
||||
#endif //_WIN64
|
||||
duint start;
|
||||
return result && FunctionGet(*value, &start, nullptr) && *value == start;
|
||||
}
|
||||
if(!silent)
|
||||
dprintf("invalid value: \"%s\"!\n", string);
|
||||
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid value: \"%s\"!\n"), string);
|
||||
return false; //nothing was OK
|
||||
}
|
||||
|
||||
|
@ -2187,7 +2191,7 @@ bool valtostring(const char* string, duint value, bool silent)
|
|||
if(!DbgIsDebugging())
|
||||
{
|
||||
if(!silent)
|
||||
dputs("not debugging");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging"));
|
||||
return false;
|
||||
}
|
||||
int len = (int)strlen(string);
|
||||
|
@ -2229,7 +2233,7 @@ bool valtostring(const char* string, duint value, bool silent)
|
|||
if(!MemPatch(temp, &value_, read_size))
|
||||
{
|
||||
if(!silent)
|
||||
dputs("failed to write memory");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "failed to write memory"));
|
||||
return false;
|
||||
}
|
||||
GuiUpdateAllViews(); //repaint gui
|
||||
|
@ -2241,7 +2245,7 @@ bool valtostring(const char* string, duint value, bool silent)
|
|||
if(!DbgIsDebugging())
|
||||
{
|
||||
if(!silent)
|
||||
dputs("not debugging!");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging!"));
|
||||
return false;
|
||||
}
|
||||
bool ok = setregister(string, value);
|
||||
|
@ -2266,7 +2270,7 @@ bool valtostring(const char* string, duint value, bool silent)
|
|||
if(!DbgIsDebugging())
|
||||
{
|
||||
if(!silent)
|
||||
dputs("not debugging");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging"));
|
||||
return false;
|
||||
}
|
||||
bool set = false;
|
||||
|
@ -2281,7 +2285,7 @@ bool valtostring(const char* string, duint value, bool silent)
|
|||
if(!DbgIsDebugging())
|
||||
{
|
||||
if(!silent)
|
||||
dputs("not debugging!");
|
||||
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging!"));
|
||||
return false;
|
||||
}
|
||||
setfpuvalue(string + 1, value);
|
||||
|
|
Loading…
Reference in New Issue