Assembly still rocks!!!

Year 2001, when I was in Ministry of Youth and Sports. the days when government offices use a stupid program called MLS to write Dhivehi letters and stuff. At that time Dhivehi was not supported in Windows. They don’t have much choice, either MLS, Accent or PageMaker (some few others as well). And though I don’t have to write Dhivehi letters, the program gave me a lot of trouble, since I’m the IT guy there. MLS Application requires a LPT dongle (a sort of adapter kinda thingy which have to be put in between the Printer Port and the Printer Jack) for it to function, its copy protection technique. If the dongle is not there, the application won’t start even. One day, an MLS dongle was lost, and people started accusing me for taking it, (wtf, why do I need a dongle). It costs around MRF 5,500/- (shit my salary was 1,410/- at that time). Really made me worry. So I thought I would crack it. Sounded like a tough thing at the time. So I started my research, walking on the road to cracking. First thing was assembly and the tools. I used NASM for my RND on assembly.

Assembly is not enough, I needed to know cracking techniques (unpacking, different protection techniques used in different software, etc…), I didn’t have much time. i was under pressure that I was going to be in trouble. I got hold of famous cracking tools SoftICE (Debugger + Memory editor + cool functions), HEIW (DisK Editor), W32dasm (Disassemble), WinHEX (Windows Disk Editor). So I started debugging the Application.

It’s got two modules, an application launcher and the application itself. The launcher checks if the dongle is not present and if any debugger is in memory if not it registers some variables in memory blocks and calls the application. So I first disassembled the launcher. And luckily with my little knowledge in cracking got to fix the checking part for the dongle (Hassan was also helping in this with me, thanks buddy). Now it launches the application. I was very excited. But It was too soon to celebrate. The program itself had a checking mechanism, it checks if the dongle is present in 15 seconds time interval. This was the hardest part. I used SoftICE, located the point where it checks for the code coming from the dongle, and realized that part of the program was in the dongle. All hopes down cause didn’t have a dongle to test and continue. The project got stopped at that time. Luckily the dongle was found at office and actually there was no proof that I took it. So I was safe. My cracking skills faded with time. I sure miss those days. And I still say assembly is the best programming language, but the slowest to develop and the fastest in speed compared to applications developed in other languages. It’s still useful to know (ASM) assembly.

Comments