diff --git a/Starfield/dllmain.cpp b/Starfield/dllmain.cpp index de58306..5ffb615 100644 --- a/Starfield/dllmain.cpp +++ b/Starfield/dllmain.cpp @@ -63,6 +63,11 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled) if (!DialogFOVAddress) { constexpr auto DialogFOVPattern = make_obfuscated<0x4A>("E9 ?? ?? ?? ?? 49 ?? ?? E8 ?? ?? ?? ?? 84 ?? 0F 84 ?? ?? ?? ?? 48 8B ?? ?? ?? ?? ?? 48 89"); DialogFOVAddress = Memory::aob_scan(gameExecutable, DialogFOVPattern.decrypt(), PAGE_EXECUTE_READ); + //Starfield.exe + BBA13E - A8 01 - test al, 01 + //Starfield.exe + BBA140 - 74 0D - je Starfield.exe + BBA14F + //Starfield.exe + BBA142 - C5 FA 10 35 FE 15 23 05 - vmovss xmm6, [Starfield.exe + 5DEB748] + //Starfield.exe + BBA14A - E9 01 01 00 00 - jmp Starfield.exe + BBA250 + //Starfield.exe + BBA14F - 49 8B CF - mov rcx, r15 if (DialogFOVAddress) { logger->info("Dialog FOV signature found at address: 0x{:X}.", reinterpret_cast(DialogFOVAddress)); @@ -72,6 +77,11 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled) if (!WeaponFOVAddress) { constexpr auto WeaponFOVPattern = make_obfuscated<0x4A>("C5 FA ?? ?? ?? ?? ?? ?? 80 3D ?? ?? ?? ?? ?? 48 8B ?? ?? ?? ?? ?? 74"); WeaponFOVAddress = Memory::aob_scan(gameExecutable, WeaponFOVPattern.decrypt(), PAGE_EXECUTE_READ); + //Starfield.exe + 12D9F27 - C5 F8 28 C2 - vmovaps xmm0, xmm2 + //Starfield.exe + 12D9F2B - 48 8B 05 5E C4 BD 04 - mov rax, [Starfield.exe + 5EB6390] + //Starfield.exe + 12D9F32 - C5 FA 11 80 E0 02 00 00 - vmovss[rax + 000002E0], xmm0 + //Starfield.exe + 12D9F3A - 80 3D EB A0 AD 04 00 - cmp byte ptr[Starfield.exe + 5DB402C], 00 + //Starfield.exe + 12D9F41 - 48 8B 05 10 32 BB 04 - mov rax, [Starfield.exe + 5E8D158] if (WeaponFOVAddress) { logger->info("Weapon FOV signature found at address: 0x{:X}.", reinterpret_cast(WeaponFOVAddress)); @@ -81,6 +91,11 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled) if (!HUDAddress) { constexpr auto HUDPattern = make_obfuscated<0x4A>("C4 61 ?? ?? ?? ?? ?? ?? ?? C4 61 ?? ?? ?? ?? ?? ?? ?? 45 ?? ?? 74"); HUDAddress = Memory::aob_scan(gameExecutable, HUDPattern.decrypt(), PAGE_EXECUTE_READ); + //Starfield.exe + 24D6D3B - C4 61 FA 2C 05 3C 28 38 03 - vcvttss2si r8, [Starfield.exe + 5859580] + //Starfield.exe + 24D6D44 - C4 61 FA 2C 0D 13 28 38 03 - vcvttss2si r9, [Starfield.exe + 5859560] + //Starfield.exe + 24D6D4D - 45 84 DB - test r11b, r11b + //Starfield.exe + 24D6D50 - 74 15 - je Starfield.exe + 24D6D67 + //Starfield.exe + 24D6D52 - 8B 42 38 - mov eax, [rdx + 38] if (HUDAddress) { logger->info("HUD safe zone signature found at address: 0x{:X}.", reinterpret_cast(HUDAddress)); @@ -91,6 +106,11 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled) if (!PhotomodeAddress) { constexpr auto PhotomodePattern = make_obfuscated<0x4A>("74 ?? 0F BA ?? ?? 89 87 ?? ?? ?? ?? C6 87 ?? ?? ?? ?? ?? E8"); PhotomodeAddress = Memory::aob_scan(gameExecutable, PhotomodePattern.decrypt(), PAGE_EXECUTE_READ); + //Starfield.exe + 159D76C - C6 87 D2 00 00 00 01 - mov byte ptr[rdi + 000000D2], 01 + //Starfield.exe + 159D773 - 40 38 35 96 1F 87 04 - cmp[Starfield.exe + 5E0F710], sil + //Starfield.exe + 159D77A - 74 11 - je Starfield.exe + 159D78D + //Starfield.exe + 159D77C - 0F BA E8 1B - bts eax, 1B + //Starfield.exe + 159D780 - 89 87 C0 00 00 00 - mov[rdi + 000000C0], eax if (PhotomodeAddress) { logger->info("Photo mode signature found at address: 0x{:X}.", reinterpret_cast(PhotomodeAddress));