VB cracking: How to keygen Snowman32 v2.42 by ACiD BuRN [ECLiPSE / CiA]



hello all !
this is my 25th tutor , and i got some thanks for my previous tutors !!
thx all ppls who read my tuts and like them !!
well , let's start now !


       Level : easy
  protection : name / serial
where to get : http://www.abc-ware.de/
tools needed : Smart check 6 and VB to code the keygen


I)KEYGENING IT!


Ok , fire up your smart check and run the app with it!!
go in the register menu , and enter :

name : ACiD BuRN
City : heheh
serial: 112233

the programme say us : incorrect serial , blablabla !!
in smart check , you must see :

Mid$(String:"ACiD BuRN",Long1,VARIANT:Integer:1)
Asc(String:"A") returns Integer:65
Mid$(String:"ACiD BuRN",Long2,VARIANT:Integer:1)
Asc(String:"C") returns Integer:67
Mid$(String:"ACiD BuRN",Long3,VARIANT:Integer:1)
Asc(String:"i") returns Integer:105
......

this continue with all chars , but what the heck he is doing ??
In smart check , click on show all events, now u must see:

interesting !!!
lemme explain you , what he is doing !

Asc(String:"A") returns Integer:65    <== take the ascii value in decimal
__vbavaradd(VARIANT:empty,VARIANT:Integer:65)  <== this add the ascii value to the last one
__vbavarsub(VARIANT:65,VARIANT:Integer:1)  <== this substract the result of the addition with 1
__vbavarmov(VARIANT:64,VARIANT:Empty)      <== mov the result for using it later..

so , we see what it is doing!
it take the ascii value of the current place of the loop, and add it to the last ascii result
(here it is 0 "empty")
then it substract one value (here it is 1)
and then move the result somewhere to use it later!!

let's look the next char : C , we see :

Asc(String:"C") returns Integer:67    <== take the ascii value in decimal
__vbavaradd(VARIANT:64,VARIANT:Integer:67)  <== this add the ascii value to the last final 
value (64 here)

__vbavarsub(VARIANT:131,VARIANT:Integer:2)  <== this substract the result of the addition with 
2 (2 = the current place of the char)

__vbavarmov(VARIANT:129,VARIANT:64)      <== overwritte the last value with the new one..

.........

well , the prog does this for all chars of the name
for ACiD BuRN we found : 635
this value is found near the last letter of the name : "N" for ACiD BuRN :

Asc(String:"N") returns Integer:78          <== take the ascii value in decimal
__vbavaradd(VARIANT:566,VARIANT:Integer:78)  <== this add the ascii value to the last one

__vbavarsub(VARIANT:644,VARIANT:Integer:9)  <== Substract the value with the current posstion of
the name (N = 9th place of my name)

__vbavarmov(VARIANT:635,VARIANT:566)      <== mov the result for using it later..

ok , now u see what i mean !!

now , scroll down in smart check and u see what the program is doing
with the City entered :
i entered "heheh" as serial :


Asc(String:"h") returns Integer:104    <== take the ascii value in decimal
__vbavaradd(VARIANT:empty,VARIANT:Integer:104)  <== this add the ascii value to the last one
__vbavarsub(VARIANT:104,VARIANT:Integer:1)  <== this substract the result of the addition with 1
__vbavarmov(VARIANT:103,VARIANT:Empty)      <== mov the result for using it later..


ehe , this look familiar !! let's look the next char who must be : "e"
we see :

Asc(String:"h") returns Integer:104    <== take the ascii value in decimal

__vbavaradd(VARIANT:103,VARIANT:Integer:104)  <== this add the ascii value to the last one

__vbavarsub(VARIANT:207,VARIANT:Integer:3)  <== substract the value with the current posstion
 of the City (here "h" of heheh ==> 3rd place)

__vbavarmov(VARIANT:204,VARIANT:103)      <== mov the result for using it later..

ok , look the pic i added with this tut :


you see that the programme do the same loop with the City than with the name , except 
it don't use all chars!!
exemple : 

it takes one char , then skip the next char , take one char , then skip the next one ...

for heheh :

it takes : the first "h" , then skip the next char "e" , than take the next char "h" , then skip
the next char "e" , and take the next char "h".

hope u understand now !!
another example for: ACiD_BuRN it take : Ai_uN
now , i am sure u understand !!

the final value coming from the City is : 303
the final value coming from the name is : 685 (u remember!! i hope)
Now you see this in smart check :

__vbavarMul(VARIANT:635,VARIANT:Integer:303)    <==  multiply the value from the name with
the value from the City
 
