Dear Reverser,

I enjoy visiting and exploring your web pages, and thus I have to start
this message by expressing my gratitude for your efforts. 

A few years back I used to "crack" software games so that I could play
them and impress my friends (lame, I know). My favourite technique for
bypassing protection and adding functionality would be to write a
program loader that would rewrite sections of code in memory and/or
redirect calls to ones of my own design. As a very inquisitive teenager
I always wanted to improve my knowledge of how things work. Cracking
was one of my first steps into reverse engineering (something I
inherited from both my parents - reversing for knowledge and REALITY),
and it provided impetus for learning Assembly, source level debugging
(still VERY useful) high level languages, and many other disciplines I
will not bore you with - for I am sure you know what I mean.

What I am trying to get at is that software cracking has a place in the
global scope of reverse engineering; although I would prefer to see
protection essays in the line of:

<essay>

Introduction to the type of protection.

Reason why this protection is insecure (e.g. Old style Doc checks -
setting si=di defeats the protection)

Reference sample protection code - Not real apps

/* this could be in Asm, HLL, Pseudo code etc. Showing that the cracker
has reversed the protection - not only found a way past it (*1) */

Tips and tricks on spotting this type of protection, and common ways of
defeating it, thus the aim moves from bypassing protection to actually
understanding them.

Some reference samples e.g.

This type of protection can be found in "Appname1, Appname2, etc.

<\essay>

If the person reading the essay really wants to crack a specific
application, they can spend the time learning how it works as opposed
to how to make it not work.

*1 - Most protected applications are very silly in their assumptions,
for instance years back I encountered a game (Dark queen of krynn or
Lands of lore, I can't recall which one) that encrypted the doc
checking code with a silly XOR cipher or something similarly stupid.
Now I could have analyzed the cipher and worked on cracking the key and
algorithm. OR I could have (and I did :-) trace to a point in the code
where the checking code was deciphered and THEN patch the checking
code. Therefore even if the programmers employed the toughest
encryption and used the longest random key possible (very long :-) and
it took 10^10^80 years (VERY, VERY long time) to brute force the key,
the protection would still be weak and I think people should know why a
protection fails even when built with tried and tested methods,
analogy: A house built from the toughest bricks will not outlast the
storm when the mortar consists of sand and spit. 

I love the reality cracking sections (including Auntie Annie's) and
hope to write a reality cracking essay one of these days.

What I am trying to convey is that we should crack ideas, schemes and
protocols. Not apps.

Andre

Nom de plume withheld; because it's silly %-].

Andre at oas point co point za