UltraEdit注册机原理简单说明

摘要:
UltraEdit注册机原理By:大志若愚UltraEdit是Windows下一款流行的老牌文本/HEX编辑器(非开源)。UltraEdit正被移植到Linux平台。该移植名为UEX,意即UltraEditforLinux。UEX具有原生的Linux外观,其界面、配置、热键等与Windows版并无二致。对其破解以注册机为最,本文简单的解释了下破解原理。本文仅仅只是对UltraEdit注册机的反编译,了解UltraEdit注册机的原理。界面如下:编辑环境:MicrosoftVisualStudio2010C#源码百度网盘下载地址:http://pan.baidu.com/s/1ehpKU核心代码展示:1//num1为用户码一,num2为用户码二,返回的为验证码一,验证码二不变。
UltraEdit注册机原理

By:大志若愚

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

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

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

界面如下:

UltraEdit注册机原理简单说明第1张

编辑环境:MicrosoftVisualStudio2010

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

核心代码展示:

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

呵呵,来拆分下:

(
    (
        (
            (
                (
                    (
                        (((num1 >> 0x13) & 15) * 0x57a8) 
                        + (((num1 >> 8) & 0x1f) * 0x50af)
                    ) 
                    + (((num1 >> 13) & 0x3f) * 0x1694)
                ) 
                + (((num1 >> 0x17) & 0xff) * 0x300)
            ) 
            + ((num1 & 0xff) * 3)
        ) 
        + (num2 * 2)
    ) 
    + 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注册机原理简单说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vuecli入门项目实战Oracle AWR报告自动生成并ftp脚本下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#位运算符的基本用法

位运算符包括:| 按位或 OR,& 按位与 AND,^ 按位异或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right Shift,等等。本篇体验位运算符在C#中的应用。主要包括:   ○ 进制转换    ※ 十进制转换成二进制    ※ 二进制转换成十进制○ | 按位或操作符○ & 按...

图片转二进制的两种方式

1 //对图片要求不高的时候建议用jpg,要求比较高的时候用png 2 3 //方式一: 4 //let imageData = UIImagePNGRepresentation(image)! 5 6 //方式二: 7 //参数2(comp...

linux下的二进制文件的编辑和查看

linux下的二进制文件的编辑和查看 一、在Linux下查看二进制文件的软件: xxd (默认2进制) hexdump  (默认16进制,可转其他进制)  od (默认8进制,可转其他进制) 二、编辑: 1、biew 2、hexedit 3、vim Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读取一个文件,改动一个字符,...

【UE】常用的UltraEdit使用技巧

Tip 1: Alt+C 列模式可以说最初选择使用这个文本编辑软件,原因很简单,就是因为“她”具有列编辑模式。如果您还不知道什么是列编辑模式的话,我想您应该好好研究一下啦。这是一个超级“赞”的功能。在对大文本进行批量的列编辑时候非她莫属(如果您是Windows平台上另外一个强大的文本编辑软件gVim的使用者除外)。快实验一下这个功能吧。Tip 2:Ctrl...

[NewLife.XCode]导入导出(实体对象百变魔君)

NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代表作有百亿级大数据实时计算项目。 开源地址:https://github.com/NewLifeX/X(求s...

Apache Thrift系列(一):Thrift基本及IDL语法

一、Thrift介绍   Thrift是一个轻量级、跨语言的远程服务调用框架,最初由Facebook开发,后面进入Apache开源项目。主要包含三大部分:代码生成、序列化框架、RPC框架,相当于protoc + protobuffer + grpc,并且支持大量语言(C++、Go、Java、Python、PHP、Ruby等),是一套全栈式的RPC解决方案...