Extending old games with reverse engineering and MAME

HEX

For last year’s Toorcamp, the folks over at DorkbotPDX helped out with the Church of Robotron installation. A religion founded on the prophesy of a cybernetic uprising in the year 2084 is a little esoteric even for us, so the Dorkbot crew wanted a way to make playing Robotron: 2084 a little more visceral. Using MAME and a few debugging tools, they were able to read the memory of a machine playing Robotron to extend the game into the physical world. When the player dies, lights go off, alarms sound, and the prophet of the Church of Robotron is pleased.

The setup at the Church of Robotron included a machine running MAME with a Robotron ROM. When events happened in the game, such as lasers firing or a player death, physical events would be triggered. To do this, the Dorkbot team read the memory locations of a game of Robotron at different times and found memory locations tied to in-game events. On their blog they go over using the MAME debug tool to detect a player’s death which can then be translated into physical apparitions for the Church of Robotron.

It’s a very cool hack, and one we wish we had a video of. Having a plastic ghost hit a player while playing Pac-Man seems like an awesome idea, and with the Dorkbot tutorial, it looks fairly easy.

Digging deep into how the 8085 processor’s registers were designed

8085-register-reverse-engineering

Hardware design enthusiasts should already be salivating just looking at this image. But [Ken Shirriff's] write-up on how the 8085 processor’s registers were designed will put you in silicon reverse-engineering heaven. He manages to get to the bottom of the tricks the designers used to make register access as efficient as possible, like routing some through the ALU on their path elsewhere.

We’re certainly not experts in studying dies like the one seen above. Luckily [Ken] does a great job of zooming in on important parts, then dissecting how they work by representing the silicone image as a functional flow chart. One of the parts which we found most interesting is the WZ temporary registers. These are a set of internal registers that are not accessible to the programmer. They’re only used internally by the chip. They act as temporary storage for multiple operand functions, and also hold register addresses for a handful of instructions (JMP, CALL, RST, etc.).

If you’re more interested in how images of these chips are attained you should do some searching on Hackaday. Just last week we featured one such project in a links post.

[via Reddit]

Dissecting a firmware image

dissecting-a-firmware-image

[Leland Flynn] did a great job of picking apart the firmware image for a Westell 9100EM FiOS router. Unfortunately he didn’t actually find the information he was looking for. But he’s not quite done poking around yet either. If you have never tried to make sense of an embedded Linux firmware image this serves as a great beginner’s example of how it’s done.

He was turned on to the project after port scanning his external IP and finding a random login prompt which he certainly didn’t set up. Some searching led him to believe this is some kind of back door for Verizon to push automatic firmware updates to his router. He figured why not see if he could yank the credentials and poke around inside of the machine?

He started by downloading the latest firmware upgrade. Running ‘hexdump’ and ‘strings’ gives him confirmation that the image is based on Linux. He’s then able to pick apart the package, getting at just the filesystem portion. His persistence takes him through extracting and decompressing three different filesystems. Even though he now has access to all of those files, broken symlinks meant a dead-end on his login search.

Digging deeper into the Apollo Saturn V LVDC

LVDC-NAND-proto

[Fran] went all-out with her reverse engineering of the Apollo Saturn V LVDC board. Regular readers will remember that she was showing of the relic early this year when she took the board to her Dentist’s office to X-ray the circuit design. Since then she’s been hard at work trying to figure out how the thing functions using that look inside the board and components. When we say ‘hard at work’ we really mean it. Not only did she explore many different theories that resulted in dead ends, she also built her own version of the circuits to make sure they performed as she theorized. Above you can see her version of the NAND/AND gates used on the hardware.

We find her explanation of how the logic devices were originally fabricated to be very interesting. They started with a ceramic substrate and used additive processes to form the traces and add the gates. We’ve embedded her video explanation after the jump.

[Read more...]

Finding 1s and 0s with a microscope and computer vision

ROM

One day, [Adam] was asked if he would like to take part in a little project. A mad scientist come engineer at [Adam]‘s job had just removed the plastic casing from a IC, and wanted a little help decoding the information on a masked ROM. These ROMs are basically just data etched directly into silicon, so the only way to actually read the data is with some nitric acid and a microscope. [Adam] was more than up for the challenge, but not wanting to count out thousands of 1s and 0s etched into a chip, he figured out a way to let a computer do it with some clever programming and computer vision.

[Adam] has used OpenCV before, but the macro image of the masked ROM had a lot of extraneous information; there were gaps in the columns of bits, and letting a computer do all the work would result in crap data. His solution was to semi-automate the process of counting 1s and 0s by selecting a grid by hand and letting image processing software do the rest of the work.

This work resulted in rompar, a tool to decode the data on de-packaged ROMs. It works very well – [Adam] was able to successfully decode the ROM and netted the machine codes for the object of his reverse engineering.

Reverse engineering the Furby

Furby

Furby teardowns are a favorite of ours, and there’s nothing quite like flaying open a creepy talking deformed animatronic owl/hell beast. There’s a lot you can do with a set of screwdrivers and a pair of scissors, but it takes a real clever person to reverse engineer a Furby without any disassembly (Russian, here’s the translation).

The new Furby comes with an iOS and Android app that allows children to interact with the Furby by feeding it, giving it commands, and even translating the Furbish into English. These apps work by playing a WAV file encoded with commands that give the Furby something to eat, or tell it to dance a merry jig.

Commands are delivered with these WAV files by means of a 4-digit, 4-bit code, complete with checksums. There are ten bits the Furby actually responds on, meaning there are potentially 1024 different commands the Furby can accept.

[iafan] wrote a Perl script to listen in on the audio generated by the Android Furby app and correlated all the possible commands with actions taken by the Furby. Everything is up on a git, allowing anyone to play an audio file and control the Furby’s mood and actions.

With this it should be possible to remotely control a Furby, letting it dance whenever you receive an email, or making it angry whenever someone retweets you. It’s a lot more clever than just putting a Furby through a wood chipper, but considering how creepy these things are, we’re not going to say it’s better.

How the 8085 ALU is structured

8085-alu-reverse-engineering

This is a microscopic photograph of an 8085 processor die. [Ken Shirriff] uses the image in his explanation of how the ALU works. It is only capable of five basic operations: ADD, OR, XOR, AND, and SHIFT-RIGHT. [Ken] mentions that the lack of SHIFT-LEFT is made up for by adding the number to itself which has the effect of multiplying a number by two; the same mathematical function performed by a shift operation.

His post details the gate arrangement for each ALU operation. This is clear and easy to follow, and was based on reverse engineering work already done by a team who meticulously decapped and photographed the dies.

Not long ago this explanation would have been voodoo to us. But we worked our way through The Elements of Computing Systems text-book by following the online Nand to Tetris course. It really demystifies the inner working of a chip like the 8085.

Now if you really want to understand this ALU you’ll build it for yourself inside of Minecraft.

[Thanks Ed]

Follow

Get every new post delivered to your Inbox.

Join 92,317 other followers