"article title": Beginner crack vb.net simple encryption teaching
"article author": Aegean Sea
"Software Name": A data Processing program
"": Download your own search
"Writing language": vb.net
"Using the tool": Reflector
"Author statement": Just interested, no other purpose. Where mistakes are made please be advised by the heroes!
--------------------------------------------------------------------------------
"Detailed procedure"
Peid:microsoft Visual C #/Basic. NET
The first contact with the vb.net program produces an impulse to analyze.
Software is not registered, after running, the popup input box requires the registration code corresponding to the machine code. Three-time input error notification registration failed. The program menu is all locked and dimmed.
Then using OD mad Analysis, confused.
Occasionally reflector, steady, dare not alone, with June mutual encouragement.
To load the main program with reflector, see the following:
Step by step, to "Engineering 1"--"Form1"--"Form1_Load (Object,eventargs): Void"
Double-click "Form1_Load (Object,eventargs): Void"
See:
The Interception algorithm section is as follows:
BOOL flag = FALSE;
if ((Strings.len (Filesystem.dir ("C:/Program Files/common files/autodesk shared/acdbspspd.lxy",
Fileattribute.normal)) >= 5) && (Strings.len (Filesystem.dir ("C:/windows/winnta.dlt", Fileattribute.normal)) >= 5))
&& ((Strings.len (Filesystem.dir ("C:/WINDOWS/SYSTEM/SOUNDA.BPC", Fileattribute.normal) >= 5) && ( Strings.len
(Filesystem.dir ("C:/WINDOWS/SYSTEM32/C_808.EFP", Fileattribute.normal)) >= 5)))
{
Flag = true;
}
Else
{
Double num2 = Math.Abs (Conversion.int ((Double) (Math.tan (dateandtime.timer) * 100000000.0));
Double d = num2 * 720915.0;
Double num4 = Math.Abs (Conversion.int ((Double) (Math.tan (Math.Log (d)) * 100000000.0));
int NUM5 = 1;
Do
{
if (Interaction.inputbox ("User code:" + conversions.tostring (num2), "User registration", "",-1,-1) = =
Conversions.tostring (NUM4))
{
int filenumber = Filesystem.freefile ();
Filesystem.fileopen (filenumber, "C:/Program Files/common files/autodesk shared/acdbspspd.lxy",
Openmode.output, OpenAccess.Default, Openshare.default,-1);
Filesystem.printline (filenumber, new object[] {"Confg.sys"});
Filesystem.fileclose (new int[] {filenumber});
FileNumber = Filesystem.freefile ();
Filesystem.fileopen (filenumber, "C:/windows/winnta.dlt", Openmode.output, OpenAccess.Default,
Openshare.default,-1);
Filesystem.printline (filenumber, new object[] {"PFF.EFG"});
Filesystem.fileclose (new int[] {filenumber});
FileNumber = Filesystem.freefile ();
Filesystem.fileopen (filenumber, "C:/WINDOWS/SYSTEM/SOUNDA.BPC", Openmode.output,
OpenAccess.Default, Openshare.default,-1);
Filesystem.printline (filenumber, new object[] {"Aword.app"});
Filesystem.fileclose (new int[] {filenumber});
FileNumber = Filesystem.freefile ();
Filesystem.fileopen (filenumber, "C:/WINDOWS/SYSTEM32/C_808.EFP", Openmode.output,
OpenAccess.Default, Openshare.default,-1);
Filesystem.printline (filenumber, new object[] {"Excel.app"});
Filesystem.fileclose (new int[] {filenumber});
Goto label_033b;
}
num5++;
}
while (NUM5 < 4);
Interaction.msgbox ("Registration failed! ", Msgboxstyle.okonly," warning ");
This. Txt1.loadfile (@ "D:\LnlPro\cass data processing \1.txt", richtextboxstreamtype.plaintext);
This. menustrip.enabled = false;
This. toolbar.enabled = false;
}
Analysis of the statement by clause:
First define a false variable
Detection:
C:/Program Files/common Files/autodesk Shared/acdbspspd.lxy
C:/windows/winnta.dlt
C:/windows/system/sounda.bpc
C:/windows/system32/c_808.efp
These files exist and must be greater than or equal to 5 bytes in size, and if they are, return true, or false, to register.
Visible manually set up these 4 files, and fill in more than 5 characters, you can break.
We then analyze the algorithm flow:
Do
{
num5++;
}
while (NUM5 < 4);
Indicates that if the registration code is wrong, you can allow 3 input opportunities.
Double num2 = Math.Abs (Conversion.int ((Double) (Math.tan (dateandtime.timer) * 100000000.0));
Double d = num2 * 720915.0;
Double num4 = Math.Abs (Conversion.int ((Double) (Math.tan (Math.Log (d)) * 100000000.0));
int NUM5 = 1;
Use the Timer function to generate a random number for the current time, then tangent it, and then multiply the value by 100000000 to convert to an integral type. Multiply this value by 720915, type
to double.
This value is the machine code shown.
From:
if (Interaction.inputbox ("User code:" + conversions.tostring (num2), "User registration", "",-1,-1) = = Conversions.tostring
(NUM4))
You can see that NUM4 is the character that the user wants to enter.
The formula is:
Double num4 = Math.Abs (Conversion.int ((Double) (Math.tan (Math.Log (d)) * 100000000.0));
That is, the machine code to take the logarithm, then tangent, and then multiplied by 100000000, and then the results are rounded, the group after the absolute value. This is the registration code!
The algorithm keygen is not necessary to write, the algorithm is too simple.
--------------------------------------------------------------------------------
"Experience Summary"
Learn to use reflector, which is not encrypted with code. NET program, very useful! You try it too?
--------------------------------------------------------------------------------
"Copyright Notice": This article original in the Snow Technology Forum, reproduced please indicate the author and maintain the integrity of the article, thank you!
May 06, 2009 10:18:38 uploaded thumbnail images uploaded images
vb.net hack