共计 7918 个字符,预计需要花费 20 分钟才能阅读完成。
目标:
软件名称:Bioreactor Design
环境:
WIN7 64
破解工具:
DetectItEasy
ScanId
De4dot
Reflector
仅限技术交流,不提供任何破解补丁!
软件界面:
先查壳:
.net 无壳 然后再查是否支持De4
扫描结果:未知壳 支持de4
软件是64位的 丢到de4dot-x64里面脱壳,在软件目录下会生成BRD2012-cleaned.exe
把BRD2012-cleaned.exe丢到Reflector里面反编译出一套源码
private void knop_registratie_Click(object sender, EventArgs e)
{
if (this.Tekst_Reg_Naam.Text == "")
{
MessageBox.Show("Please complete your registration name", "Message", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
BRD2008.Reg_Naam = this.Tekst_Reg_Naam.Text;
BRD2008.Reg_Code = (long) Math.Round(Conversion.Val(this.Tekst_Reg_Code.Text));
BRD2008.Reg_Naam_Lengte = BRD2008.Reg_Naam.Length;
BRD2008.Reg_Getal = 0;
BRD2008.Controle_registratie();
if (BRD2008.Registratie_Controle)
{
MessageBox.Show("Thank you for the registration of Bioreactor Design.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
MessageBox.Show("The registration code was wrong.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
this.Close();
}
}
通过错误提示语,找到这段注册代码。从源代码不难看出,注册成功与否,来自BRD2008.Registratie_Controle它,而它的定义是:public static bool Registratie_Controle;
猜想:TRUE=注册成功 FALSE=注册失败,如果是爆破 那就需要在程序启动的时候进行 Registratie_Controle 赋值,简单的看了一眼,放弃了。(如果能写注册机为何还要爆破呢)
通过上面的代码,我发现真正的Registratie_Controle赋值的是这一个函数BRD2008.Controle_registratie()
进入到这个函数的里面,我觉得可以直接做注册机。
public static void Controle_registratie()
{
Registratie_Controle = false;
Registratie_Single = false;
Registratie_Education = false;
Registratie_Company = false;
Registratie_miniplants = false;
int num = Reg_Naam_Lengte;
teller_reg = 1;
while (teller_reg <= num)
{
Reg_Letter = Conversions.ToChar(Strings.Mid(Reg_Naam, teller_reg, 1));
Reg_Getal += Strings.Asc(Reg_Letter);
teller_reg++;
}
Reg_Single = (Reg_Getal * 7) + 0xd52a5;
Reg_Education = (Reg_Getal * 0x11) + 0x8f2ab2;
Reg_Company = (Reg_Getal * 0x17) + 0x31fc38;
if (Reg_Code == Reg_Single)
{
Registratie_Controle = true;
Registratie_Single = true;
MyProject.Forms.Form_about.Label_Licence.Text = "Single User Licence";
MyProject.Forms.Form_registratie.Label_Licence.Text = "Single User Licence";
MySettingsProperty.Settings.Setting_Licentie = "Single User Licence";
MyProject.Forms.Form_registratie.Tekst_Reg_Naam.Enabled = false;
MyProject.Forms.Form_registratie.Tekst_Reg_Code.Visible = false;
MyProject.Forms.Form_registratie.Label_Reg_Code.Visible = false;
MyProject.Forms.Form_registratie.LinkLabel1.Visible = false;
MyProject.Forms.Form_registratie.Tekst_Licentie.Visible = false;
MyProject.Forms.Form_karakteristieken.menu_file.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_startN.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_deltaN.Enabled = true;
MyProject.Forms.Form_about.Label_eigenaar.Text = Reg_Naam;
MyProject.Forms.Form_registratie.CheckBox1.Visible = false;
MyProject.Forms.Form_registratie.knop_registratie.Visible = false;
MyProject.Forms.Form_karakteristieken.Tekst_Hv_Tv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Hv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Tv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Vw.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Vw_V.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Hw.Enabled = true;
}
if (Reg_Code == Reg_Education)
{
Registratie_Controle = true;
Registratie_Education = true;
MyProject.Forms.Form_about.Label_Licence.Text = "Education Licence";
MyProject.Forms.Form_registratie.Label_Licence.Text = "Education Licence";
MySettingsProperty.Settings.Setting_Licentie = "Education Licence";
MyProject.Forms.Form_registratie.Tekst_Reg_Naam.Enabled = false;
MyProject.Forms.Form_registratie.Tekst_Reg_Code.Visible = false;
MyProject.Forms.Form_registratie.Label_Reg_Code.Visible = false;
MyProject.Forms.Form_registratie.LinkLabel1.Visible = false;
MyProject.Forms.Form_registratie.Tekst_Licentie.Visible = false;
MyProject.Forms.Form_karakteristieken.menu_file.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_startN.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_deltaN.Enabled = true;
MyProject.Forms.Form_about.Label_eigenaar.Text = Reg_Naam;
MyProject.Forms.Form_registratie.CheckBox1.Visible = false;
MyProject.Forms.Form_registratie.knop_registratie.Visible = false;
MyProject.Forms.Form_karakteristieken.Tekst_Hv_Tv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Hv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Tv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Vw.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Vw_V.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Hw.Enabled = true;
}
if (Reg_Code == Reg_Company)
{
Registratie_Controle = true;
Registratie_Company = true;
MyProject.Forms.Form_about.Label_Licence.Text = "Company Licence";
MyProject.Forms.Form_registratie.Label_Licence.Text = "Company Licence";
MySettingsProperty.Settings.Setting_Licentie = "Company Licence";
MyProject.Forms.Form_registratie.Tekst_Reg_Naam.Enabled = false;
MyProject.Forms.Form_registratie.Tekst_Reg_Code.Visible = false;
MyProject.Forms.Form_registratie.Label_Reg_Code.Visible = false;
MyProject.Forms.Form_registratie.Tekst_Licentie.Visible = false;
MyProject.Forms.Form_registratie.LinkLabel1.Visible = false;
MyProject.Forms.Form_karakteristieken.menu_file.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_startN.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_deltaN.Enabled = true;
MyProject.Forms.Form_about.Label_eigenaar.Text = Reg_Naam;
MyProject.Forms.Form_registratie.CheckBox1.Visible = false;
MyProject.Forms.Form_registratie.knop_registratie.Visible = false;
MyProject.Forms.Form_karakteristieken.Tekst_Hv_Tv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Hv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Tv.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Vw.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Vw_V.Enabled = true;
MyProject.Forms.Form_karakteristieken.Tekst_Hw.Enabled = true;
}
if (Registratie_Controle)
{
MySettingsProperty.Settings.Setting_Reg_Naam = Reg_Naam;
MySettingsProperty.Settings.Setting_Reg_Code = Conversions.ToString(Reg_Code);
}
}
这段代码已经暴露了软件的算法,然后自己根据软件的加密算法,自己用C#写了一个注册机,完美的破解了这个软件。
结果:
官网出售价格:
正文完