| 726 | |
| 727 | |
| 728 | void LibraryManager::FindNetworkFixedStringsEoCApp() |
| 729 | { |
| 730 | Pattern p; |
| 731 | p.FromString( |
| 732 | "4C 8D 05 XX XX XX XX " // lea r8, aNetworkfixedst ; "NetworkFixedStrings" |
| 733 | "BA 01 00 00 00 " // mov edx, 1 |
| 734 | "48 8B CF " // mov rcx, rdi |
| 735 | "FF 90 80 00 00 00 " // call qword ptr [rax+80h] |
| 736 | "48 8B 15 XX XX XX XX " // mov rdx, cs:qword_14297F520 |
| 737 | "48 8B 0D XX XX XX XX " // mov rcx, cs:eoc__gNetworkFixedStrings |
| 738 | "48 83 C2 28 " // add rdx, 28h |
| 739 | "E8 XX XX XX " // call eoc__NetworkFixedStrings__RegisterAll |
| 740 | ); |
| 741 | |
| 742 | p.Scan(moduleStart_, moduleSize_, [this](const uint8_t * match) { |
| 743 | auto nameAddr = AsmLeaToAbsoluteAddress(match); |
| 744 | if (strcmp((const char *)nameAddr, "NetworkFixedStrings") == 0) { |
| 745 | auto addr = AsmLeaToAbsoluteAddress(match + 28); |
| 746 | NetworkFixedStrings = (eoc::NetworkFixedStrings **)addr; |
| 747 | InitNetworkFixedStrings = (void *)AsmCallToAbsoluteAddress(match + 39); |
| 748 | } |
| 749 | }, false); |
| 750 | |
| 751 | if (NetworkFixedStrings == nullptr) { |
| 752 | Debug("LibraryManager::FindNetworkFixedStringsEoCApp(): Could not find eoc::NetworkFixedStrings"); |
| 753 | InitFailed = true; |
| 754 | } |
| 755 | } |
| 756 | |
| 757 | |
| 758 | void LibraryManager::FindErrorFuncsEoCApp() |
nothing calls this directly
no test coverage detected