自己做的一个CM,稍有难度
闲来无事,自己做一个CM,新手可以尝试挑战由于不让上传exe,只能打个包
下载CrackMe是不花CB的,请放心下载 本帖最后由 zbnysjwsnd8 于 2017-7-16 11:40 编辑
简单的写了一下。。(看不懂我说的没事 反正代码说的很清楚了{:301_1001:})
private void ok_Click(object sender, EventArgs e)
{
this.inputN++;
this.input = this.inputText.Text;
if (this.input.Equals(this.right))
{
MessageBox.Show("破解成功");
this.flag = true;
}
}
这段代码就是说 如果输入的注册码 = this.right 就是注册成功
private void CrackMe_Load(object sender, EventArgs e)
{
this.date = this.GetSystemDate();//取出当前的时间(年 + 月 + 日 (比如2017年7月16日 取出来就是2017716))
//取出当前的月份并转换成字符串 记为s1
//取出当前的天数并转换成字符串 记为s2
//a1 = StringToInt(s1 + s2)
//取出当前的天数并转换成整数记为a2
//则a = inputN * (a1 + a2)
this.a = (int.Parse(DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString()) + int.Parse(DateTime.Now.Day.ToString())) * this.inputN;
this.ok_Click("", null);
if (this.flag)
{
this.right = null;
}
else
{
this.right = this.a + this.date + "52pojie";//正确的注册码是IntToString(a) + data + "52pojie"
}
}
但是凭这些还不知道正确的注册码是什么 因为不知道inputN是多少。
然后就找 哪里给inputN赋值
public CrackMe()
{
this.date = "";
this.inputN = 1; //就在这里
this.a = -1;
this.input = "";
this.right = " ";
this.flag = false;
this.components = null;
this.InitializeComponent();
}
这样注册码应该清楚了。今天是2017年7月16日
从上面收集的信息可以得出:
s1 = 7
s2 = 16
则a1 = StringToInt(s1 + s2) = StringToInt(716) = 716
a2 = 16
则a = inputN * (a1 + a2) = 1 * (716 + 16) = 732
则right = IntToString(a) + this.data + "52pojie" = "732" + this.GetSystemDate(); + "52pojie" = "732" + "2017716" + "52pojie"= "732201771652pojie"
故注册码为732201771652pojie
这个注册码仅仅先于今天(除非改过系统时间)
过了今天注册码就变了。
黑龍 发表于 2017-7-16 00:33
我不会玩C# 不知道是不是 不知道怎么不能修改代码
都逆到源码了,这是什么软件? 10KB都不到的EXE。骚操作 我不会玩C# 不知道是不是 不知道怎么不能修改代码
还没学会…… 黑龍 发表于 2017-7-16 00:33
我不会玩C# 不知道是不是 不知道怎么不能修改代码
都到这一步了... 把注册机搞出来呀 _(:3__
没记错 dnspy 可以下断点,你把 `this.right` 的值取出来追个码也好 jixun66 发表于 2017-7-16 07:45
都到这一步了... 把注册机搞出来呀 _(:3__
没记错 dnspy 可以下断点,你把 `this.right` 的值取出 ...
我不会C# 我只是看其他老师使用的dnspy所以想学习一下 截图是猜的 jixun66 发表于 2017-7-16 07:45
都到这一步了... 把注册机搞出来呀 _(:3__
没记错 dnspy 可以下断点,你把 `this.right` 的值取出 ...
还有 谢谢老师指点
嘿嘿。