TestMode Refactor

Remove Debug Hook
Fix Scanner LogOutput
This commit is contained in:
ptmaster
2024-12-02 00:57:19 +08:00
parent 3100509a89
commit 522a8a8357
2 changed files with 57 additions and 49 deletions
+13 -14
View File
@@ -93,7 +93,7 @@ namespace Card {
if (chipId.length () < 32) chipId = accessCodeTemplate.substr (0, 32 - chipId.length ()) + chipId;
for (size_t i = 0; i < 32; i++) *(cardData + 0x2C + i) = i < chipId.length() ? chipId[i] : 0;
for (size_t i = 0; i < 20; i++) *(cardData + 0x50 + i) = i < accessCode.length() ? accessCode[i] : 0;
if (!internalInvoke) LogMessage (LogLevel::INFO, "[Card] Insert Card accessCode: \"{}\" chipId: \"{}\"\n", accessCode, chipId);
if (!internalInvoke) LogMessage (LogLevel::INFO, "[Card] Insert Card accessCode: \"{}\" chipId: \"{}\"", accessCode, chipId);
patches::Scanner::Card::Internal::AgentInsertCard (cardData, internalInvoke);
return true;
}
@@ -118,7 +118,6 @@ namespace Card {
HOOK (u64, bngrw_ReqAiccAuth, PROC_ADDRESS ("bngrw.dll", "BngRwReqAiccAuth")) { return 1; }
HOOK (u64, bngrw_DevReset, PROC_ADDRESS ("bngrw.dll", "BngRwDevReset")) { return 1; } // Invoke when enter testmode
HOOK (i32, bngrw_ReqCancel, PROC_ADDRESS ("bngrw.dll", "BngRwReqCancel")) {
LogMessage (LogLevel::DEBUG, "[Card] Cancel!\n");
if (state != State::Disable) {
state = State::Disable;
patches::Scanner::Card::Internal::Commit0 (accessCodeTemplate, chipIdTemplate, true);
@@ -157,19 +156,19 @@ namespace Card {
bool
Commit(std::string accessCode, std::string chipId) {
if (!emulateCardReader) {
LogMessage (LogLevel::DEBUG, "[Card] Not emulate CardReader!\n");
LogMessage (LogLevel::DEBUG, "[Card] Not emulate CardReader!");
return false;
}
if (state != State::Ready) {
LogMessage (LogLevel::DEBUG, "[Card] Not Waiting for Touch, please wait!\n");
LogMessage (LogLevel::DEBUG, "[Card] Not Waiting for Touch, please wait!");
return false;
}
if (accessCode.length() == 0 || accessCode.length() > 20) {
LogMessage (LogLevel::ERROR, "[Card] Not an effective accessCode: \"{}\"\n", accessCode);
LogMessage (LogLevel::ERROR, "[Card] Not an effective accessCode: \"{}\"", accessCode);
return false;
}
if (chipId.length() > 32) {
LogMessage (LogLevel::ERROR, "[Card] Not an effective chipId: \"{}\"\n", chipId);
LogMessage (LogLevel::ERROR, "[Card] Not an effective chipId: \"{}\"", chipId);
return false;
}
return patches::Scanner::Card::Internal::Commit0 (accessCode, chipId, false);
@@ -184,7 +183,7 @@ namespace Card {
Init() {
LogMessage (LogLevel::INFO, "Init Card patches");
if (!emulateCardReader) {
LogMessage (LogLevel::WARN, "[Card] Card reader emulation disabled!\n");
LogMessage (LogLevel::WARN, "[Card] Card reader emulation disabled!");
INSTALL_HOOK (bngrw_ReqCancelOfficial);
INSTALL_HOOK (bngrw_ReqWaitTouchOfficial);
// patches::Plugins::InitCardReader (patches::Scanner::Card::Commit);
@@ -248,7 +247,7 @@ namespace Qr {
if (state == State::CopyWait && scanQueue.size () > 0) {
std::vector<uint8_t> data = scanQueue.front ();
if ((int)data.size () > length) {
LogMessage (LogLevel::ERROR, "[QR] Not an effective code, length: {} require: {}\n", data.size (), length);
LogMessage (LogLevel::ERROR, "[QR] Not an effective code, length: {} require: {}", data.size (), length);
}
std::stringstream hexStream;
hexStream << std::hex << std::uppercase << std::setfill ('0') << std::setw (2);
@@ -269,15 +268,15 @@ namespace Qr {
bool
Commit (std::vector<uint8_t> &buffer) {
if (!emulateQr) {
LogMessage (LogLevel::DEBUG, "[QR] Not emulate QR Scanner!\n");
LogMessage (LogLevel::DEBUG, "[QR] Not emulate QR Scanner!");
return false;
}
if (state == State::Disable) {
LogMessage (LogLevel::DEBUG, "[QR] Not Ready to accept QRData!\n");
LogMessage (LogLevel::DEBUG, "[QR] Not Ready to accept QRData!");
return false;
}
if (buffer.size () == 0) {
LogMessage (LogLevel::ERROR, "[QR] Not an effective code, length: 0\n");
LogMessage (LogLevel::ERROR, "[QR] Not an effective code, length: 0");
return false;
}
if (scanQueue.empty() || scanQueue.back() != buffer) {
@@ -293,7 +292,7 @@ namespace Qr {
bool
CommitLogin (std::string accessCode) {
if (!emulateQr) {
LogMessage (LogLevel::DEBUG, "[QR] Not emulate QR Scanner!\n");
LogMessage (LogLevel::DEBUG, "[QR] Not emulate QR Scanner!");
return false;
}
std::vector<uint8_t> buffer = {};
@@ -375,7 +374,7 @@ namespace Qr {
std::u8string u8PathStr (imagePath.begin (), imagePath.end ());
std::filesystem::path u8Path (u8PathStr);
if (!std::filesystem::is_regular_file (u8Path)) {
LogMessage (LogLevel::ERROR, "Failed to open image: {} (file not found)\n", u8Path.string());
LogMessage (LogLevel::ERROR, "Failed to open image: {} (file not found)", u8Path.string());
return buffer;
}
int width, height, channels;
@@ -399,7 +398,7 @@ namespace Qr {
LogMessage (LogLevel::INFO, "Init Qr patches");
if (!emulateQr) {
LogMessage (LogLevel::WARN, "[QR] QR emulation disabled!\n");
LogMessage (LogLevel::WARN, "[QR] QR emulation disabled!");
return;
}
patches::Plugins::InitQr (gameVersion);
+44 -35
View File
@@ -394,40 +394,48 @@ MID_HOOK (AttractDemo, ASLR (0x14045A720), SafetyHookContext &ctx) {
if (TestMode::ReadTestModeValue (L"AttractDemoItem") == 1) ctx.r14 = 0;
}
HOOK (u64, EnsoGameManagerInitialize, ASLR (0x1400E2520), u64 a1, u64 a2, u64 a3) {
LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerInitialize");
u64 result = originalEnsoGameManagerInitialize (a1, a2, a3);
LogMessage (LogLevel::DEBUG, "End EnsoGameManagerInitialize result={}", result);
return result;
}
// HOOK (u64, EnsoGameManagerInitialize, ASLR (0x1400E2520), u64 a1, u64 a2, u64 a3) {
// LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerInitialize");
// u64 result = originalEnsoGameManagerInitialize (a1, a2, a3);
// LogMessage (LogLevel::DEBUG, "End EnsoGameManagerInitialize result={}", result);
// return result;
// }
HOOK (u64, EnsoGameManagerLoading, ASLR (0x1400E2750), u64 a1, u64 a2, u64 a3) {
LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerLoading");
u64 result = originalEnsoGameManagerLoading (a1, a2, a3);
LogMessage (LogLevel::DEBUG, "End EnsoGameManagerLoading result={}", result);
return result;
}
// HOOK (u64, EnsoGameManagerLoading, ASLR (0x1400E2750), u64 a1, u64 a2, u64 a3) {
// LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerLoading");
// u64 result = originalEnsoGameManagerLoading (a1, a2, a3);
// LogMessage (LogLevel::DEBUG, "End EnsoGameManagerLoading result={}", result);
// return result;
// }
HOOK (bool, EnsoGameManagerPreparing, ASLR (0x1400E2990), u64 a1) {
LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerPreparing");
bool result = originalEnsoGameManagerPreparing (a1); // crashes here
LogMessage (LogLevel::DEBUG, "End EnsoGameManagerPreparing result={}", result);
return result;
}
// HOOK (bool, EnsoGameManagerPreparing, ASLR (0x1400E2990), u64 a1) {
// LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerPreparing");
// bool result = originalEnsoGameManagerPreparing (a1); // crashes here
// LogMessage (LogLevel::DEBUG, "End EnsoGameManagerPreparing result={}", result);
// return result;
// }
HOOK (u64, EnsoGameManagerStart, ASLR (0x1400E2A10), u64 a1, u64 a2, u64 a3) {
LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerStart");
u64 result = originalEnsoGameManagerStart (a1, a2, a3);
LogMessage (LogLevel::DEBUG, "End EnsoGameManagerStart result={}", result);
return result;
}
// HOOK (u64, EnsoGraphicManagerPreparing, ASLR (0x1400F0AB0), u64 a1, u64 a2, u64 a3) {
// LogMessage (LogLevel::DEBUG, "Begin EnsoGraphicManagerPreparing");
// u64 result = originalEnsoGraphicManagerPreparing (a1, a2, a3);
// LogMessage (LogLevel::DEBUG, "End EnsoGraphicManagerPreparing result={}", result);
// return result;
// }
HOOK (u64, EnsoGameManagerChechEnsoEnd, ASLR (0x1400E2A10), u64 a1, u64 a2, u64 a3) {
LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerChechEnsoEnd");
u64 result = originalEnsoGameManagerChechEnsoEnd (a1, a2, a3);
LogMessage (LogLevel::DEBUG, "End EnsoGameManagerChechEnsoEnd result={}", result);
return result;
}
// HOOK (u64, EnsoGameManagerStart, ASLR (0x1400E2A10), u64 a1, u64 a2, u64 a3) {
// LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerStart");
// u64 result = originalEnsoGameManagerStart (a1, a2, a3);
// LogMessage (LogLevel::DEBUG, "End EnsoGameManagerStart result={}", result);
// return result;
// }
// HOOK (u64, EnsoGameManagerChechEnsoEnd, ASLR (0x1400E2A10), u64 a1, u64 a2, u64 a3) {
// LogMessage (LogLevel::DEBUG, "Begin EnsoGameManagerChechEnsoEnd");
// u64 result = originalEnsoGameManagerChechEnsoEnd (a1, a2, a3);
// LogMessage (LogLevel::DEBUG, "End EnsoGameManagerChechEnsoEnd result={}", result);
// return result;
// }
constexpr i32 datatableBufferSize = 1024 * 1024 * 12;
safetyhook::Allocation datatableBuffer1;
@@ -492,11 +500,12 @@ Init () {
// Hook to get AppAccessor and ComponentAccessor
INSTALL_HOOK (DeviceCheck);
INSTALL_HOOK (luaL_newstate);
INSTALL_HOOK (EnsoGameManagerInitialize);
INSTALL_HOOK (EnsoGameManagerLoading);
INSTALL_HOOK (EnsoGameManagerPreparing);
INSTALL_HOOK (EnsoGameManagerStart);
INSTALL_HOOK (EnsoGameManagerChechEnsoEnd);
// INSTALL_HOOK (EnsoGameManagerInitialize);
// INSTALL_HOOK (EnsoGameManagerLoading);
// INSTALL_HOOK (EnsoGameManagerPreparing);
// INSTALL_HOOK (EnsoGraphicManagerPreparing);
// INSTALL_HOOK (EnsoGameManagerStart);
// INSTALL_HOOK (EnsoGameManagerChechEnsoEnd);
// Apply common config patch
WRITE_MEMORY (ASLR (0x140494533), i32, xRes);