I would say, Indiana Jones and the Last crusade(arcade), Madshow, and Loom were very influential games in my life. The first, was the very first one I actually own. It cost my parents 500pts(equivalent today to 3€).
The game is divided in 4 chapters. The first represents when young Indiana, as in the film, is trying to escape with the Cross of Coronado. In the DOS version whenever your lives expired, you were done. Second chapter represent the catacombs of Rome together with the climb of the German castle where Indy father is retained. The third belongs to the Zeppelin scene. These two chapters, you could continue gaming and infinite number of times, there was plenty of oportunities to train in these levels. The fourth and last chapter represented the final scene of for the film, where you need to get of Holy Grail, to save Indy's father in the famous Jordanian temple. This as the first, you could not continue playing if your lifes expired, no training possiblities in this last level level.
1993, me being 11 years, my only owned game, and impossible to beat. Always dead at the fourth chapter, with no relevant progress. I eventually surrendered, but promised: "one day, my future self, will hack you, and then I will finally beat you".
During the following years there was unconsciously a plan in my head (or maybe just a fantasy): "which kind of hack, would help me beat the game without being too much intrusive at the same time..."
Almost 20 years later, 2012, and with enough ASM debugging experience behind:
The idea was to make the game to not decrease the LIFE bar. Locate the instruction performing the action and bypass it. The initial assumptions were the following:
- There would be a x86 DEC instruction performing that action
- Likely that DEC instruction is decreasing a memory position and not a register, not a stack variable.
- That would be inside a middle to low size function similar to:
HandleDeadIndy() {ShowDeadIndy();FadeOut();DecreaseLife();RestartGame();}
# ndisasm -b 16 INDY.COM > Indy.asm# cat Indy.asm | grep -i dec | wc -l
- Create a copy of the binary (INDY.COM)
- Replace that potential DEC instruction by the required number of NOPs with your favorite Hexadecimal editor
- Play the game for testing
No hay comentarios:
Publicar un comentario