吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 33839|回复: 965
上一主题 下一主题
收起左侧

[.NET逆向] 某专业起名程序注册码分析与注册机

    [复制链接]
跳转到指定楼层
楼主
ps122 发表于 2024-1-12 11:22 回帖奖励

前言

看到论坛讨论帖:(https://www.52pojie.cn/thread-1879511-1-1.html),有了这篇注册机分析与注册机。

分析过程

从原帖可知Net程序,有混淆。

直接de4处理并找到注册验证:

[C#] 纯文本查看 复制代码
   private void method_0(object sender, EventArgs e)
{
ProjectData.ClearProjectError();
if (Class18.bool_16)
{
base.Close();
}
else if (Strings.Len(Class15.string_1) == 0)
{
Interaction.MsgBox("机器码不能为空,如不能解决,请与南方联系。", MsgBoxStyle.OkOnly, null);
}
else
{
Conversions.ToString(Class1.smethod_0().Registry.GetValue("HKEY_CURRENT_USER\Software\NanfangSoft .net\ProName730", "PCNB", ""));
string text = Strings.Trim(this.vmethod_2().Text);
string text2 = Strings.Trim(this.vmethod_6().Text);
if ((text2.Length < 14) | (text2.Length > 15)) //长度15位
{
this.vmethod_0().Text = "注册码不对!";
}
else
{
string text3 = Strings.Mid(text2, 1, 4) + Strings.Mid(text2, 9, 4);
string text4 = Strings.Mid(text2, 5, 1);
string text5 = Strings.Mid(text2, 6, 1);
string text6 = Strings.Mid(text2, 7, 1);
string text7 = Strings.Mid(text2, 8, 1);
string text8 = Strings.Mid(text2, 13, 1);
string str = Strings.Mid(text2, 14, 1);
if ((Operators.CompareString(text4, "6", false) == 0) | (Operators.CompareString(text4, "7", false) == 0) | (Operators.CompareString(text4, "B", false) == 0))
{
text4 = "1";
}
if ((Operators.CompareString(text4, "8", false) == 0) | (Operators.CompareString(text4, "9", false) == 0) | (Operators.CompareString(text4, "C", false) == 0))
{
text4 = "2";
}
if (Operators.CompareString(text5, "A", false) == 0)
{
text5 = "0";
}
if (Operators.CompareString(text5, "B", false) == 0)
{
text5 = "1";
}
if (Operators.CompareString(text5, "C", false) == 0)
{
text5 = "2";
}
if (Operators.CompareString(text5, "D", false) == 0)
{
text5 = "3";
}
if (Operators.CompareString(text5, "E", false) == 0)
{
text5 = "4";
}
if (Operators.CompareString(text5, "F", false) == 0)
{
text5 = "5";
}
if (Operators.CompareString(text5, "G", false) == 0)
{
text5 = "6";
}
if (Operators.CompareString(text5, "H", false) == 0)
{
text5 = "7";
}
if (Operators.CompareString(text5, "J", false) == 0)
{
text5 = "8";
}
if (Operators.CompareString(text5, "K", false) == 0)
{
text5 = "9";
}
string value = "20" + text4 + text5;//5、6位组成年份
if ((Operators.CompareString(text6, "6", false) == 0) | (Operators.CompareString(text6, "7", false) == 0) | (Operators.CompareString(text6, "B", false) == 0))
{
text6 = "1";
}
if ((Operators.CompareString(text6, "4", false) == 0) | (Operators.CompareString(text6, "5", false) == 0) | (Operators.CompareString(text6, "A", false) == 0))
{
text6 = "0";
}
if (Operators.CompareString(text7, "A", false) == 0)
{
text7 = "0";
}
if (Operators.CompareString(text7, "B", false) == 0)
{
text7 = "1";
}
if (Operators.CompareString(text7, "C", false) == 0)
{
text7 = "2";
}
if (Operators.CompareString(text7, "D", false) == 0)
{
text7 = "3";
}
if (Operators.CompareString(text7, "E", false) == 0)
{
text7 = "4";
}
if (Operators.CompareString(text7, "F", false) == 0)
{
text7 = "5";
}
if (Operators.CompareString(text7, "G", false) == 0)
{
text7 = "6";
}
if (Operators.CompareString(text7, "H", false) == 0)
{
text7 = "7";
}
if (Operators.CompareString(text7, "J", false) == 0)
{
text7 = "8";
}
if (Operators.CompareString(text7, "K", false) == 0)
{
text7 = "9";
}
string value2 = text6 + text7;//7、8位组成月份
if (Operators.CompareString(text8, "A", false) == 0)
{
text8 = "0";
}
if (Operators.CompareString(text8, "B", false) == 0)
{
text8 = "1";
}
if (Operators.CompareString(text8, "C", false) == 0)
{
text8 = "2";
}
string value3 = text8 + str;//13、14位组成日
if (((text2.Length == 15) & ((Operators.CompareString(Strings.Mid(text2, 15, 1), "1", false) == 0) | (Operators.CompareString(Strings.Mid(text2, 15, 1), "2", false) == 0))) && Class1.smethod_0().FileSystem.FileExists(Class20.string_8 + "\syspnam730.dll"))
{
Class1.smethod_0().FileSystem.DeleteFile(Class20.string_8 + "\syspnam730.dll");
}
int num = Conversions.ToInteger(value);//年 <=2030
int num2 = Conversions.ToInteger(value2);//月 1-12
int num3 = Conversions.ToInteger(value3);//日 1-28
if ((num3 < 1) | (num3 > 28) | (num < 2013) | (num > 2030) | (num2 < 1) | (num2 > 12) | (num < DateAndTime.Now.Year) | ((num == DateAndTime.Now.Year) & (num2 < DateAndTime.Now.Month)))
{
this.vmethod_0().Text = "注册码不对!";
}
else if (this.short_0 == 1)
{
this.method_1(this.vmethod_8(), new EventArgs());
}
else if (Strings.Len(Strings.Trim(this.vmethod_4().Text)) == 0)
{
this.vmethod_0().Text = "您没有输入姓名。";
}
else if (Strings.Len(text3) == 0)
{
this.vmethod_0().Text = "您没有输入注册码。";
}
//机器码和注册码比较
else if (Class18.smethod_3(ref text, ref text3) & !File.Exists(Class20.string_8 + "\syspnam730.dll"))
{
Class1.smethod_0().Registry.SetValue("HKEY_CURRENT_USER\Software\NanfangSoft .net\ProName730", "Name", this.vmethod_4().Text);
string text9 = Strings.UCase(text3);
Class20.smethod_11(ref text, ref text9, ref value, ref value2, ref value3);
Class20.bool_0 = true;
this.vmethod_0().Text = "注册成功!点击'退出',您现在可以使用本程序了。";
}
else
{
this.vmethod_0().Text = "注册码不对!";
}
}
}
int num4;
if (num4 != 0)
{
ProjectData.ClearProjectError();
}
}

分析可知:注册码长度15位,1-4位+9-12位为机器码转换信息,5、6位授权年份信息,7、8位授权月份信息,13、14位授权日信息,第15位1或2固定。

且年<=2030年,月:1-12,日:1-28,授权的时间信息比较简单,看相应代码即可。

机器码和注册码比较Class18.smethod_3(ref text, ref text3)


跟进看一下,调用太复杂,不容易得到算法,也是原贴楼主困惑的地方,相互调用太多了,直接挖代码可能有难度,换个思路直接反射调用。

注册机编写

试了下反射调用成功。
获取机器码:


机器码转换:

注册码拼接:

搞定~~~

食用说明

仅限于学习交流,请勿用于商业或非法用途。

点评

同样是15年老会员,你为什么这么优秀  发表于 2024-1-16 20:18

免费评分

参与人数 115吾爱币 +119 热心值 +102 收起 理由
xumanwei + 1 + 1 热心回复!
xhui999w + 1 + 1 959楼,求大佬给个注册码
Delusion0 + 1 + 1 23021-77338-62920-20730各位大佬,在线求助攻啊~
马云的叔叔 + 1 用心讨论,共获提升!
dan531 + 1 + 1 我很赞同!
乐天骥 + 1 鼓励转贴优秀软件安全工具和文档!
执笔画流年 + 1 + 1 00425-00000-00002-AA158 求大佬助攻~
jadephoenix + 1 + 1 谢谢@Thanks!
yssyvt + 1 我很赞同!
dyoulinghot + 1 + 1 热心回复!
LuChao + 1 热心回复!
Lanly + 1 + 1 我很赞同!
红桃 + 1 + 1 谢谢@Thanks!
黄昏刺痛了眼 + 1 + 1 谢谢@Thanks!
gforgg + 1 + 1 我很赞同!
xgwzz + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
吾爱VIP + 1 用心讨论,共获提升!
小蚂蚁哈哈乐 + 1 92081-29574-61760-20730 Administrator 求大佬助攻一下
一念逍遥 + 1 + 1 用心讨论,共获提升!
LuckyClover + 1 + 1 谢谢@Thanks!
nizeze + 1 + 1 用心讨论,共获提升!
hcj291363 + 1 + 1 我很赞同!
球球耶 + 1 谢谢@Thanks!
dzzzsh + 1 + 1 谢谢@Thanks!
p100200300 + 1 + 1 我很赞同!
ggg891080 + 1 + 1 我很赞同!
Twenty2k + 1 + 1 谢谢@Thanks!
wei5383079 + 1 + 1 用心讨论,共获提升!
iTMZhang + 1 + 1 用心讨论,共获提升!
kraretto + 1 + 1 我很赞同!
jjkkii + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
99caozhi + 1 + 1 我很赞同!
LongQvQ + 1 + 1 谢谢@Thanks!
yinchadeyu + 1 + 1 谢谢@Thanks!
myisdd + 1 谢谢@Thanks!
song79 + 1 + 1 用心讨论,共获提升!
爱上好邻居 + 1 + 1 谢谢@Thanks!
sunnyhill + 1 + 1 谢谢@Thanks!
lrhdabb + 1 + 1 学到了很多
victor + 1 + 1 谢谢@Thanks!
O炮酱 + 1 + 1 我很赞同!
xtdn + 1 + 1 谢谢@Thanks!
北方人 + 1 + 1 谢谢@Thanks!
hnclwyz + 1 + 1 我很赞同!
gaoqingyou + 1 + 1 我很赞同!
hbzjhg + 1 我很赞同!
潘叟box + 1 热心回复!
wasdzjh + 1 + 1 反射调用是专业术语吗?写注册机还需要看懂代码,对新手太难了
success67567381 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gfm2005520 + 1 + 1 热心回复!
xuaa1 + 1 + 1 热心回复!
HeartBeats + 1 + 1 谢谢@Thanks!
yzyuan007 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
qiaoyong + 1 + 1 热心回复!
dreamxhua + 1 我很赞同!
7758 + 1 谢谢@Thanks!
ziyuejun + 1 我很赞同!
wszjf + 4 + 1 谢谢@Thanks!
fengbolee + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
leigevip + 1 + 1 用心讨论,共获提升!
baohe + 1 谢谢@Thanks!
tvrcfdfe + 1 + 1 我很赞同!
heiyue003 + 1 + 1 谢谢@Thanks!
davidyxwj + 2 + 1 谢谢@Thanks!
Issacclark1 + 1 谢谢@Thanks!
lishixin23 + 1 + 1 用心讨论,共获提升!
ytfh1131 + 1 + 1 谢谢@Thanks!
billet-doux + 1 用心讨论,共获提升!
awen1344 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
vince163 + 1 + 1 我很赞同!
weiys20032 + 1 谢谢@Thanks!
xuanle6 + 1 + 1 直接修改ar.cs文件中c()子程序的代码就可以免注册使用,成品在329楼
318142388 + 1 + 1 谢谢@Thanks!
lyhan + 1 + 1 虽然看不懂,但我大受震撼
无名3659! + 1 + 1 用心讨论,共获提升!
ind + 1 + 1 我很赞同!
我不是坏人 + 1 + 1 谢谢@Thanks!
dork + 2 + 1 用心讨论,共获提升!
klmytwb + 1 + 1 谢谢@Thanks!
jwb_136 + 1 + 1 谢谢@Thanks!
af8889 + 1 + 1 好心人帮助一下:02401-77338-62920-20730 Administrator
dadao815 + 1 + 1 用心讨论,共获提升!
xlwllm + 1 + 1 谢谢@Thanks!
逐风之雷霆之怒 + 1 + 1 用心讨论,共获提升!
马云爱逛京东 + 3 + 1 谢谢@Thanks!
QX5320 + 1 + 1 热心回复!
soyiC + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
一个小游客 + 1 + 1 我很赞同!
jackyyue_cn + 1 + 1 谢谢@Thanks!
gaibang2023 + 1 谢谢@Thanks!
white526 + 1 + 1 我很赞同!
b176877840 + 1 + 1 用心讨论,共获提升!
黄金体验 + 1 + 1 热心回复!
慕名怀旧 + 2 + 1 我很赞同!
xuepojie + 1 + 1 用心讨论,共获提升!
zhanglei1371 + 2 + 1 用心讨论,共获提升!
卑鄙的你 + 1 + 1 热心回复!
挺好一男的 + 2 + 1 热心回复!
aniu + 4 + 1 用心讨论,共获提升!
trueray + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
dork 发表于 2024-1-15 22:48
本帖最后由 dork 于 2024-1-15 22:49 编辑

从来没有接触过C#,用 了二个小时终于编译出来EXE了

免费评分

参与人数 1吾爱币 +1 收起 理由
隔壁老赵 + 1 我很赞同!

查看全部评分

推荐
云在天 发表于 2024-1-15 18:27
反射方法是很好,但纯算法还是值得分析的

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
小朋友呢 + 2 + 1 用心讨论,共获提升!

查看全部评分

推荐
b176877840 发表于 2024-1-14 22:35
yangxiaofeng 发表于 2024-1-14 22:21
52604-77305-62920-20730
注册人姓名 Administrator
求助攻!!!

37319F7CR221C82

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
乐天骥 + 1 + 1 谢谢@Thanks!
yangxiaofeng + 1 + 1 我很赞同!

查看全部评分

推荐
ppszxc 发表于 2024-1-13 00:11
谢谢楼主,又学了一招。

新建位图图像.jpg (30.19 KB, 下载次数: 30)

新建位图图像.jpg
推荐
nojon 发表于 2024-1-16 09:26
楼主再出一个反射教程就好了,小白们好学习学习
推荐
dork 发表于 2024-1-16 10:26
waynevan 发表于 2024-1-16 10:12
大佬 帮我算下,谢谢,给你热心
谁帮我算下 谢谢,给你点热心
00352-79418-62920-20730

7N529J7BN754B12

免费评分

参与人数 2吾爱币 +3 热心值 +2 收起 理由
乐天骥 + 2 + 1 谢谢@Thanks!
waynevan + 1 + 1 谢谢@Thanks!

查看全部评分

推荐
3yu3 发表于 2024-1-12 11:29
反射用法炉火纯情,值得一学。。。

免费评分

参与人数 1吾爱币 +1 收起 理由
banckfqu + 1 有人有7.36版的起名程序吗?传送门https://www.52pojie.cn/forum.php?mod=v.

查看全部评分

推荐
ixhao 发表于 2024-1-12 15:42
看到这篇文章,我在另一篇文章看到你的评论,谁懂我的笑点哈哈哈哈

免费评分

参与人数 2吾爱币 +3 收起 理由
大鸽鸽 + 2 我很赞同!
zxinyun + 1 同笑。

查看全部评分

推荐
 楼主| ps122 发表于 2024-1-12 12:48 |楼主

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
ljm57 + 1 + 1 用心讨论,共获提升!
G下属破解小分队 + 1 + 1 解压密码:www.downcc.com
jyjjf + 1 + 1 谢谢@Thanks!

查看全部评分

推荐
yinyiyisheng 发表于 2024-1-12 19:07
手打,不行啊
Assembly assembly = Assembly.LoadFrom("南方专业起名7.3.0.exe");
type = assembly.GetField ("Clss15");
type.GetMethod("smethoh_3").Invoke(null,null);
txtId.Text=type.GetField("string_1").GetValue(null).Tostring();
string jqm=txId.text.Trim();
if (jqm=="") return;
type.GetMethod("smethod_5").Invoke(null,new object[]{jqm});
string str1=type.GetField("string_2").GetField("string_2").GetValue(null).ToString();
string str2=txtSC.Text.Trim();
string str2=Convert.ToDateTime(str2).ToString("yyyyMMdd");
string []year3={"8","9","C"};
string []year41={"0","1","2","3","4","5","6","7","8","9"};
string []year41={"A","B","C","D","E","F","G","H","J","K"};
string []month10={"4","5"."A"};
string []month11={"6","7"."B"};
Random rd =new Random();
int i =rd.Next(0,2);
string y3 = str3.Substring(2,1);
string y4 = str3.Substring(3,1);
string m1 = str3.Substring(4,1);
string m2 = str3.Substring(5,1);
string d1 = str3.Substring(6,1);
string d2 = str3.Substring(7,1);
string[] month=month10;
if(m1=="1")month=month11;
string zcCode=str1.Substring(0,4)+
year3[i]+year42[Array.Indexof(year41,y4)]+
month[i]+year42[Array.Indexof(year41,m2)]+
str1.Substring(4,4)+
year42[Array.Indexof(year41,d1)]+d2+
"2";


头像被屏蔽
3#
随便去取 发表于 2024-1-12 11:40
发下课件
4#
xwawa 发表于 2024-1-12 11:57
好好好,学习了
5#
银游侠 发表于 2024-1-12 11:59
机呢?哈哈哈…………
6#
LuckyClover 发表于 2024-1-12 12:11
感谢大佬出手
7#
qqycra 发表于 2024-1-12 12:12
这个方式看的少,条条大路通罗马,何必单恋一枝花
8#
summer383 发表于 2024-1-12 12:15
注册机在哪里?
9#
blindcat 发表于 2024-1-12 12:19
又学到一招。感谢大佬分享
10#
weiantang 发表于 2024-1-12 12:24
发下代码课件
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 02:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表