Hacker News new | past | comments | ask | show | jobs | submit login

>It's not an ordinary decompilation generated by IDA. They actually rewrote all the functions from reading MIPS assembly and compiled it with the original compiler, adjusting the code until it produced identical output to a vanilla ROM.

Reverse engineering a reproducible build is quite a bit more than "just" output.




What more is needed?


A perfect decompiler would just do it, but writing the exact inverse of a compilation tool chain would be... Difficult. You would have to have a different decompiler for each version each tiny little difference.

These guys were capable of figuring out and naming what every function did and then rewriting each of them over and over and over to get the original tool chain to output bit for bit the exact same binary as they started with.

Something like taking x-rays of an unknown machine and being able to recreate perfect pixel replicas of the engineering drawings or listening to a piece of music and being able to exactly write out the score.


There goes the old say: "that would be impossible just like attempting to get the original cow by putting together ten thousand hamburgers".


Sounds like a job for a genetic algorithm or machine learning.


I'd recommend watching this CppCon talk [1] about compiler optioning. It isn't just that recompilation is hard, or that it is difficult for humans to do. At a fundamental level, the information is not there at all, because the compiler can make very impressive optimizations. Machine learning can deal with weak signals, but it can't deal with no signal.

[1] https://www.youtube.com/watch?v=nLv_INgaLq8




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: