dnspy破解某收费.net软件注册码的探讨
本帖最后由 理想的海洋 于 2022-3-31 17:19 编辑1.有一款.net的收费软件 参考一个帖子的方法没有成功 参考链接如下
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1099138&highlight=dnspy
2.这个软件和以上帖子的很相似,搜索注册找到了关键代码
3.右键选择编辑方法试了几个代码都提示编译错误
代码如下 有大佬能指点一下吗 原代码如下
using System;
using System.ComponentModel;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Controls;
using DevComponents.DotNetBar.Metro;
namespace IDCardReader.setting
{
// Token: 0x02000009 RID: 9
public partial class Setting : MetroForm
{
// Token: 0x06000113 RID: 275 RVA: 0x000113F4 File Offset: 0x0000F5F4
private void btn_active_Click(object sender, EventArgs e)
{
string text = this.tbl_license.Text.Trim();
if (!SecurityUtil.Verify(text))
{
MessageBox.Show("注册码错误了怎么办", "错误提示");
return;
}
MessageBox.Show("成功激活");
RegisterUtil.initRegistry();
RegisterUtil.SetValue("license", text);
if (MessageBox.Show("输入注册码后,重启后生效,是否立即重启", "是否重启", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
Application.Restart();
}
}
}
}
结合帖子里的大佬的回复方法,nop掉if判断 可以激活了但是程序有验证,重启失效
谢谢各位大佬出谋划策这个软件的pj方法应该是有很多种,我用了两种方法都可以实现重启验证的pj
第一种:24楼的方法 搜索注册码错误 在错误提示的上面点击 SecurityUtil.Verify跳转然后按照他发的图片把result改成result2具体修改的几处他都贴了图片 参照修改保存即可。
第二种:45楼的方法 在注册码错误提示上面有个if函数 直接删除掉然后把 IDCardReader.finishTrial = true; 这一句改成IDCardReader.finishTrial =false也可以的
还有其他大佬的多种方法由于自己初学看不懂不知道如何操作,不过最感兴趣的还是62楼大佬的方法,说是RSA加密 可以用公钥和私钥,直接模拟生成注册码不知道是不是不用pj和分析主程序
直接能通过两个秘钥文件生成注册码,还在继续学习研究中。 本帖最后由 gksj 于 2022-3-29 13:00 编辑
zhanglei1371 发表于 2022-3-28 20:27
因为代码没有加壳,所以直接编辑方法就OK了。
按byh3025的修改方案修改后,找到load部分,这样修改:
上 ...
你这样改没用的,你往上看在你之前我发的回复
if (IDCardReader.finishTrial && formName != "setting")
{
MessageBox.Show("该版本为试用版本或者使用管理员权限运行该软件,试用期结束", "激活通知");
return;
}
在点击窗体按钮的时候检测了IDCardReader.finishTrial的值
如果是true就直接返回了
试用到期还是用不了
所以
这样是最彻底的解决方案,加载完标题不进行注册表操作直接赋值false
所以说写代码要考虑所有的可能性,把所有相关的条件都处理好
还有经过我对整个程序的分析,发现这个软件即使注册了也还是试用版
因为把秘钥正确写入注册表之后根本就没有读取这个秘钥
所以注册完之后估计作者会发一个正式版的软件 感觉这样改就差不多了
身份证读卡器? 这应该发错板块了吧?正确板块应该是求助区 Panel 发表于 2022-3-28 11:58
这应该发错板块了吧?正确板块应该是求助区
我看这个属于.net 就选择这个板块了 SecurityUtil.Verify(text) 验证在这里面 编辑IL代码,把17行的if语句反转就行了。 提示编译不了的时候你可以滚动一下滚轮,会发现新天地,这种情况你只能编辑il代码了,一般都是dnspy的反编译器编译出来的语法有问题,要么自己修复要么编辑il,后者更快点 删掉return;应该就好了。 jidesheng6 发表于 2022-3-28 12:32
提示编译不了的时候你可以滚动一下滚轮,会发现新天地,这种情况你只能编辑il代码了,一般都是dnspy的反编 ...
为了能让编辑器没问题 特意安装了win7 的虚拟机 .net4.6 dnspy没问题其他的都可以编译 估计还是我语法有问题 慕若曦 发表于 2022-3-28 12:13
编辑IL代码,把17行的if语句反转就行了。
反转代码我写不好 一直报错 再麻烦指导一下