Project Igi Cheats For Unlimited Health And Ammo Download For Pc

0 views
Skip to first unread message

Cora Hickel

unread,
Aug 4, 2024, 4:20:48 PM8/4/24
to denrerena
Theoriginal Doom game was released in 1993, built for OSs a little different to what we have today. The chocolate-doom project exists and aims to be as historically correct as possible while still working on modern operating systems. Perfect nostalgia. We downloaded chocolate-doom for Windows from here, extracted and sourced a shareware WAD to use.

We also set some rules for our project. The chocolate-doom source code is available, however, we did not want to reference it at all. Once extracted, chocolate-doom.exe was a stripped PE32 executable. This meant that reverse engineering efforts would be a little harder, but that was part of the challenge and learnings we wanted. Using tools such as IDA Freeware, CheatEngine and WindDBG was considered fair game though. However, any patches or binary modifications had to be implemented using Frida, and not by manually patching chocolate-doom.exe.


The third match we had saw writes only when the handgun was fired. The instruction was a subtraction by one and therefore likely the instruction to decrease the ammo count we are interested in. CheatEngine allows you to disassemble code around the identified instruction. Using this, we had the location of the instruction responsible for decreasing the ammo count when the handgun was shot at 0x0430A2c.


Next was to check where the instruction pointer was and to view the instructions surrounding it to see if we could spot the exact instruction that subtracts one from the ammo value each time a shot is fired.


As you can see, there is a sub instruction just before where the instruction pointer is currently sitting. To search for the exact instruction in IDA, we viewed the hex value of the instruction in gdb.


Because the below values are little endian, we searched for the opcodes 83 ac 83 a8 in IDA and had the offset location of the instruction responsible for decreasing the ammo count when the handgun was shot, i.e. 0x49F28.


Given that we know which instructions were writing to memory regions that contained the ammo value for our handgun, we used IDA to analyse the function around the instruction to find the entry point for it. This way we would know which memory address to use with the Interceptor.


We figured we would start by writing a simple patch that just replaces the instruction to decrement the ammo count by 1 with NOP instructions. Frida has a Code writer module that can help with this. The original decrement instruction was sub dword ptr [ebx+edx*4+0A4h], 1 which is represented as 8 opcodes when viewed in hex.


This patch was a little more generic and did not require any hardcoded offsets to work. Depending on what you are working with, a better search may be to use some of the wildcarding features of Memory.scanSync() so that you can have much more specific matches.


We focussed on the function this reference was in and realised that it was an incredibly long function. In fact, it appeared as though all of the cheats were processed by this single function, with a bunch of branches for each cheat. Code paths could be seen in the IDA graph view and gave us a reasonable idea of its complexity.


All of the different cheats branches also made a call to a function that lived at 0x040FE90. This function took two arguments, one being a character array and another an integer and appeared to be comparing a character to a string.


We decided to have a look at the invocation of this cheat comparison function (henceforth called cheat_compare) at runtime, dumping the arguments it receives. Just like we have previously used the Frida Interceptor to attach to a function, we simply calculate the offset for cheat_compare and log the arguments it receives. This will also give us an opportunity to try and discover how to trigger this function in game.


The two arguments cheat_compare was receiving was enough for us to start building our own implementation. In fact, receiving the keycodes entered was all we needed. We could have gone and tried to patch the original routine to match some new strings and trigger our patches, but instead we chose an easier way out. We can read the keycodes that cheat_compare received, perform some tests for our cheats and then let the original function continue as normal.


Next, we attached to cheat_compare and fired this new getCheatFromBufWithChar() to get the buffer of characters that were entered thus far. If a buffer ended with one of our strings, we fired the relevant patch to activate the cheat! To optimise the routine a little, we exited early if the entered keycode was not in the ASCII printable range.


The result of this script meant that any unique ascii characters that were read would be compared to toggle the status of a cheat. This also meant that we had to write smaller routines that would undo the patches we wrote, but those were relatively easy as we already knew the offsets and original opcodes.


Item Spawner - Integrates my CrucibleUI mod, a work in progress item spawner. It grabs its item definitions from the game's script manager, so it's automatically compatible with mods such as Hydrocraft!


Refactored ISUICheatMenu, mod now works with Debug Mode enabled & should solve issues with large mods.

Replaced Teleport & GPS with the Teleport Menu, which has POIs for every vanilla map & a (theoretically) infinite number of custom teleport locations.

Infinite Carryweight now persists.

Added a proper colour slider to vehicle options, should make changing colour a lot more intuitive.

Clarified how to use the Vehicle Selection tool.

Vehicle Selection Tool now notifies you upon successfully selecting a vehicle.

Rewrote Delete Mode.

Made Terraform Mode separate from Delete Mode.

Rearranged the Cheat Menu.

Fixed Cheat Menu not showing up in co-op servers. Will now show up for hosts & admins.

Fixed Instant Actions not working on Build 39.

Fixed zombies spawning naked.


Restored God Mode to the way it worked pre 2.8.

God Mode now disables the Zombie Dragdown Instakill sandbox option when enabled.

Fixed Instant Actions not applying to certain inventory transfers

Fixed No Boredom

Modified how HandleToggle() works, let me know if anything starts acting odd.

Increased the amount of health that Prevent Death adds when the health threshold is reached, from 200 to 2000.

Fixed the Lua Interpreter window not being correctly resized after closing the Import/Export window.


Added vehicle spawning under the Vehicles menu

Added Noclip

Fixed instakill melee not restoring values properly on weapon switch / unequip

Fixed god mode not protecting against apocalypse difficulty horde instakill

Fixed refill ammo and infinite ammo


Prevent Death now functions properly, courtesy of Slok. Thanks to his code contribution, nothing short of falling several stories will kill you.

Fixed quite a few bugs for Warp Time, it now correctly sets days/months.

Changed the amount of years in Warp Time from 1 - 20 (additive) to 1993 - 2077.

Fixed a minor bug in the Vehicles submenu that added engine power/loudness/quality setters to every menu in the Under-the-hood category.


Zombie Brush now allows you to set the amount of zombies you wish to spawn.

Added GenericInputWindow.lua as an API to make input windows easier to create.

Overhauled Max All Skills, now iterates through PerkList instead of manually maxing each skill. Also means that it'll max any new skills without me having to manually add it.

Overhauled the Skill Max menu, iterates through PerkList and creates the subMenus for each skill automatically, whereas previously I had to define them manually. This also means that any new skills added will be supported, as I won't have to update the mod to manually include them.

Removed the Nutrition editor as it didn't work.


Added Instant Crafting. Just open the crafting menu and click the item you want, and it'll instantly give it to you for free.

Added Instant Actions. Every action, such as building, will now be performed instantly.

Added a nutrition editor. You can now tweak the nutrition values to your liking, or you can just click the "Become healthy" button to instantly become healthy.

Added Weather Changing.

Removed the old debug "MLG Mode" code

Prevented admin checksum spam

Fixed a bug where Barricade Mode would add a plank to the players inventory if the object already had the maximum amount of barricades. Also, general code-cleanup for Barricade Mode.

Fixed the bug where Cheat Menu would create 50+ menus for some people

Fixed an issue with Insta Kill Melee erroring out when not using a weapon


Now the only thing that you need to learn, is how to spawn zombies on command. I remember that's why i downloaded necroforge the first time, but with so many updates, that feature stopped working. Ive been wanting to start a game with no zombies, and created a base and have it tested with zombies.

3a8082e126
Reply all
Reply to author
Forward
0 new messages