The Dungeon of Naheulbeuk (GoG)
Posted: Fri Apr 28, 2023 12:49 am
Features:
unlimited attribute points
unlimited skill points
999.999g
900.000 XP at the current level = lvl up after each fight
Bandages and Potions do not decrease when used to heal after fight
update: now randomia-Bar is always full
Updating the table for newer/different versions of the game
Usually I try to use AOBScans, hoping that my cheats survive updates of the game. In this case, the binary code changes with every new build, because the compiler seems to use random registers for the operations. So the game does still the same thing, but the opcodes are of course different.
So, how do we adjust a script from the cheat table to a new version? Luckily, it’s not really difficult, only annoying
1. In the Cheat Engine main window, go to “Mono” in the menu and click on “activate mono”
2. Open the script you want to adjust
3. Scroll down to the blue commentary-section at the bottom of the script.
4. In the second line on the commentary, you will find the name of the code we want to change. In our case, it’s InventoryList.Init+29b
5. Copy this address to the clipboard
6. In the code of the commentary, there are some lines marked with “injecting here”. Remember those lines, escpecially the offsets.
7. Go back to the Cheat Engine main window and press Ctrl-D to invoke the disassembler
8. In the Disassembler, press Ctrl-G to go to a specific code location, use Ctrl-V to insert our address
9. In the code section, scroll down slowly and search for the same/similar instructions.
For example,in the old cheat we have:
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+169ACCB: 8B 70 50 - mov esi,[rax+50]
"GameAssembly.dll"+169ACCE: 33 C9 - xor ecx,ecx
// ---------- DONE INJECTING ----------
Now, looking into current programs code, we find:
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+1A7F572: 8B 58 50 - mov ebx,[rax+50]
"GameAssembly.dll"+1A7F575: 33 C9 - xor ecx,ecx
// ---------- DONE INJECTING ----------
Guess what: we've found it!
10. If you have found the right code, mark the first line of it, then invoke AutoAssembler and in there “Template – Full injection”.
11. Now move the old script window and our just-created script window next to each other. Take a look at the old script and what it does to do the cheat. Copy that line(s) to the new script, adjust the commands if necessary. (Until now, I only had do copy the line(s).)
12. For further reference, I’d suggest to update the address of the code in the commentary section –in our case from "InventoryList.Init+29b"
to "InventoryList.Init+302"
13. Press Ctrl-A, Ctrl-C to copy the whole new cheat script into the clipboard
14. Close the window of the new script, insert the copied code into the old script-window
15. Press ok and check if it works
have fun,
unlimited attribute points
unlimited skill points
999.999g
900.000 XP at the current level = lvl up after each fight
Bandages and Potions do not decrease when used to heal after fight
update: now randomia-Bar is always full
Updating the table for newer/different versions of the game
Usually I try to use AOBScans, hoping that my cheats survive updates of the game. In this case, the binary code changes with every new build, because the compiler seems to use random registers for the operations. So the game does still the same thing, but the opcodes are of course different.
So, how do we adjust a script from the cheat table to a new version? Luckily, it’s not really difficult, only annoying
1. In the Cheat Engine main window, go to “Mono” in the menu and click on “activate mono”
2. Open the script you want to adjust
3. Scroll down to the blue commentary-section at the bottom of the script.
4. In the second line on the commentary, you will find the name of the code we want to change. In our case, it’s InventoryList.Init+29b
5. Copy this address to the clipboard
6. In the code of the commentary, there are some lines marked with “injecting here”. Remember those lines, escpecially the offsets.
7. Go back to the Cheat Engine main window and press Ctrl-D to invoke the disassembler
8. In the Disassembler, press Ctrl-G to go to a specific code location, use Ctrl-V to insert our address
9. In the code section, scroll down slowly and search for the same/similar instructions.
For example,in the old cheat we have:
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+169ACCB: 8B 70 50 - mov esi,[rax+50]
"GameAssembly.dll"+169ACCE: 33 C9 - xor ecx,ecx
// ---------- DONE INJECTING ----------
Now, looking into current programs code, we find:
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+1A7F572: 8B 58 50 - mov ebx,[rax+50]
"GameAssembly.dll"+1A7F575: 33 C9 - xor ecx,ecx
// ---------- DONE INJECTING ----------
Guess what: we've found it!
10. If you have found the right code, mark the first line of it, then invoke AutoAssembler and in there “Template – Full injection”.
11. Now move the old script window and our just-created script window next to each other. Take a look at the old script and what it does to do the cheat. Copy that line(s) to the new script, adjust the commands if necessary. (Until now, I only had do copy the line(s).)
12. For further reference, I’d suggest to update the address of the code in the commentary section –in our case from "InventoryList.Init+29b"
to "InventoryList.Init+302"
13. Press Ctrl-A, Ctrl-C to copy the whole new cheat script into the clipboard
14. Close the window of the new script, insert the copied code into the old script-window
15. Press ok and check if it works
have fun,