HorseMenu icon indicating copy to clipboard operation
HorseMenu copied to clipboard

Fix fortitude's "nemesis" streaming crash

Open tyackman opened this issue 2 years ago • 12 comments

cout fortitude crash.log

tyackman avatar Nov 05 '23 02:11 tyackman

E8 ? ? ? ? 48 8B C8 48 8B F0 48 8B 10 FF 52 ? 48 8B CE add(1).rip() if (auto ptr = *(uint64_t*)(a1 + 0xC10); !ptr) return 0;

who-care123 avatar Nov 10 '23 05:11 who-care123

That should work, but I'd like to analyze their syncs and block it through the can apply data hook. I'm busy working on something else right now, but I'll get back to this project soon enough

maybegreat48 avatar Nov 10 '23 10:11 maybegreat48

added the sync logs cout fort.log

tyackman avatar Nov 11 '23 03:11 tyackman

That should work, but I'd like to analyze their syncs and block it through the can apply data hook. I'm busy working on something else right now, but I'll get back to this project soon enough

I just figured out what the crash is. RDR has also the invalid trailer attachment crash(trailer attached to a target not a vehicle). We can check it in CPhysicalAttachDataNode. But as I said in Yimmenu GTA, I think we also need to check sync or creation(object->GetGameObject) Btw, I think netObject + 0xB0 is GetGameObject

who-care123 avatar Nov 11 '23 04:11 who-care123

That should work, but I'd like to analyze their syncs and block it through the can apply data hook. I'm busy working on something else right now, but I'll get back to this project soon enough

I just figured out what the crash is. RDR has also the invalid trailer attachment crash(trailer attached to a target not a vehicle). We can check it in CPhysicalAttachDataNode. But as I said in Yimmenu GTA, I think we also need to check sync or creation(object->GetGameObject) Btw, I think netObject + 0xB0 is GetGameObject

Or maybe we can check the attached object type

who-care123 avatar Nov 11 '23 04:11 who-care123

you right getGameObject is at 0xB0. 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 41 54 41 55 41 56 41 57 48 83 EC 70 48 8B B9 ? ? ? ? here its the signature for the node. + the class class IDK_NODE{ public: char pad_0[0x10]; uint32_t m_unk; //0x10 char pad_14[0xC]; uint32_t m_unk1; //0x20 uint32_t m_unk2; //0x24 uint32_t m_unk3; //0x28

}; if someone know the name would be good for block this crash

elcapone25 avatar Dec 02 '23 00:12 elcapone25

you right getGameObject is at 0xB0. 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 41 54 41 55 41 56 41 57 48 83 EC 70 48 8B B9 ? ? ? ? here its the signature for the node. + the class class IDK_NODE{ public: char pad_0[0x10]; uint32_t m_unk; //0x10 char pad_14[0xC]; uint32_t m_unk1; //0x20 uint32_t m_unk2; //0x24 uint32_t m_unk3; //0x28

}; if someone know the name would be good for block this crash

The class is much larger than that. It's the vehicle gadget node btw.

SkiddyToast avatar Dec 02 '23 01:12 SkiddyToast

you right getGameObject is at 0xB0. 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 41 54 41 55 41 56 41 57 48 83 EC 70 48 8B B9 ? ? ? ? here its the signature for the node. + the class class IDK_NODE{ public: char pad_0[0x10]; uint32_t m_unk; //0x10 char pad_14[0xC]; uint32_t m_unk1; //0x20 uint32_t m_unk2; //0x24 uint32_t m_unk3; //0x28 }; if someone know the name would be good for block this crash

The class is much larger than that. It's the vehicle gadget node btw.

thanks for the information :)

elcapone25 avatar Dec 02 '23 01:12 elcapone25

This should be a sufficient class:

class CGadgetData
{
public:
  uint32_t m_type;
  uint8_t m_data[0xF3];
};
static_assert(sizeof(CGadgetData) == 0xF8);

class CVehicleGadgetNodeData
{
public:
  bool m_has_position;
  char pad_0001[15];
  float m_position[4];
  uint32_t m_num_gadgets;
  CGadgetData m_gadgets[2];
};
static_assert(sizeof(CVehicleGadgetNodeData) == 0x214); // Needs to be 0x220, prob from packing at 16.

SkiddyToast avatar Dec 02 '23 01:12 SkiddyToast

E8 ? ? ? ? 48 8B C8 48 8B F0 48 8B 10 FF 52 ? 48 8B CE add(1).rip()

if (auto ptr = *(uint64_t*)(a1 + 0xC10); !ptr) return 0;

This produces false positives + Game Crashes. I am not even sure this will block the crash.

Rxann avatar Jun 05 '24 15:06 Rxann

Fortnut crash may be fixed by #148. Needs further testing. EDIT: Game still eventually shits, though the trailer attachment protection seems to help some. 6-27-24 fort crash.log

tyackman avatar Jun 27 '24 21:06 tyackman

Nemesis crash seems to be ineffective after @Mr-X-GTA 's PR which allows the menu to not crash. I tested this and did not crash 2 times it was used on me. I will leave this issue open for a bit to see if anyone has any differing opinions on my conclusion.

Rxann avatar Jul 22 '24 01:07 Rxann