目标:
软件名称: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#写了一个注册机,完美的破解了这个软件。
结果:
官网出售价格: