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!