Breaking the Adobe serial number algorithm & writing a Keygen
by Raybiez (Dec 5th 2000)

Tools needed:
Adobe Setup Program (any adobe software)
Calc.exe
Notepad.exe
Pepsi
Music (Sisters of Mercy)

---

Welcome to my first cracking tutorial! We will approach this
protection using nothing but the setup program and our brain.
I'm gonna use Photoshop 6 as an example but this can be applied
on any adobe product. I have the Shock release of Photoshop 6
and they have included one serial number, but that means a few
million people will use the same serial, it would be better to
have your own personal number. So here we go..

Ok, what we have is this number: PWW600R7105467-948

Let's start by examining the serial, we can devide it into
several parts like this:

PWW 600 R 7105467 - 948

PWW = Photoshop for Windows
600 = Version 6.00
R   = License type

The rest is somehow calculated by the serial algorithm, so let's
assume that the first part '7105467' is just any random number
and the second part '948' is a check value calculated from the
random number. In other words, any seven digit number has a
corresponding three digit check value. To test this theory we
just make up our own random number and use the setup program
for testing.

We take the number 'PWW600R7604274-xxx' and start the testing from
'000' up till we find the valid check value. This can take some time
so you'll have to be patient. ;) Test, test and test until you find
that the correct three digits are '451'. To be sure there's only one
working check value for '7604274' we continue to test up to '999'.
Good, no more working serials were calculated from our random number.
So far the theory seems to hold, our random number worked.

What we should do now is see how changing the random number affects
the check value, like this:

PWW600R7604274-451	; Our working serial
PWW600R8604274-xxx	; Increase the first digit one step

Of course the serial doesn't work after we increase '7' to '8'.
So we have to use the setup program again to get the new correct
check value, more patience needed! Test the new serial from '000'
up till you find the correct value, we find it's '297'. So what do
we have now?

PWW600R7604274-451	; Our working serial
PWW600R8604274-297	; New working serial, new check value calculated

Now we need to think, and prepare to use Calc. ;) Maybe that first
digit has a fixed value that adds to the check value when increased.
Let's assume the value '451' has been increased to '1297', but only
uses three digits (297). Do '1297-451' and you get the number '846',
ok if our theory is right we should be able to change the first digit
in the serial to anything we want, like this:

PWW600R8604274-297	; Working serial
PWW600R2604274-xxx	; Changed '8' to '2'

The first digit has been decreased from '8' to '2', therefore we have
to do '55297-(6x846)'. Since the old check key is '297' we have to
make that a higher number cause we're gonna decrease it with '6x846',
and it must be at least three digits! The '55' before '297' can be
any value. Our calculated value is '50221', let's test it:

PWW600R8604274-297	; Old working serial
PWW600R2604274-221	; Our new serial, hopefully working!

YES, it works! This probably means that the rest of the random numbers
also have fixed values assigned to them. To test this just go through
the same process as above by increasing the digits one step at a time
and then figure out the correct fixed value. You should be able to
do that yourself if you've understood what you've read.

After you have tested around several different serials you might
notice that none of the serials that have a check key that starts
by a '0' work. Like 'PWW600R3604274-067' doesn't work. So maybe some
fixed value is added when the check number starts with '0'. Just
go through as usual but this time you can do it from '100' to '999'
until you find the correct serial. You will find this is the correct
serial: PWW600R3604274-351

So do '351-67' and you get '284'. Ok, whenever your calculated
serial has a check key that starts by '0' just add the value '284'.

Well that's it, as I said this applies to all adobe products, even
though Illustrator 9 and some others have more numbers in the serial
it's the same basic idea, the last three digits are always a check
value calculated from any random numbers with fixed values assigned
to them. Even if the serial looks like 'ABW900R00000000-000-xxx' it's
still the last three numbers that should be calculated.

You wanna write your own Serial Generator? I included my source as
a reference, written for Delphi 3.

Good Luck!




Written by Raybiez (raybiez@gmx.net)

Dedicated to +ORC, tKC, ED!SON, Fravia, +Sandman and all others
for writing tutorials and YOU for reading it!
