In the life of a reverse engineer, your work changes the way you think. Everything is a mystery waiting to be solved. In my last post about hacking I said the hacking mindset is to keep learning, to have a thirst for knowledge. This article is for those looking to improve their curiosity, and reasoning skills. Not all of it will apply only to techies, but some (most all) to the average Joe.
To start with my hobby of reverse engineering requires an inquisitive mindset. Asking such questions as "why are they moving EAX to EBX? What did that do in the long run?" Because in programming everything has a purpose, what was the designers goal when they coded a certain block, why did the compiler code it a certain way.
But something that will set the basis for our discussion, is when you don't have the code. What if you input data and just get something back. You can't be sure why, your not even certain how the computer came to the conclusion that it did. For instance with web apps, you input a number and the website may spit back something else. Why? What algebraic equation lead the server to reply as it did? In order to find that out you need to submit a massive amount of information repeatedly and look for a pattern. So if it were numbers in a form (since this something easy to use as an example and you may never run across this) you may input 1 then 2, 3, 4... And so on. Recording each reply over time you may be able to guess what the reply will be. If you guess it now it's time to write your own formula that would be able to spit out the same answers. This is simply one way to think, trying to discover what is working under the hood.
I've always thought like this. Since I was a little kid I would stare at things trying to see what the item was hiding. I recall as a child I was at a small engine shop and I didn't really know much about tools. I noticed a drill press (for those that don't know what this is google it) on a table. I didn't know what it was, but I could tell by the drill bit it was used to drill. Obviously the platform was to place the part being drilled and you would pull one of the 3 handles that would spin around to lower the bit towards the platform. As a small child I wondered, how does the handle lower the drill bit (as a kid I may have had a different name for the bit being as ignorant as I was).
Upon closer examination I noticed as I lowered the drill, a bar that it was set into would lower and this bar had ridges on it. I began to think about it and realized the spinning handles must have been connected to a gear that, as you twisted, would fit into the ridges and push the bar (and drill bit) down. Now I know this isn't anything profound but for a kid this is a treasure and I was proud of myself. If everyone would apply this kind of thinking to everyday objects we would start understanding the world and how the universe works. I'll give you a more recent example now.
I love math, numbers are the language of the universe. So I spend many sleepless nights laying in bed looking for patterns or simply running through the ones I already know. One I have recently been running through is that when multiplying by 11 you can simply add half the previous digit to the one your working on all the way to the end of the number. For example:
243 X 11
**this comes from my blog thehackerjourney.wordpress.com **