tmsdy 发表于 2015-3-30 00:37

哪怕不懂算法,一样可以做算法注册机 【c#程序】

本帖最后由 tmsdy 于 2015-3-30 00:46 编辑

【软件名称】: excel分割器
【下载地址】: http://www.ay10086.cn/content/?123.html
【验证方式】: 重启验证
【作者声明】: 只是出于对破解感兴趣,没有其他目的。以下分析破解仅用于交流,请支持正版软件。

首先打开软件看下,随便输入几个字符注册,无提示文字,只有错误符号。有使用次数限制应该是把次数存在注册表了。

查壳之后是c#,上NET Reflector。分分钟找到了注册窗口的注册按钮,如下图。

看来是调用了 IsCorrectSn这个函数来进行校验。把机器码和输入的字符进行检验。打开这个函数,如图

可以看到算法非常简单,弄清楚算法之后就要想这个 cid是怎么来的,如上图,点击 Analyze
在软件打开时,即MainFr打开时会检验,那么肯定会获取到这个机器码。打开看一下便知道,如图

关键算法中的 cid 看来就是这个 new HardWare().GetCpuID(),再次跟进去看看,如图:

获取CPUID的算法也出来了。现在要做的就是打开VS,复制粘贴,即可写出注册码。

代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using System.Management;

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
      public Form1()
      {
            InitializeComponent();
      }



      private void Form1_Load(object sender, EventArgs e)
      {
            Hardware.HardwareInfo hd = new Hardware.HardwareInfo();
            string cid = hd.GetCpuID();
            char[] chArray = cid.ToCharArray();
            string str = "";
            for (int i = 0; i < chArray.Length; i++)
            {
                str = str + (((chArray + i) + 2)).ToString();
            }
            richTextBox1.Text = cid;
            textBox1.Text = str;

      }
    }
}
namespace Hardware
{
    /// <summary>
    /// Hardware_Mac 的摘要说明。
    /// </summary>
    public class HardwareInfo
    {
      //取CPU编号
      public String GetCpuID()
      {
            try
            {
                ManagementObjectCollection instances = new ManagementClass("Win32_Processor").GetInstances();
                string str = null;
                foreach (ManagementObject obj2 in instances)
                {
                  str = obj2.Properties["ProcessorId"].Value.ToString();
                  break;
                }
                return str;
            }
            catch
            {
                return "BFABCBFF0001056A";
            }

      }//end method

    }
}



稍微摆下界面。
运行,OK,注册成功。



因为过程太简单了,就不放注册机了。有兴趣的自己做吧。
其实选择这个方式是因为我实在是不懂IL指令啊!!!!
后来发现,只要修改下注册表项的权限,软件读取不到已运行次数,就可以一直使用了。。。。。

NewType 发表于 2015-3-30 00:55

感谢楼主分享分享!

brakefast 发表于 2015-3-30 00:58

不明觉厉,感谢分享了哈,学习之~

积极地小猪 发表于 2015-3-30 02:51

好厉害!

qaz8936086 发表于 2015-3-30 05:01

不明诀力- -

rsice 发表于 2015-3-30 06:46

学到了!感谢分享!

稻草 发表于 2015-3-30 06:51

学习下,用的是什么软件啊?

tmsdy 发表于 2015-3-30 06:56

稻草 发表于 2015-3-30 06:51
学习下,用的是什么软件啊?

VS 2008

yysniper 发表于 2015-3-30 07:00

这个不错,弄net程序这样最方便

yunfeng 发表于 2015-3-30 07:18

思路很不错,学习一下。
页: [1] 2 3 4 5
查看完整版本: 哪怕不懂算法,一样可以做算法注册机 【c#程序】