3 ms·
Very impressive for a weekend project. May I ask, how do you approach these kind of problems? Do you focus for 12h, do you make hand-written notes, do you use a
by mtrn 11y ago
Very impressive for a weekend project. May I ask, how do you approach these kind of problems? Do you focus for 12h, do you make hand-written notes, do you use any IDE or code analysis tools, whiteboards - or what is your method in general?
- sedeki 11y agoI'm also wondering about this.
- nanoojaboo 11y agoweekend project doesn't necessarily mean "only one weekend" could be multiple weekends
- alevskaya 11y agoReverse engineering binary or obfuscated code does take long chunks of unbroken time and a lot of attention. You have to fill up your short term memory with many structures seen or guessed at in order to begin making connections between them. Making diagrams can help, but mostly it’s reasoning through things step by step while jumping around the code and learning to recognize patterns. Sometimes little scripts can be useful for globally altering the code or testing an idea. In the guess of a cpu emulator, it’s actually much simpler, there’s extremely comprehensive documentation on how the 386 is supposed to behave. In this case I simply had to recognize the clever tricks used to emulate such behavior efficiently in software, e.g. using XOR operations to efficiently simulate the behavior of the translation lookaside buffer (TLB). It was mostly just reformatting, documenting and renaming things intelligently. I have to confess that I find it all therapeutic in a way. Normally I read papers and do experiments and attempt to design things in biology, where nothing is clear at all, ever. We have the genome, which looks simple, but no way to simulate anything usefully (microscopic physics is hard and traverses a vast temporal hierarchy in “running” a cell). We’re left with uncertain measurements of the behavior of enzymes and molecules to guess at what’s going on inside the stochastic, dynamic maelstrom of a cell. It’s still reverse engineering, but it’s so much slower to do on an alien, practically uncomputable architecture than in a synthetic universe made by human minds to be understandable by human minds.
- mtrn 11y agoThanks for your great reply. I thought that understanding complex cell behaviour and an obfuscated OS in Javascript that runs in the browser might share some reverse engineer challenges. It is good to get some perspective, because sometimes even medium to large size code projects start to look like maelstroms.