Writeup by Yxene for Veggie Dino

intro pwn exotic

May 13, 2026

This time it’s a reverse challenge… but with a weird file format 😬 :

$ file veggie-dino.8xp 
veggie-dino.8xp: TI-83+ Graphing Calculator (assembly program)

It’s an assembly program for the TI-83+.

I still have painful memories of my failed static analysis of Chrominausor, so we’ll try dynamic analysis instead.

PTSD Chihuahua meme - When I remember static analysis of Chrominausor

For this, we’ll need a TI-83+ emulator.

After doing some research, the best option on Linux for this is TilEm.

After several hours of struggling, I managed to install it! First, you need a bunch of special libraries (notably TILP):

sudo ./install_tilp.sh
cd tilem-2.0
./configure && make && sudo make install

And after fixing several installation bugs, it works!

tilem2

You also need to find a TI-83+ ROM (but it’s pretty easy to find).

You can then transfer the 8xp file using Right-click -> Send File.

And since it’s compiled Z80 code, you need to use the Asm function:

Asm(prgmDINO)

Next, enter your name:

And off you go for a little dino game

But it takes way too long to reach 9999. So we need to figure out another way to win.

I tried the TilEm debugger, it looks pretty good, but I think we can do even better!

The number 9999 is 0x270f. So we can look in the file to see if we find that value. And bingo! We find that value (in little-endian, so 0f27) just once. We can change it to 0100, which is 1 in decimal. Then we transfer our modified file.

At first glance, nothing has changed; the target score at the top is still 9999.

But when we collect the first apple:

Flag!