mirror of
https://github.com/CrazyRedMachine/popnhax.git
synced 2024-11-27 23:40:50 +01:00
fix autopin
This commit is contained in:
parent
202811920e
commit
028cc6ad39
@ -5012,6 +5012,7 @@ static bool patch_fps_uncap(uint16_t fps) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t g_autopin_offset = 0;
|
||||||
uint32_t g_pincode;
|
uint32_t g_pincode;
|
||||||
uint32_t g_last_enter_pincode;
|
uint32_t g_last_enter_pincode;
|
||||||
void (*real_pincode)(void);
|
void (*real_pincode)(void);
|
||||||
@ -5039,6 +5040,16 @@ void hook_pincode()
|
|||||||
__asm("add esi, 0x30\n");
|
__asm("add esi, 0x30\n");
|
||||||
__asm("mov [esi], eax\n");
|
__asm("mov [esi], eax\n");
|
||||||
__asm("sub esi, 0x30\n");
|
__asm("sub esi, 0x30\n");
|
||||||
|
|
||||||
|
__asm("cmp dword ptr [_g_autopin_offset], 0\n");
|
||||||
|
__asm("je skip_2_crash\n");
|
||||||
|
__asm("mov eax, dword ptr [_g_autopin_offset]\n");
|
||||||
|
__asm("add eax, edi\n");
|
||||||
|
__asm("mov byte ptr [eax], 2\n");
|
||||||
|
__asm("add eax, 4\n");
|
||||||
|
__asm("mov byte ptr [eax], 4\n");
|
||||||
|
|
||||||
|
__asm("skip_2_crash:\n");
|
||||||
__asm("pop eax\n");
|
__asm("pop eax\n");
|
||||||
__asm("call_real_pincode_handling:\n");
|
__asm("call_real_pincode_handling:\n");
|
||||||
real_pincode();
|
real_pincode();
|
||||||
@ -5067,6 +5078,17 @@ static bool patch_autopin()
|
|||||||
|
|
||||||
memcpy(&g_pincode, line, 4);
|
memcpy(&g_pincode, line, 4);
|
||||||
|
|
||||||
|
/* retrieve offset where to put values to prevent a crash */
|
||||||
|
{
|
||||||
|
int64_t pattern_offset = _search(data, dllSize, "\x1C\x10\xC7\x87", 4, 0);
|
||||||
|
if (pattern_offset == -1) {
|
||||||
|
LOG("WARNING: autopin: cannot find pincode special offset, might crash\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
g_autopin_offset = *(uint32_t *)((int64_t)data + pattern_offset + 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* auto enter pincode */
|
||||||
{
|
{
|
||||||
int64_t pattern_offset = _search(data, dllSize, "\x33\xC4\x89\x44\x24\x14\xA1", 7, 0);
|
int64_t pattern_offset = _search(data, dllSize, "\x33\xC4\x89\x44\x24\x14\xA1", 7, 0);
|
||||||
if (pattern_offset == -1) {
|
if (pattern_offset == -1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user