某大地计算软件C#.Net——简单爆破
本帖最后由 云在天 于 2019-6-7 13:09 编辑@huangpenghyy 发出来求助的东西 0.0 不知道你研究的如何了,就做个简单教程
https://static.52pojie.cn/static/image/hrline/4.gif
首先说下软件
先运行一下试试
登录界面,出现注册号然后要打电话告诉注册号,再输入返回的激活【这都不重要】
随便输入一个,提示注册号不对。记住关键词就行
查壳
查壳,没有这就好搞了,况且还是C#.net的东西,直接上dnspy
https://static.52pojie.cn/static/image/hrline/4.gif
这个东西居然有14个窗体。。。只有从头一个一个的看了,边看边搜字符串,注册码不对
然后发现Form14就是之前的注册窗口
然后发现有关注册代码就是简单的if-else的判断= =
那我们直接把成功的代码替换到失败的地方就好
如图,顺便也换到上面 ,不能是空字符的地方= =
这样不管他怎么判断,都执行的是成功的代码,
然后改一下他的字符串什么的,完毕!
https://static.52pojie.cn/static/image/hrline/4.gif
https://static.52pojie.cn/static/image/hrline/4.gif
原版和破解版都在附件里面:
如果帖子有帮助到你,希望给个免费评分多多支持下!!谢谢各位!!
C#注册机:
/// <summary>
/// 获取注册码
/// </summary>
/// <param name="cpuID">机器码</param>
/// <returns></returns>
public string GetRegCode(string cpuID)
{
string sKey = "63011852";
string text5 = this.Encrypt(cpuID, sKey);
int num5 = text5.Length;
int start = num5 / 2;
string regPart_1 = text5.Substring(0,4);
string regPart_2 = text5.Substring(start-1,4);
string regPart_3 = text5.Substring(num5 - 8, 8);
string regCode = regPart_1 + regPart_2 + regPart_3;
return regCode;
}
/// <summary>
/// 加密函数
/// </summary>
/// <param name="pToEncrypt">待加密字符</param>
/// <param name="sKey"> 一个Magic Number</param>
/// <returns></returns>
public string Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
byte[] bytes = Encoding.Default.GetBytes(pToEncrypt);
dESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(sKey);
dESCryptoServiceProvider.IV = Encoding.ASCII.GetBytes(sKey);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateEncryptor(), CryptoStreamMode.Write);
cryptoStream.Write(bytes, 0, bytes.Length);
cryptoStream.FlushFinalBlock();
StringBuilder stringBuilder = new StringBuilder();
byte[] array = memoryStream.ToArray();
checked
{
for (int i = 0; i < array.Length; i++)
{
byte b = array;
stringBuilder.AppendFormat("{0:X2}", b);
}
return stringBuilder.ToString();
}
} 楼主这是我正在破解的第一个NET软件,不知道怎么修改,求指点下。
这是一处
private void BtonReg_Click(object sender, EventArgs e)
{
int num;
int num3;
try
{
IL_02:
ProjectData.ClearProjectError();
num = -2;
IL_0B:
int num2 = 2;
bool flag = Strings.Len(this.newDrv) == 2;
if (flag)
{
IL_1F:
num2 = 3;
bool flag2 = ModIniFile.WriteINI("Lic", "Code", Strings.Trim(this.TextBox2.Text), this.newDrv + "\\RoadWorks.Lic") == 1;
if (flag2)
{
IL_59:
num2 = 4;
Interaction.MsgBox("感谢你的注册。请重启excel,检查是否已经注册成功\r\n1.你可以把U盘作为密码狗在任意一台电脑上使用测量内业小宝\r\n2.U盘下面有个RoadWorks.Lic文件,请不要删除!为避免删除造成麻烦,备份好此注册码!以备重新注册!\r\n3.因U盘的损坏或者U盘的格式化导致的损失,作者不负责!", MsgBoxStyle.OkOnly, "注册");
IL_6C:;
}
else
{
IL_70:
num2 = 6;
Interaction.MsgBox("注册码写入失败!", MsgBoxStyle.OkOnly, "注册失败");
IL_83:;
}
IL_84:;
}
else
{
IL_88:
num2 = 9;
Interaction.MsgBox("请在计算机上插入唯一一个有效U盘,作为软件解密狗对软件注册,确定插好了,点击确定重新检测\r\n或者请插入已经注册的解密狗U盘", MsgBoxStyle.YesNo, "错误");
IL_9C:;
}
IL_9D:
IL_9F:
goto IL_129;
IL_A4:
int arg_A9_0 = num3 + 1;
num3 = 0;
@switch(ICSharpCode.Decompiler.ILAst.ILLabel[], arg_A9_0);
IL_E2:
goto IL_11E;
num3 = num2;
@switch(ICSharpCode.Decompiler.ILAst.ILLabel[], (num > -2) ? num : 1);
IL_FC:
goto IL_11E;
}
object arg_FE_0;
endfilter(arg_FE_0 is Exception & num > 0 & num3 == 0);
IL_11E:
throw ProjectData.CreateProjectError(-2146828237);
IL_129:
if (num3 != 0)
{
ProjectData.ClearProjectError();
}
}
这是二处
private void Form6_Load(object sender, EventArgs e)
{
this.Text = string.Concat(new string[]
{
"RoadWorks V",
Conversions.ToString(MyProject.Application.Info.Version.Major),
".",
Conversions.ToString(MyProject.Application.Info.Version.Minor),
" Build",
Conversions.ToString(MyProject.Application.Info.Version.Revision)
});
bool flag = !Module1.GrandpaSayNO;
if (flag)
{
this.TextBox2.ReadOnly = true;
this.TextBox2.Text = "已注册";
this.ButtonReg.Text = "已注册";
this.ButtonReg.Enabled = false;
}
else
{
this.newDrv = CodeDiskRMB.GetRemoveDriver();
bool flag2 = Strings.Len(this.newDrv) == 2;
if (flag2)
{
this.Label1.Text = this.newDrv.Substring(0, 1) + "盘硬件码:";
this.TextBox1.Text = Conversions.ToString(CodeDiskRMB.GetDiskNumber(this.newDrv));
}
else
{
this.TextBox1.Text = "请在计算机上插入唯一一个有效U盘";
Interaction.MsgBox("请在计算机上插入唯一一个有效U盘,作为软件解密狗对软件注册,确定插好之后,重新启动Excel检测\r\n或者请插入已经注册的解密狗U盘", MsgBoxStyle.OkOnly, "错误");
}
}
} 大神大佬厉害啊。果断收听!!! 这个方法很牛,感谢分享,net软件太容易破解了 感谢分享,用心提升 厉害了,感谢楼主,下载了 这个是干嘛用的? 那个text6就是真码啊... 是个什么软件,下下来试试。 软件,下下来试试。