Type :- Visual Basic 6 application.
Tools Needed :- SmartCheck, VB for coding the keygen.
URL :- Unknown (13/9/1).
Fire up your SmartCheck and launch this little program, click on the Info button and then on register, now, enter name :- ACiD BuRN and serial : 112233. Click on the button to check the serial and it says "bad serial...", now quit Lan-Box.
In SmartCheck do a search for this text : ACiD. You will land where the algorithm starts, now, look a little, and you'll see it takes the ASCII value from each letter of the name entered. Next, click on this line :-
asc(String:"A") returns Integer:65
To see what this program dows with the other ASCII values, select "show all events" in the View menu. Now you see this :-
asc(String:"A") returns Integer:65 <-- Value of current char (1st it is "A" from ACiD BuRN). __vbavaradd(VARIANT:Empty,VARIANT:Integer:65) <-- Adds 65 to 0 (empty means no value yet). If you look down, you'll see the same occurs with the next chars of the name "C" (C from ACiD BuRN) :- Asc(String("C") returns Integer:67 <-- Take ascii value of the next char, here "C". __vbavaradd(VARIANT:65,VARIANT:Integer:67) <-- Then add it. __vbavarmove(VARIANT:integer:132,VARIANT:Integer:65) <-- The result.
Well it repeats this for each characters ASCII value, so this loop takes each characters decimal value from your name and sums them.
A = 65 + 0 C = 67 + 65 = 132 i = 132 + 105 = 237 D = 237 + 68 = 305 space = 305 + 32 = 337 B = 337 + 66 = 403 u = 403 + 117 = 520 R = 520 + 82 = 602 N = 602 + 78 = 680
So, the final value from this addition is : 680 decimal. Now, scroll down until the end of the loop on and scroll down until you see this :-
__vbavarmul(VARIANT:680,VARIANT:232354) : This multiplies the result of ASCII value with 232354, the result is 158000720. __vbavarmul(VARIANT:158000720,VARIANT:653435) : This multiplies the result of 1st multiplication with 653435. The result is 103243200473200. __vbavardiv(VARIANT:1.03243e014,VARIANT:23446534) : This divides the result of 2nd multiplication by 23446534 (Note: 1.03243e014 is same as 103243200473200. The final result is: 4403345.947558817. __vbavarmove(VARIANT:Double:4.40335e+006,VARIANT:Integer:680)
This moves the final result (good serial) where the value "680" was written, it overwrites it! so, 1st time, you thought it was the good serial, but it is now !!. I entered : 4403345.947558817 and it was still bad serial message box, if we scroll down a bit you will see this value : 4403345,94755882 let's try that :-).
So, I was wondering how 4403345.947558817 become 4403345,94755882, so I coded the keygen to see how I can fix this problem. I coded it in VB5, entered : ACiD BuRN as name, and I generated a serial with my keygen and it give me : 4403345,94755882. Great!, dunno why it works (from CrackZ - the answer is above in the cast from double to int).
Here a summary of the algorithm :-
1st : add all ASCII values of the name. 2nd : multiply the value (of 1st part of algo) with 232354. 3rd : multiply the value (of 2nd part of algo) with 653435. 4th : divide the value (of 3rd part of algo) with 23446534. For i = 1 To Len(Text1.Text) temp = Asc(Mid(Text1.Text, i, 1)) final = final + temp Next i final = final * 232354 final = final * 653435 final = final / 23446534 Text2.Text = final