danielkrupinski / Osiris

Cross-platform game hack for Counter-Strike 2 with Panorama-based GUI.
MIT License
3.3k stars 960 forks source link

(+FIXED) CS:GO Crashes on the New Game Update as of 09/20/2019 + (New Offsets Change) #542

Closed VuBrian22 closed 4 years ago

VuBrian22 commented 4 years ago

Hopefully this gets fixed soon.....PS for anyone who wants to update it and make a pull request, you can find the new offsets here: https://github.com/frk1/hazedumper/ EDIT: The new offsets do not work. You have to change the signature in Memory.cpp. Credit to deprae and wolf2000.

wolf2000: (FIX)

+++ b/Osiris/SDK/Entity.h @@ -103,7 +103,7 @@ public: constexpr Vector getEyePosition() noexcept { Vector vec{ };

@@ -142,7 +142,7 @@ public:

 constexpr bool isWeapon() noexcept
 {

deprae:

"The problem is that VALVE updated client_panorama.dll which in turn broke all the signatures. You either reverse the stuff needed and find the signatures urself or wait for daniel to do it. To find out what you have to update just debug and crash and update the signatures needed. Chances are most of signatures are broken.

Signatures = / = Offsets.

Signatures = More update proof. You basically make a signature out of HEX data. Offsets = Updated on each game update, a pain in the fucking ass."

deprale commented 4 years ago

Can confirm.

LuanGraa commented 4 years ago

### Every cheat is crashing rn because valve changed the offsets.

VuBrian22 commented 4 years ago

### Every cheat is crashing rn because valve changed the offsets.

Yeah I know that. I just opened this issue because it acts as a "red flag" for anyone who wants to update the offsets. I could do it myself and make a pull request, however I have 3 exams tomorrow.

LuanGraa commented 4 years ago

No problem bud, i would fix it if i knew how to but i am just a dirty paster.

deprale commented 4 years ago

https://i.imgur.com/1iCNm3q.png DEBUG P.S new offsets are useless from hazedumper as this cheat uses interfaces... You can find the signatures in Memory.cpp

LuanGraa commented 4 years ago

Excuse my ignorance but what is exactly the problem then?

VuBrian22 commented 4 years ago

Excuse my ignorance but what is exactly the problem then?

Basically to make it work again, you have to change the signatures in Memory.cpp instead of using the offsets from hazedumper because the cheat uses interfaces. And the dumped offsets will not work with this cheat.

deprale commented 4 years ago

The problem is that VALVE updated client_panorama.dll which in turn broke all the signatures. You either reverse the stuff needed and find the signatures urself or wait for daniel to do it. To find out what you have to update just debug and crash and update the signatures needed. Chances are most of signatures are broken.

Signatures = / = Offsets.

Signatures = More update proof. You basically make a signature out of HEX data. Offsets = Updated on each game update, a pain in the fucking ass. They are basically pointers to the data you need. All that's needed to fuck this offset over is even 1 byte of data introduced in a update. Unless in client_panorama.dll the data is added on the top of the source code and it's recompiled for an update, then there would be no need at all to change the signatures. Most of the time it would be fine as well since the signature may still be working, not always though.

LuanGraa commented 4 years ago

Ah ok i see thanks, i will wait for the homeboy daniel then because i cant use WinHEX for shit.

deprale commented 4 years ago

@danielkrupinski and everyone else in this thread Some good news from this update <3 https://i.imgur.com/PST7Evd.png You know what this means? Basically CS:GO devs made us a free grenade trajectory LUL. Cast a nullptr to that biiih, free grenade trajectory LULw. EASY!

LuanGraa commented 4 years ago

Oh so no math needed anymore?, sick

VuBrian22 commented 4 years ago

@danielkrupinski and everyone else in this thread Some good news from this update <3 https://i.imgur.com/PST7Evd.png You know what this means? Basically CS:GO devs made us a free grenade trajectory LUL. Cast a nullptr to that biiih, free grenade trajectory LULw. EASY!

OML Here comes the opportunity to exploit the feature. Lmao.

deprale commented 4 years ago

Best part is that this shit can be done in like 2 lines total minus the void statement and the if config statement LULw

LuanGraa commented 4 years ago

Another ignorant comment here, would it be able to set this variable to true using FindVar and set Value?

deprale commented 4 years ago

@LuanGraa https://i.imgur.com/z353Uya.png see last 3 lines for example.

LuanGraa commented 4 years ago

Ah ok thanks for the info

mdilai commented 4 years ago

So much offtop and nobody post a fix...

+++ b/Osiris/SDK/Entity.h
@@ -103,7 +103,7 @@ public:
     constexpr Vector getEyePosition() noexcept
     {
         Vector vec{ };
-        callVirtualMethod<void, Vector&>(this, 281, vec);
+        callVirtualMethod<void, Vector&>(this, 282, vec);
         return vec;
     }

@@ -142,7 +142,7 @@ public:

     constexpr bool isWeapon() noexcept
     {
-        return callVirtualMethod<bool>(this, 163);
+        return callVirtualMethod<bool>(this, 164);
     }

     constexpr ClientClass* getClientClass() noexcept
@@ -152,32 +152,32 @@ public:

     constexpr bool isAlive() noexcept
     {
-        return callVirtualMethod<bool>(this, 153) && health() > 0;
+        return callVirtualMethod<bool>(this, 154) && health() > 0;
     }

     constexpr bool isPlayer() noexcept
     {
-        return callVirtualMethod<bool>(this, 155);
+        return callVirtualMethod<bool>(this, 156);
     }

     constexpr Entity* getActiveWeapon() noexcept
     {
-        return callVirtualMethod<Entity*>(this, 265);
+        return callVirtualMethod<Entity*>(this, 266);
     }

     constexpr int getWeaponSubType() noexcept
     {
-        return callVirtualMethod<int>(this, 277);
+        return callVirtualMethod<int>(this, 278);
     }

     constexpr WeaponData* getWeaponData() noexcept
     {
-        return callVirtualMethod<WeaponData*>(this, 454);
+        return callVirtualMethod<WeaponData*>(this, 455);
     }

     constexpr float getInaccuracy() noexcept
     {
-        return callVirtualMethod<float>(this, 476);
+        return callVirtualMethod<float>(this, 477);
     }

     VarMap* getVarMap() noexcept
@@ -215,7 +215,7 @@ public:

     constexpr Entity* getObserverTarget() noexcept
     {
-        return callVirtualMethod<Entity*>(this, 291);
+        return callVirtualMethod<Entity*>(this, 292);
     }

     bool isInReload() noexcept
deprale commented 4 years ago

@mdilai thx for fix, mind explaining how you figured out?

share some knowledge lul

LuanGraa commented 4 years ago

thanks dude real good shit.

mdilai commented 4 years ago

@mdilai thx for fix, mind explaining how you figured out?

share some knowledge lul

I went on https://www.unknowncheats.me/forum/counterstrike-global-offensive/103220-counterstrike-global-offensive-reversal-structs-offsets.html and read the last two pages where found most of new offsets. Quickly figured that offsets just incremented by 1 so I've incremented all offsets except of getAbsOrigin() and setModelIndex() coz backtrack and skinchanger looks still working and i made assumption that some new function (which shifted all other functions right) probably added after "setModelIndex()"

VuBrian22 commented 4 years ago

@mdilai thx for fix, mind explaining how you figured out? share some knowledge lul

I went on https://www.unknowncheats.me/forum/counterstrike-global-offensive/103220-counterstrike-global-offensive-reversal-structs-offsets.html and read the last two pages where found most of new offsets. Quickly figured that offsets just incremented by 1 so I've incremented all offsets except of getAbsOrigin() and setModelIndex() coz backtrack and skinchanger looks still working and i made assumption that some new function (which shifted all other functions right) probably added after "setModelIndex()"

To make things easier, would you mind making a pull request after you test it?

LuanGraa commented 4 years ago

shieeeet just got vac authentication error.

mdilai commented 4 years ago

shieeeet just got vac authentication error.

Oops, sorry dude if this is my fault. Are you used skinchanger? If yes, probably setModelIndex() is incremented too because it is the only function which change something, rest are just read values from client.

Update: nope, just checked, increment of setModelIndex() offset crash the game, so it's definitely not changed.

Update 2: just a vac authentication error? Ooh, you scared me :). It's not an error at all, just restart your PC

EJianZQ commented 4 years ago

@danielkrupinski

LuanGraa commented 4 years ago

Nah it was my fucking injector, sorry to worry you guys the cheat is probably fine

VuBrian22 commented 4 years ago

This works now lol!

0xE232FE commented 4 years ago

VTable Index vs Offsets who will ever win this fight in this Issue Thread. Guys this is so funny that no one knows what all are talking about. Just learn coding before posting bullshit here. Many in this thread don't even know what an offset is and copy & paste things from hazedump... Guys please try to learn about Offsets and look into the solution what is VTable Index. So you have two phrases where you can start digging and learn. Offsets and VTable Index search for it you will get illumniated fast!

VuBrian22 commented 4 years ago

VTable Index vs Offsets who will ever win this fight in this Issue Thread. Guys this is so funny that no one knows what all are talking about. Just learn coding before posting bullshit here. Many in this thread don't even know what an offset is and copy & paste things from hazedump... Guys please try to learn about Offsets and look into the solution what is VTable Index. So you have two phrases where you can start digging and learn. Offsets and VTable Index search for it you will get illumniated fast!

That is what Github is for. This is a learning experience for all of us. We learn together.

wolff20000 commented 4 years ago

So much offtop and nobody post a fix...

+++ b/Osiris/SDK/Entity.h
@@ -103,7 +103,7 @@ public:
     constexpr Vector getEyePosition() noexcept
     {
         Vector vec{ };
-        callVirtualMethod<void, Vector&>(this, 281, vec);
+        callVirtualMethod<void, Vector&>(this, 282, vec);
         return vec;
     }

@@ -142,7 +142,7 @@ public:

     constexpr bool isWeapon() noexcept
     {
-        return callVirtualMethod<bool>(this, 163);
+        return callVirtualMethod<bool>(this, 164);
     }

     constexpr ClientClass* getClientClass() noexcept
@@ -152,32 +152,32 @@ public:

     constexpr bool isAlive() noexcept
     {
-        return callVirtualMethod<bool>(this, 153) && health() > 0;
+        return callVirtualMethod<bool>(this, 154) && health() > 0;
     }

     constexpr bool isPlayer() noexcept
     {
-        return callVirtualMethod<bool>(this, 155);
+        return callVirtualMethod<bool>(this, 156);
     }

     constexpr Entity* getActiveWeapon() noexcept
     {
-        return callVirtualMethod<Entity*>(this, 265);
+        return callVirtualMethod<Entity*>(this, 266);
     }

     constexpr int getWeaponSubType() noexcept
     {
-        return callVirtualMethod<int>(this, 277);
+        return callVirtualMethod<int>(this, 278);
     }

     constexpr WeaponData* getWeaponData() noexcept
     {
-        return callVirtualMethod<WeaponData*>(this, 454);
+        return callVirtualMethod<WeaponData*>(this, 455);
     }

     constexpr float getInaccuracy() noexcept
     {
-        return callVirtualMethod<float>(this, 476);
+        return callVirtualMethod<float>(this, 477);
     }

     VarMap* getVarMap() noexcept
@@ -215,7 +215,7 @@ public:

     constexpr Entity* getObserverTarget() noexcept
     {
-        return callVirtualMethod<Entity*>(this, 291);
+        return callVirtualMethod<Entity*>(this, 292);
     }

     bool isInReload() noexcept

how i can edit the dll for fix it?

0xE232FE commented 4 years ago

@wolff20000 edit this file Osiris/SDK/Entity.h and recompile! Or just wait for a pull request. I use signatures to find the vTable Indexes. I have an Ida Pro script to get the vtables from csgo. So its working since 2006, so nothing changed much in Source Engine...

noteffex commented 4 years ago

image hmm idk why its crashing here 🤔

noteffex commented 4 years ago

image

VuBrian22 commented 4 years ago

@effex1337 why are you changing hooks.cpp? And the code couldn't compile because you just put all the code you had screenshot ed in C++ comments?

noteffex commented 4 years ago

OMG! i commented it cause it crashed there my osiris src has 2x more stuff why are you changing hooks.cpp? cause it crashed there?, cause added new hooks? and i already fixed

mdilai commented 4 years ago

Who the hell is wolf2000 and why my poorly pasted solution from https://github.com/danielkrupinski/Osiris/issues/542#issuecomment-533390664 credited to him?

wolff20000 commented 4 years ago

I don’t know why too, maybe they quote wrong, they gonna fix it.

mdilai commented 4 years ago

No problem, dude. I just spent few hours this night to figure this out and share it with community, so get a bit frustrated when I saw that my work was appropriated. By the way, i've played about 6 hours after fix and did not get any crash at all, so i really doubt that we need to change any signature in Memory.cpp. And hazedumper completely useless in this case, it dumps pointer offsets but we need vtable indexes for Osiris (and generally it mostly for external cheats). So opening post is absolutely incorrect.

1-Xycro commented 4 years ago

How do i solve this problem? I dont know how to compile stuff or something Nd do i have to wait? And for how long?