Skip to content

MISC information

tomvita edited this page Mar 15, 2023 · 15 revisions

What is BID

Build ID is a hash of the game code. CheatVM uses this to identify the game code being the intended target. The way cheat code works requires the game being hacked to be exact binary image of what the hack was made for, no deviation even for a single bit can be allowed. Only on very rare occasion would a game with a different BID have cheat code compatibility.

Why you should not use cheat code of unknown quality

Cheat code makes hack to game and the ill it made may not be immediately apparent. All cheat code have the possibility to damage your game in a unrecoverable(other than to delete the save and restart the game from the beginning) way. Cheat code makers may not do that much of testing but thanks to channel of feedback(if they exist) there may be reasonable amount of quality assurance. Pick your cheats with that in mind.

Why it's not a good idea to rename cheat code file to match your game's BID

This will fool the CheatVM into executing code that wasn't intended for your game. This is like changing the label of medicine, it is just as senseless or full of malice. If you are changing the label and eating the medicine check in to a hospital first before doing so (make a backup of your game save and restore it immediately if nothing happens, bear in mind that if you didn't die it does not mean you are out of the woods). If you hate the game this much just delete it already!

What can be done when BID don't match

A lot of fundamentals of a game don't change with updates. In fact most of the time only a very small percentage of the game code is changed. The way cheat code works is by using offsets and these offsets do change which of course will make cheat code invalid. To make the code work again the change in offset needs to be found and corrected. Most of the time pointer code only have the first offset changed. This can be easily corrected by trying every starting point in main.(This is performed by Breeze when you try to add a invalid pointer code to bookmark and the results are added to bookmark, you can then look at them to see if some of them are good. Even if search needs to be performed again looking into the code will give ideas how they were made in the first place and if the original is still available learning from the existing code will make creating them again very easy.

How does multiplier cheat works and how to customize it

Most of the time multiplier cheats are ASM code and generally it fall onto two types

mov Rd or fmov Rd ,#imm

If the immediate value match the described multiplier, assume it is the multiplier, change it and profit

add Rd, Rn, Rm, lsl#

Add can be modified into multiply when a left shift is performed but only with multiple that is power of 2 lsl#2 means 2^2=4, lsl#3 means 2^3=8 etc

Be careful if you use BL or the stack

On ARM the CPU don't update SP and X30 automatically when a call it made, it is up to the code to do something with SP and X30, if a subroutine is not going to call another there is no need to update SP nor save X30 so it won't.

If your hook is inside this kind of subroutine it is inherently unsafe to just use the stack if you don't know how much of it this subroutine uses. If you do a BL to code cave you will be corrupting X30 and that means crashing the game.