miscfunctions: move configStringToInt to std::expected

This commit is contained in:
Vaxry
2024-11-18 23:53:38 +00:00
parent 936dfedbad
commit 47a1650c48
8 changed files with 106 additions and 72 deletions

View File

@@ -90,11 +90,14 @@ CFunctionHook::SAssembly CFunctionHook::fixInstructionProbeRIPCalls(const SInstr
std::string code = probe.assembly.substr(lastAsmNewline, probe.assembly.find("\n", lastAsmNewline) - lastAsmNewline);
if (code.contains("%rip")) {
CVarList tokens{code, 0, 's'};
size_t plusPresent = tokens[1][0] == '+' ? 1 : 0;
size_t minusPresent = tokens[1][0] == '-' ? 1 : 0;
std::string addr = tokens[1].substr((plusPresent || minusPresent), tokens[1].find("(%rip)") - (plusPresent || minusPresent));
const int32_t OFFSET = (minusPresent ? -1 : 1) * configStringToInt(addr);
CVarList tokens{code, 0, 's'};
size_t plusPresent = tokens[1][0] == '+' ? 1 : 0;
size_t minusPresent = tokens[1][0] == '-' ? 1 : 0;
std::string addr = tokens[1].substr((plusPresent || minusPresent), tokens[1].find("(%rip)") - (plusPresent || minusPresent));
auto addrResult = configStringToInt(addr);
if (!addrResult)
return {};
const int32_t OFFSET = (minusPresent ? -1 : 1) * *addrResult;
if (OFFSET == 0)
return {};
const uint64_t DESTINATION = currentAddress + OFFSET + len;