logoalt Hacker News

TacticalCodertoday at 10:12 AM0 repliesview on HN

> Debugging, back then, was an almost physical thing. Comparing character by character what was on screen against what was printed on the page. Realizing that the "1" that looked like a lowercase "l" had tricked you for half an hour.

And the 0 and 8. And this was used by some copy-protection to try to prevent reverse engineering. Back then real debuggers (by "real debugger" I mean not just "debugging in your head": but an actual, although very minimal, debugger) were very simplistic too, and so you'd read everything line by line, keeping in your head what the program was doing, was the register contained, what subroutines would do etc. And then you'd have "tricks" by the copy protection where that line with a '0' you just analyzed a few commands before would turn, sneakily, into a '8' (maybe by a function or a side effect of a command etc.).

And when we'd spot it we'd be: "Wait dude, did you notice how sneaky it is, this actually turns the 0 into an 8, so the next this execute, everything shall be corrupt" (or something like that).

And so debuggers got enhanced: for example if anything on screen got modified, the modified value would flash than stay in green. Stuff like that.

Our tools were much more basic.

But then we learned to eat 68x00 and x86 opcodes for breakfast.