[RevEng] Old versions are cool

Today, you often hear that you always should use latest/newest version of a software. Because it has less bugs. (But it may contain new features, and so new bugs.)

But from reverse engineer's perspective, old versions may be very useful.

This is a real story from my experience. I tried to dig into a piece of software X. And it was obfuscated. I procured all possible versions of X I could. And I found that one (single) version wasn't obfuscated -- developers simply forgot to run obfuscator that time.

Also, during my Oracle RDBMS years, I amassed a huge collection of Oracle versions up to 7.x. Simply because older versions has less code. And less features. And hence it's easier to understand and analyze.

When I prepared my blog posts about SSH, I learned oldest possible SSH versions.

So when you stuck with X, try other (older) versions. Find the same feature in older version -- it may be implemented in a simpler way.

On the other hand, when fuzzing, newer versions are to be used, because they have more (poorly tested) features and bugs.

Today, I use Racket (Scheme (Lisp dialect) dialect), because it's feature-rich, has good manuals, etc. But I learned pure Scheme because Scheme is such a small language.

I can use OCaml, but I learned Standard ML first, again, because it's small.

I can't imagine today, how can anyone start learning C++ (which is huge) without starting at pure C (which is small).

(the post first published at 20230329.)


List of my other blog posts.

Subscribe to my news feed

Yes, I know about these lousy Disqus ads. Please use adblocker. I would consider to subscribe to 'pro' version of Disqus if the signal/noise ratio in comments would be good enough.