Copy Protections, Piracy and Cracking BlitzMax

In case you’re not familiar with the product,  BlitzMax is an object-oriented programming language (plus environment) which is the evolution of the old BlitzBasic for the Amiga. Personally I never used BB on the Amiga - I went for assembly programming instead. When I jumped over to the PC platform it was natural for me to move to x86 assembly; however, eventually a friend’s interest in C/C++ made me check out the excellent Watcom compiler, and I slowly but inexorably began a hike toward higher level languages. The first use I had for C was to generate pre-calculated tables which I used in assembly code, but I soon realized that object-oriented programming increased my productivity; there was no going back to assembly after that. However, that’s as far as I went - when it came to larger projects I just didn’t feel comfortable with languages that were of an even higher level than C++.

That is, up until a year ago. I read some game developers’ comments about BlitzMax and decided to check it out. It felt very strange to go from C++ to a language that is basically Basic on steroids (with object-oriented features added.) But after I had done a quick game concept I realized the power and the potential of such a language. I also put together a simple game called Santa Shooter, and was impressed by how fast the development time was. I think the whole game took a week to put together, but I blame that extensive time on some trouble I had with bitmapped fonts.

Then what happened? I made a very simple concept for Sheeplings with BlitzMax; but around this time the 30-day demo expired. Tragedy! Loss! Panic! What to do?

I generally view myself as a law-abiding citizen, but I have some principles. For example: I never buy a game if I haven’t played it enough to be sure that I love it. There are exceptions to that rule, of course: Heroes of Might and Magic V, We Love Katamari, Dragon Quest 8… Some games I just buy instantly, without bothering to see if I’ll be satisfied. With BlitzMax, I just wasn’t convinced that I’d be using the language for anything else than toying around. And I really don’t buy products for that reason. (Around this time, developers will have started frowning and muttering curses at me. But wait, it gets worse.)

So what did I do about the BlitzMax issue? I spent an hour reading some cracking tutorials on the net, downloaded the appropriate programs (along with an x86 opcode table), and wrote a quick crack for BlitzMax. (This is probably where software developers have started to foam at the mouth. But wait - I promise that it gets better before the end!)

I will of course not mention what tools I used, or any of the procedures in cracking the program. Or what file to crack, for that matter. Or any details at all. But I must mention that the patch I made required only two bytes to be changed, in order to remove the time restrictions on the demo. Two bytes is not much at all. I won’t say that it’s easy for a generic programmer to crack the application, but I do believe that the BlitzMax author spent his time developing a great product instead of bothering with copy protection schemes all that much. And I also believe that this was the correct choice.

See, I started working (sporadically) on Sheeplings and finally got to where I felt that it might actually become a decent game. It wasn’t until a few months ago that BlitzMax had “proven itself” in my eyes; by then I knew that the language was right for me, and that I’d be able to produce a decent product with it. Now I’ve of course coughed up the measly sum of $80 for BlitzMax, and I’ve no doubts that I made an excellent purchase. But if I’d spent that money a year ago I would’ve felt unsatisfied. By now I would have lost my doubts…but what if that hadn’t been the case? What if I felt that BlitzMax wasn’t right for me? From my point of view, this would have been the result:

  • I would’ve lost $80.
  • I would’ve lost time and effort, developing for a language that I ultimately felt was a dead-end.
  • In short, I would have paid for the privilege of losing time I could have spent being productive in other ways.

In comparison, if I had cracked the program and then realized that it wasn’t useful for me, this would’ve happened:

  • I would’ve lost time and effort.
  • The developer of BlitzMax wouldn’t have gained $80. (Note: not “lost $80.” I would not have stolen the money in any way – I only deprived him of potential gain.)
  • We both would have ended up unsatisfied, but I wouldn’t have become bitter about spending money in an unsatisfactory way. In this case I only had myself to blame.

Many people have a zero-tolerance policy toward software piracy, but I can’t help feel that it is justified in some cases. I have no problem with paying for things (as long as I can afford it) but I don’t make impulse purchases; if I’m faced with the choice of pay now or stop using the application, I’ll definitely choose to quit using the program altogether if I don’t feel that I have enough information yet. In some people’s view that’s fine – the developer has made a restriction, and it’s his decision that if I haven’t made up my mind I should go elsewhere. But in the case of BlitzMax (and other games and applications) the end result was a gain for the developer. I would never have paid up a year ago, but I did now.

Note: of course this can’t be applied to all people and all software. Some people just don’t want to pay for their goods, and some software is meant to be bought and used in a spontaneous manner. The situation can vary as well: a lack of money typically makes paying for stuff rather difficult. I might even be moving more and more toward impulse purchases as my income increases – who knows.

Leave a Reply

Copyright © 2009 KarjaSoft