UltraEdit注册机原理

By:大志若愚

  UltraEdit 是 Windows 下一款流行的老牌文本/HEX 编辑器(非开源)。UltraEdit 正被移植到 Linux 平台。该移植名为 UEX,意即 UltraEdit for Linux。UEX具有原生的 Linux 外观,其界面、配置、热键等与 Windows 版并无二致。对其破解以注册机为最,本文简单的解释了下破解原理。

本文仅仅只是对UltraEdit注册机的反编译,了解UltraEdit注册机的原理。

  闲着无事反编译了——UltraEdit注册机,了解了其中的原理。以简单的WinForm程序展示给大家,最主要的无非是对用户码1、用户码2的加密,也可以说是解密[无非对谁来说罢了]。

  界面如下:

  编辑环境:Microsoft Visual Studio 2010

  C#源码百度网盘下载地址:http://pan.baidu.com/s/1ehpKU

核心代码展示:

 // num1为用户码一,num2为用户码二,返回的为验证码一,验证码二不变。
public long GetKey(long num1, long num2) {
  return (((((((((num1 >> 0x13) & ) * 0x57a8) + (((num1 >> ) & 0x1f) * 0x50af)) + (((num1 >> ) & 0x3f) * 0x1694)) + (((num1 >> 0x17) & 0xff) * 0x300)) + ((num1 & 0xff) * )) + (num2 * )) + 0xb200c0);
}

呵呵,来拆分下:

(
(
(
(
(
(
(((num1 >> 0x13) & ) * 0x57a8)
+ (((num1 >> ) & 0x1f) * 0x50af)
)
+ (((num1 >> ) & 0x3f) * 0x1694)
)
+ (((num1 >> 0x17) & 0xff) * 0x300)
)
+ ((num1 & 0xff) * )
)
+ (num2 * )
)
+ 0xb200c0
)

呵呵,来分析下:

  最好的方法就是让num1=num2=0,直接得出返回值:0xb200c0即十进制数:11665600

  当num1与num1足够小(取0x13,8,13,0x17中的最小值:8)的时候,小于等于8位[2^9-1]的时候就可以看做没有移位操作了,因为此时的移位操作会使该小项为0。

其中:

计算器只能识别和处理2进制数,所以计算机对2进制的处理速度最快,但是相同位数,二进制表示范围最小,但是8进制,16进制转为2进制的速度远远高于10进制数(虽然这个时间差我们感觉不出来,但确实很大),所以一般处理采取16进制数了。

数的含义:

  我把:16进制数转为了10进制数,其实计算器对2进制数的识别比较高,速度最快,

  16进制数转为2进制数速度也很快,16位数的一位对应2进制数的4位。

    比如:0x6=0110[2进制]

  0x:开头表示16进制数,0开头则表示8进制数,没有特殊说明一般就是10进制数了。

    0x13=19

    0x57a8=22440

    0x1f=31

    0x50af=20655

    0x3f=63

    0x1694=5780

    0x17=23

    0xff=255

    0x300=768

    0xb200c0=11665600

运算符的含义:

  >> :右移运算符

    位运算,操作对象为位即(0/1)

      该运算符为双目运算符,

    结合方向:从左到右

          作用:

      把一个整型数的所有位向右移动指定的位数,移动到右边界之外的多余二进制位会被丢弃,并从左边界移入0。

      右移运算的两个操作数应为整数类型:

        第一个操作数是要进行移位操作的数

        第二个操作数指定第一个操作数移动的位数。

        如果第二个操作数等于0则不发生任何移位。

     应用举例:

        问:计算表达式14 >> 2的值。

        答:表达式14 >> 2的值为3,因为14(即二进制的00001110)向右移两位等于3(即二进制的00000011)。

  &  :按位与

    位运算,操作对象为位即(0/1)

    该运算符为双目运算符,

    规则:

      1&1=1; 1&0=0; 0&1=0; 0&0=0

这里就是进行移位和与操作,其中“位”操作改变大小,而“与”操作则改变其逻辑---ture & true = 1,这样实现的加密比较不容易破解,但是还是有某位“大神”破解了,本人只是偷看了他的代码,在这里感谢下他。

    呵呵,有点眉目了吧,观摩下。以后可以自己写写属于自己的加密算法。

    如果不想让自己的代码被别人看到,就需要加下“壳”了。

