本帖最后由 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,复制粘贴,即可写出注册码。
代码如下:
[C#] 纯文本查看 复制代码 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指令啊!!!!
后来发现,只要修改下注册表项的权限,软件读取不到已运行次数,就可以一直使用了。。。。。
|