You might have noticed that my blog was down for a few weeks. Yes my last host had crashed. Not wanting to rely on them further, I have shifted my website server over to ByetHost. So far I am enjoying their very generous hosting offer. Nothing better for hosting a wordpress blog.
This has been one of the most interesting stories from the days of hobby programming. Like most of the hacking community, the biggest turn on for writing programs is “Challenge”. Of the many challenges and victories, I specifically remember this as being one of the most interesting.
I had won the software programming contest at a national level tech fest called Aureole held in JEC. I was riding high on confidence and had the feeling that I could do anything with computers and programming. I even started considering myself as one of the best programmers in the area. The only person I thought came close or at par or better was my senior in college, Kunal.
That summer I came across a software program being distributed by a local coaching class professor called MindsReader by MindsArray. Two things made me look at the software that was being used by the professor to distribute notes. Firstly, the software was being touted as uncrackable. Secondly the notes being distributed on it were really good. To get those notes you had to buy the software and individual notes packages. Considering I had never paid for software in my life (till then) and having released all my projects as Open Source, it was unlikely that I was going to pay for this one either. All the motivation needed to crack it was in place.
Let the hacking begin…
I obtained a copy of MindsReader from a friend who had bought it and got it installed on my PC. At first I thought it would be as simple as installing with the same key that my friend got. Didn’t work. It generated me some key and wanted me to take it to the center or go on the web and generate an activation key for it. I had seen many such software to know that cracking this one would require me to decipher the key generation algorithm… in assembly language! I certainly didn’t have time for that but still gave it a try. Got a copy of SoftIce, an executable decompiler and pointed it to the points where I would think the software triggered key generation algorithm. I was sure that the software was using some kind of hardware ID to tie the generated code to the activation code because the activation code that one person got never ran on another machine than the one code was generated for.
Having spent hours trying to figure out which piece of code was actually generating the hardware ID, my head was aching with all the staring at assembly that I had done for nearly 10 hours. My plan was simple, locate the hardware ID generation logic and hard code it with the ID from my friends computer. Yet finding that place in code was the toughest thing I had done in a while!
The Eureka moment!
I started looking at the problem from the perspective of a developer. If I had to generate a unique computer ID how would I do that? Google. Of the many results I got, the one that jumped out at me was a simple DOS executable program that you could embed with your own program by reading off the hardware ID from it’s output. The sun finally decided to shine on me and I found the exact same DOS exe being used by MindsReader in its “bin” folder! The solution was right there in front of me all the while and I had been bothering myself with the uneasy painful path. The uncrackable software was now to be cracked. The solution was simpler than one would think. When I ran the DOS exec, I captured it’s output on my friends machine. I fired up LECIDE (my self developed C++ IDE) and wrote simple cout>> statements to dump the exact same output as the DOS exec. I compiled and linked the code and named the exe same as the original exe for generating hardware IDs and replaced that in the bin folder, prayed to the Holy Spirit of computer programming and fired MindsReader. Re-entered the registration screen and tried again with the activation key I had borrowed from my friend and the program ran! The feeling of looking at the program run was pure bliss… I had accomplished something that very few dared to try. Yes, it wasn’t as tough as cracking some crazy algorithms would be, but so what? I was the first one to have done that in my small sleepy town and that made me proud enough…
Being a supporter of free software I was now going to enable other peers of mine to be able to run the same software. I would allow them to emulate hardware IDs and also give them a UI to adequately set up hardware id/activation key/notes package combinations. The reason this was helpful is because not everyone bought every notes package. So you could ask different people for which notes package they had purchased and easily manage the emulation process for each package. I christened my tool very appropriately, CrackMind 🙂
Just before I was about to release this cracker out in the wild I called Kunal and showed him what I had accomplished. After all, showing off your accomplishments to another able programmer is what drives the Open Source industry. I expected him to get surprised (or at least act) but he shocked me by confessing that he was the developer MindsArray had hired to develop MindsReader. My sense of victory was dampened a bit because now I couldn’t release it out to everyone or that would get Kunal in trouble. So instead I just distributed the tool to my entire group who reaped benefits of being my friends. Ohh yeah I reaped benefits out of them as well and I still do!
Of all my experiences with the iPad, the best have been surfing web, reading books, and magazines. The Zinio app has totally redefined the way I get my favorite magazines! Imagine not having to wait weeks to get your PCWorld magazine delivered to your home. Having all your favorite magazines available with you and readable with almost the same or more convenience as the print media has been a dream so far – at least for me. My laptop can’t go everywhere with me but the iPad surely can. My laptop needs a wall socket after 2 hours of use so its not the best for use on airplanes, trains and airports. Its too bulky to handle as well. All of these are not a problem for the iPad.
With Zinio, I got virtually a news stand on my iPad! I can browse and purchase from a HUGE selection of magazines, not just the ones you would otherwise find on stalls. Even the prices appeared relatively cheaper than print media prices. Tell me what kind of Magazine applications are you using? Would love to know!
As I have written on several occasions about me, I love programming. You can find the software I have written on this blog. Just made a link to a program called CopyFat with its installer and source code. I will mention here the projects I have done in the past and will eventually post them with Source Code and Installers.
- LECIDE – Learners/Experts Configurable Integrated Development Environment
- With LECIDE I intended to make something like Eclipse IDE much before it showed up. Obviously my effort was much juvenile and to be honest, I started by creating a Notepad clone in VB6 and ended up creating a very complex IDE with syntax coloring, instant help tooltips, multiple compiler support, and BLADE – a drag and drop GUI designer for creating C++ dialog resources. Unfortunately, the way the code was written was horrible. If I wanted to do something new with it today, I would rather jump off a building than taking a dive back into its code. However the project was pretty extensive for the time it was built in and can be used to learn a lot. Download the executables and installer here. Download the source code here. Kindly run it in Windows 7 compatibility mode, because certain components don’t work on Vista/Win7.
- CopyFat 2.0 – File copy program
- You can read more about it here. It was one of the most useful utilities I ever wrote. It helped me and my friends on several occassions!
- CyberBrowser – Tabbed IE based browser
- A pretty simple browser with Tabbed browsing capability back in the days when IE was still a single window browser. A good reference for those wanting to learn how to use the WebBrowser control in VB6. Download the source code here.
- Winsock Based FTP client
- While learning socket programming, I implemented my own FTP client. The important thing to note is, I didn’t use any third party components to derive FTP functionalities. The code actually talks to the FTP server by opening ports and opening parallel channels for file downloads etc. Great stuff if you are learning socket programming in VB6! Get the source code right here.
I wrote this program back in my early college years when CDs still reigned the media storage and most of them had scratches on them. This program did one simple thing, it would copy the file as much as possible. Wondering how retrieving a damaged file helps at all? Well some file types, specially video media files, are more tolerant to missing chunks of data. Most video players know how to skip over damaged frames and move on over it.This made it a great tool for recovering movies from damaged CDs/DVDs. I also enabled bulk copy on it so that it would copy an entire folder using the same trick as mentioned above.I am uploading an installer as well as the source code for it.
Hello World! Finally I am going to start using WordPress for maintaining my online website. For the past 2 years I was acting lazy by postponing the creation of my own custom Blog application for my website, and at the end, Laziness wins! So here I am back at using WP blog.See you soon again!