UltraEdit注册机原理简单说明的更多相关文章

  1. UltraEdit 注册机

    IDM-All-Products-KeyGen-v3.6UltraEdit 注册机 1.断开网络连接,运行UltraEdit软件后,点击“帮助”—“注册/激活”; 2.许可证ID填写“zd423”.密 ...

  2. UltraEdit注册机 及使用方法详解

    转载自:http://www.iyaxi.com/ultraedit-key/ UltraEdit是一款强大的文字编辑器,很多编程的.搞设计的等等都能用到它,具体功能请自行百度.今天为大家带来UE软件 ...

  3. UltraEdit 注册机使用说明

    请断开网络连接(或直接拔掉网线)后执行: 安装完成后,点击弹出界面的“注册”按钮,然后直接点击“激活”,此时UltraEdit检测到网络断开则弹出界面提示“脱机激活”,此时启动注册机,并将UltraE ...

  4. UltraEdit v17.10.0,注册机,注册码

    1,UltraEdit注册机 :点击下载 2,断掉网络,进入UltraEdit软件,依次点击:帮助——注册/激活——激活,会提示你进行脱机激活,点击脱机激活后,将用户码1和用户码2 分别输入注册机的u ...

  5. UltraEdit工具安装和注册机破解

    1.关闭网络连接(或者直接拔掉网线). 2.打开UltraEdit软件,稍等片刻会出现提示你你使用的是试用版本的窗口.如下图,点击“注册”. 3.填写许可证id和密码.许可证id可任意填写,不过根据经 ...

  6. UltraEdit等软件详细安装破解教程,附注册机(全网独家可用)

    --- title: "UltraEdit等软件详细安装破解教程,附注册机(全网独家可用)" categories: soft tags: soft author: LIUREN ...

  7. OD 实验(十八) - 简单注册机的编写

    程序: 运行 这是一个注册机 随便输入点内容,点击 Check 弹出错误的对话框 逆向: 用 OD 载入程序 在文本框处下断点 按 Alt+B 查看断点 这个断点在动态链接库那里 跑一下程序,输入内容 ...

  8. [原创]VB注册机独辟蹊径-----注册机也可以这样写

    近段时间接了个项目,是关于一个称重传感器的上位机系统,需要一机一码针对不同的客户机分别注册,第一次注册完后,下次打开后不必注册. 刚开始想用正规的注册机办法去完成,搜罗了半天,发现现在大部分的硬盘注册 ...

  9. PostSharp 4.0注册机实现过程

    PostSharp是基于.NET平台设计的比较强调易学易用的AOP框架. 什么是AOP? http://wayfarer.cnblogs.com/articles/241024.html 新版的已失效 ...

随机推荐

  1. CPU调度算法

    批处理系统中的调度算法: *需要考虑的因素: 1. 吞吐量 2. cpu利用率 3. 周转时间 4. 公平性* 1.先来先服务: FCFS: 优点:实现简单 缺点:可能造成周转时间长 2.最短作业优先 ...

  2. python coding style guide 的高速落地实践

    python coding style guide 的高速落地实践 机器和人各有所长,如coding style检查这样的可自己主动化的工作理应交给机器去完毕,故发此文帮助你在几分钟内实现coding ...

  3. Linux内核编译过程分析

    http://pan.baidu.com/s/1mgtACVu 其中是我总结生成的一些文档,以便于理解当我们输入make uImage后,系统是怎么一步一步生成uImage的,我采用的是逆向分析的方法 ...

  4. 模式识别之基础---mqdf分类器==MQDF改进的二次分类器

    QDF假设样本符合高斯分布,通过估计均值与协方差矩阵,训练分类器.但是由于特征维数较高,时空复杂度较高.(协方差矩阵的维数为 特征维数*特征维数).而且协方差矩阵往往存在不满秩无法求逆的情况(样本数& ...

  5. Android-理解window和windowmanager

    1.window和windowmanager的关系 window是一个抽象类,具体实现为phoneWindow.创建一个window可以通过windowmanager来实现. window的具体实现在 ...

  6. 使用Reveal来查看别人的APP界面+白苹果不刷机解决方式

    Reveal这个强大的界面调试工具.能够实时查看.改动view的属性,大体上实现了iOS程序猿梦寐以求的功能.比方,有时候我们加入了一个view,可是那个view死活不显示出来,这时候祭出Reveal ...

  7. python 基础 2.8 python练习题

    python 练习题:   #/usr/bin/python #coding=utf-8 #@Time   :2017/10/26 9:38 #@Auther :liuzhenchuan #@File ...

  8. 在java项目中使用protobuf

    1 通用方式 第一步,定义数据结构 第二步,使用protoc.exe生成java代码 第三步,序列化 第四步,反序列化 2 grpc方式 grpc官方推荐的方式,通过maven插件来生成java代码. ...

  9. git拉取远程分支到本地分支或者创建本地新分支

    git fetch origin branchname:branchname 可以把远程某各分支拉去到本地的branchname下,如果没有branchname,则会在本地新建branchname g ...

  10. OEM7GRUB 0.4.4 2009-11-18

    windows7电脑重装系统后, 启动不了, 提示这个错误: Error: OEM7GRUB 0.4.4 2009-11-18...... 解决办法: 用PE系统进入后, 运行DiskGenius软件 ...