So, Hacking and Reverse Engineering
We have all tried at one time or another, to understand how things work. Some of us used to pull things apart, like an alarm clock (I was 12), or an old TV or two-way radio (I was 14). The obsession to understand “how things work” and for me, “how can I do that too?” is what has driven me into the world of Computer Programming and Electronic Engineering and Design.
In my early days, I enjoyed collecting old electronic products and pulling them apart and “trying” to repair them. I read all the available industry magazines “Electronics Australia”, “Electronic Today International, “Popular Electronics”, which lead me to understand one thing, while leaving me with many more questions.
A capacitor, inductor, resistor. What are they? What properties do they each have? How do you use them in a circuit? Then there’s diodes, transistors, ICs and micro-processors. And so, it goes on, always learning, always applying the new thing to the next design.
Always applying the new thing to the next design - doesn’t sound that different to software programming does it? I was also trying to understand how those Commodore-64 games were written. From learning the physical hardware elements in the computer, itself, to understanding the purpose of a Kernal or Bios, and following on with Layers, Wrappers and ultimately, Classes and Objects. Without this inheritance to simplify/unify/standardize everything, the simplest task (say displaying a single letter “A” on the screen) would be the most complicated thing you could imagine.
As I got older, I collected many tools to help me connect to, understand and “hack” the things around me.
· A Basic language programmable hand-held CASIO
· EPSOM Portable with rs-232 ports
· Electronic Multi-meter (electrical tester)
· Cathode Ray Oscilloscope (displays digital and analogue waveforms)
These tools/understandings were very useful, when you needed to decode data from a Weigh Bridge Controller, or maybe from a data recorder in a mining truck, or even connect a micro-processor to a two-way radio to send/receive data to control bore pumps and tank levels. Many of my early jobs required this unique skillset.
In my teens, to short-cut some of this learning time, I would find something someone else was already doing and “Reverse Engineer” it. Using all sorts of techniques from tracing out the circuitry, to decompiling the software/library/code to writing my own simple “hacking suite” to insert break-points and tracings into an existing program. I learnt a lot about covert techniques that the “programmers of the day” were using as well as developed my own engineering and software coding skills.
Today it’s just so easy to go to the Internet and search one of the many software forums for an answer to your question. This works on the assumption that you are not the first person to ask that question, which in many cases is true.
However; where you are doing something new or innovative you need to be self-reliant, do your own explorative testing, measuring and thus develop your own knowledge and understanding.
I personally believe that the knowledge of others is only a starting point. You should never rely too heavily on this knowledge. DON’T doubt yourself. You have the ability to ask the right questions and discover new knowledge for yourself. I have found this to be true in my life, over and over again.
So don’t shy away from discovering “How they did that thing?” as a little bit of Hacking can teach you a lot, even if it’s to protect your own work from getting hacked later on.