__vbavarAdd(VARIANT:192405,VARIANT:Long:45)     <== add the result with "45" but what is this
 value ? where does it come from ??
lemme look something !! A brain is usefull , hehe
length of the name entered : 9  (length of ACiD BuRN = 9)
length of the city entered : 5  (length of heheh = 5)
9*5=45 !!!! wow we did it !!
so it add the result with the multiplication of the length of the name with the lentgh of the 
city !
so : 192405 + 45 = 192450

long(192450)-->Double(192450)

hehe , good =)
scroll down and u see this :

Hex$(VARIANT:byRef Double:1.0069e+007)
if you click on this u see : 10068993 at the right of the smart check window
then u will see something looking like this :

__vbaVarTstNe(VARIANT:String:"112233",VARIANT:"99A401")....

heh , this look like a comparaison !!
i am sure if we enter : 99A401 as serial , it will be registered !!
but we want to code a keygen !!

we had 192450, and just under this we find : 10068993
Damn , where this shit comes from ??
Again , a little brain is usefull =)
10068993 - 192450 = 9876543

hehe , look like it add 9876543 to our result !!!
and then convert it to hexadecimal !
10068993 = 99A401 in hexa !!

BINGO !!! we succeed !!
Lemme , explain you quickly the algo !!

************************************************ALGO********************************************

1st : do the loop with all chars of the name
2nd : do the loop with some chars of the City
3rd : muliply their result to obtain on value
4th : add it with the result of the multiplication between the length of the name and the length 
      of the City..
5th : add this to  9876543
6th : convert the result in hexadecimal
7th : nothing much , the result in hexadecimal is the correct serial !!

********************************************END OF THE ALGO*************************************





2)KEYGEN SOURCE IN VB5:

like in all my tuts , i give u a working source of a keygen !!
i code it in VB coz it is easy to translate in another language!
i limited the length of the City to 26, coz i coded it quickly , and i didn't know how to
make it work using another way!! 
sorry , but it works fine !!


------------------------------KEYGEN SOURCE IN VB5-----------------------------------------------



For i = 1 To Len(Text1.Text)
    bignum = bignum + Asc(Mid$(Text1.Text, i, 1))
    bignum = bignum - i
Next i
val1 = bignum

For x = 1 To Len(Text2.Text)
If x = 2 Then GoTo nah
If x = 4 Then GoTo nah
If x = 6 Then GoTo nah
If x = 8 Then GoTo nah
If x = 10 Then GoTo nah
If x = 12 Then GoTo nah
If x = 14 Then GoTo nah
If x = 16 Then GoTo nah
If x = 18 Then GoTo nah
If x = 20 Then GoTo nah
If x = 22 Then GoTo nah
If x = 24 Then GoTo nah
If x = 26 Then GoTo nah

    bignum2 = bignum2 + Asc(Mid$(Text2.Text, x, 1))
    bignum2 = bignum2 - x
nah:
Next x
val2 = bignum2
temp2 = val1 * val2
temp3 = Len(Text1.Text) * Len(Text2.Text)
temp3 = temp3 + temp2
temp3 = temp3 + 9876543
Text3.Text = Hex(temp3)


------------------------------END OF KEYGEN SOURCE IN VB5----------------------------------------


heh , i think the 26 max length for a City is enough !!
so , just do a new project in vb , put 3 text box :

1 for the name
1 for the city  (set the max limit to 26)
1 for the serial

create a Button , double click on it , and copy past this source !!
run the keygen , and have Fun !!


3)Ending....


Well , this tut is finish , hope u understand all this piece of shit, but if you have a 
comment or one question, mail me 
you can found all my tuts at : 

MAIL: ACiD_BuRN@nema.com
Web page URL: http://acidburn2000.cjb.net/

Enjoy!


Greetings to my groups : ECLiPSE / CiA / ODT

Also greetingz to: (no specific order)

R!SC, ^Inferno^, AB4DS, Cyber Blade, Klefz, , Volatility, TORN@DO, T4D
Jeff, [Virus], JaNe , Appbusta , Duelist , tKC , BuLLeT , Lucifer48 , 
MiZ , DnNuke , Bjanes , Skymarshall , afkayas , elmopio , SiFLyiNG , 
Fire Worx , Crackz , neural_en  , WarezPup , _y , SiONIDE , SKORPIEN
Lazarus , Eternal_Bliss , Magic Raphoun , DEZM , Bisoux , Carpathia ,
K17 , theMc , noos , Xmen , TeeJi , JB007 , Arobas , T0AD ,ytc , Kwai_lo , Killer_3K....


if your name is not here sorry !!! too much ppls to greets !


				ACiD BuRN [ECL/CiA]


y show