As someone who has been reverse engineering since the 90s, I think this tutorial is okay for beginners, but I strongly advise against modifying assemblies physically using methods like hex editing or DnSpy. Not only does it increase risks to anti-cheat detection, but you'll also lose lots of progress when the game updates. A much safer and more effective approach is to create a .NET project that serves as a loader, utilizing HarmonyPatch and reflection to inject patches. This way, you can avoid detection by checksums on physical hard drives at least. Plus, having a repo for modifications allows for easy updating the source code if the game changes in the future.
@@Plagueheart there is a challenge associated with this binary that isnbest done with harmony, though, so that's probably when that will be introduced.
@@nordgaren2358 Yes, you are right about it being too much but still i did say it was okay for beginner level, but it could of atleast acknowledged for the end-user on bad practices and how this method is the wrong way of doing because of explained pitfalls
I tried to do something similar with a single-player racing game by using ILSpy. I didn't even want to cheat, the game is pretty good but is a beta version and has many annoying things like hard coded keys so I wanted to fix a few things (ex. shifting gears with , and .) I don't have enough knowledge for injecting code so I used ILSpy and when I try to compile the reversed code I get one very annoying compiling error and I don't know how to fix it. I'll take a look at HarmonyPatch, seems very interresting.
For the apple/fish, I would have tried changing an apple object into a fish object, by looking for the definitions of objects and how they are placed. Your method is much simpler. The ability to place any object anywhere, could have more 'fun' potential instead of just being a simple cheat. The 'you should play basketball' on the first flag seems to indicate the original authors envisioned people modifying the 'jump' to go much higher than usual.
I would highly suggest not to rely on the C# editor when editing .NET binaries. ILSpy's engine is great, but decompilation remains an imperfect process. In this case you were lucky the decompiler produced 100% correct syntax and semantically equivalent code. This is not generalizable however for larger, more complex methods, especially for binaries with obfuscation applied. Better is to get familiar with CIL, the underlying bytecode of .NET, and edit methods that way. Not only does this prevent incorrect decompiler artifacts, you will also lay a good foundation on making tools that solely operate on this bytecode, which **will** be required for more complicated cases (e.g., for deobfuscation).
Hey Washi! We aren't really staying on .net for long, anyways. This is just the first game in the defcon challenge. I still think these tools can be good for a first pass, but it's not like Ghidra where I can also see the assembly that the de-compiler is basing it's pseudo code on, which is a bummer. I had a few times during this challenge where I would have much rather been able to look at actual instructions, rather than trusting dnspy, but, he hasn't gotten to those levels, yet.
@@nordgaren2358 dnSpy has an IL Editor, and IL view option that can view/edit the raw CIL bytecode. Washi is referring to the C# Editor used here (9:28 for example). ILSpy also has an IL view option, but no editing capability.
This is what got me reinterested in programming and cybersecurity. I downloaded a game mod, realised it was just replacing one file with another similarly sized one, and thought it must just be a slightly modified version of the original, which must be decompileable. So I went looking for a DLL decompiler, found DnSpy, and was surprised to find an extra module called "Discord" floating around 😅 Glad I didn't run the original mod and just found the parts I wanted to change in the original DLL, my Discord token is safe for another day.
I would love seeing this, and then do a comparison between this and say unreal engine. What differs. Can you use the same methods as shown here? Great video!
Childish stuff for beginners. Unity games with Mono backend kinda rare this days. Usually I am facing il2cpp and hooking it using Frida. So maybe John will teach us this method in next video 🤔
I love how I used cheat engine looking like Harry Potter giving himself a wedgie to fly across the hole and not know which file to modify with dnspy, thx for the vid XD
My first thought would have been to increase jumpheight. Also the "you should play basketball" makes me think that was their solution. But yea doesnt matter how you hack the system if you get the same result :p
Cheaters/Hackers ruin gaming, as educational this is its more damaging than anything else. Edit: i take it back it might make more good than bad after some good explanation below in this comments comments.
People understanding reverse engineering is more important for society than games having cheaters. I think the intention is that reversing games is a great way to attract smart people towards these kinds of skills more broadly.
It also lets (beginner) game devs understand how a cheater/hacker might go about breaking their game, so I'd argue the educational benefits outweigh the potential damage.
I cannot disagree more on that topic I think, things like this, is the reason why modding in games exists, and the modding community can be really huge for a game And it can even keep some games alive because its servers are done and the publisher no longer cares about it
As someone who has been reverse engineering since the 90s, I think this tutorial is okay for beginners, but I strongly advise against modifying assemblies physically using methods like hex editing or DnSpy. Not only does it increase risks to anti-cheat detection, but you'll also lose lots of progress when the game updates.
A much safer and more effective approach is to create a .NET project that serves as a loader, utilizing HarmonyPatch and reflection to inject patches. This way, you can avoid detection by checksums on physical hard drives at least. Plus, having a repo for modifications allows for easy updating the source code if the game changes in the future.
@@Plagueheart this is way too much to start with. The point of this game is to teach beginners.
@@Plagueheart there is a challenge associated with this binary that isnbest done with harmony, though, so that's probably when that will be introduced.
Would this still apply to offline, single player only games? That's what I'd be interested in.
@@nordgaren2358 Yes, you are right about it being too much but still i did say it was okay for beginner level, but it could of atleast acknowledged for the end-user on bad practices and how this method is the wrong way of doing because of explained pitfalls
I tried to do something similar with a single-player racing game by using ILSpy. I didn't even want to cheat, the game is pretty good but is a beta version and has many annoying things like hard coded keys so I wanted to fix a few things (ex. shifting gears with , and .) I don't have enough knowledge for injecting code so I used ILSpy and when I try to compile the reversed code I get one very annoying compiling error and I don't know how to fix it. I'll take a look at HarmonyPatch, seems very interresting.
Hopefully this series expands to a game compiled with il2cpp instead of mono. Mono modding is super easy, but il2cpp is a huge pain.
i really wanna see this too
For the apple/fish, I would have tried changing an apple object into a fish object, by looking for the definitions of objects and how they are placed. Your method is much simpler. The ability to place any object anywhere, could have more 'fun' potential instead of just being a simple cheat.
The 'you should play basketball' on the first flag seems to indicate the original authors envisioned people modifying the 'jump' to go much higher than usual.
🤓🤔🤔🤔🤔😐😑😐😑🤔🙂🙂6 0:48 0:48 0:48 0:48 0:48 😅😅😊😅😮 0:48 0:48
Finally waiting for this topic i used this in mobile. Games its so fun changing models inside the. Game
I would highly suggest not to rely on the C# editor when editing .NET binaries. ILSpy's engine is great, but decompilation remains an imperfect process. In this case you were lucky the decompiler produced 100% correct syntax and semantically equivalent code. This is not generalizable however for larger, more complex methods, especially for binaries with obfuscation applied.
Better is to get familiar with CIL, the underlying bytecode of .NET, and edit methods that way. Not only does this prevent incorrect decompiler artifacts, you will also lay a good foundation on making tools that solely operate on this bytecode, which **will** be required for more complicated cases (e.g., for deobfuscation).
Hey Washi!
We aren't really staying on .net for long, anyways. This is just the first game in the defcon challenge. I still think these tools can be good for a first pass, but it's not like Ghidra where I can also see the assembly that the de-compiler is basing it's pseudo code on, which is a bummer. I had a few times during this challenge where I would have much rather been able to look at actual instructions, rather than trusting dnspy, but, he hasn't gotten to those levels, yet.
@@nordgaren2358 dnSpy has an IL Editor, and IL view option that can view/edit the raw CIL bytecode. Washi is referring to the C# Editor used here (9:28 for example). ILSpy also has an IL view option, but no editing capability.
This is what got me reinterested in programming and cybersecurity. I downloaded a game mod, realised it was just replacing one file with another similarly sized one, and thought it must just be a slightly modified version of the original, which must be decompileable. So I went looking for a DLL decompiler, found DnSpy, and was surprised to find an extra module called "Discord" floating around 😅 Glad I didn't run the original mod and just found the parts I wanted to change in the original DLL, my Discord token is safe for another day.
with what game did u experience this, please? I'm trying to think of examples to study later
I would love seeing this, and then do a comparison between this and say unreal engine. What differs. Can you use the same methods as shown here?
Great video!
You Getting Better
Keep Going.
I'm enjoying this series, keep em coming!
Love this, pls keep it coming.
I've tried this method with actual released games but never got the { } so I guess it doesn't work with IL2CPP games, right?
Perpetual POGGERS 😮❤
Childish stuff for beginners. Unity games with Mono backend kinda rare this days. Usually I am facing il2cpp and hooking it using Frida. So maybe John will teach us this method in next video 🤔
1:33 A platypus?
You sir is amazing
This looks like so much fun!!! Can anyone do this? I did not know this was a thing!
Irving Knoll
Dnspy my beloved
I love how I used cheat engine looking like Harry Potter giving himself a wedgie to fly across the hole and not know which file to modify with dnspy, thx for the vid XD
what about unreal engine games
Wassup dr John Hammond
Christine Unions
hows the park bro
My first thought would have been to increase jumpheight. Also the "you should play basketball" makes me think that was their solution. But yea doesnt matter how you hack the system if you get the same result :p
hahahaahhaaha now i repeat this in cs2.
I know this is a troll. But DNSpy typically only works with C#. This isn't the case for CS2.
Plus they won't have a file that is basically called "modify for hacks"
🤦♂️
CS2 is made in the Source 2 engine, not the Unity engine. And it’s made with C++.
I've never been this early
I ended up learning all of Unity just to change values in hentai games, ong 😭😭
Nice
1st before it goes viral
Interesting.
Let's hack (or crack) denuvo DRM🤩
Not first
john u dont need to act as the authority in categories you barely know of
:-)
meow
im so early bro
I'm glad to hear, bro.
I thought cheat engine was deemed unsafe beyond 7.2? Between adwares in the installer and the weird antics of the dev in the code itself.
What is the point of the "-modified" file?.. Just keep patching the original file avoiding this redundancy.
If the game updates it can erase all your work.
Then save it *after* you done with it, not each of your 99 iterations.
I love dnSpyEx so very much.
Copyright
desktop icons not large enough, pass
Cheaters/Hackers ruin gaming, as educational this is its more damaging than anything else.
Edit: i take it back it might make more good than bad after some good explanation below in this comments comments.
Salty people like you ruined the internet
People understanding reverse engineering is more important for society than games having cheaters. I think the intention is that reversing games is a great way to attract smart people towards these kinds of skills more broadly.
It also lets (beginner) game devs understand how a cheater/hacker might go about breaking their game, so I'd argue the educational benefits outweigh the potential damage.
I cannot disagree more on that topic
I think, things like this, is the reason why modding in games exists, and the modding community can be really huge for a game
And it can even keep some games alive because its servers are done and the publisher no longer cares about it
The cheaters/hackers are light years beyond this already, so don't worry.
44119 Emmanuel Key