- UID
- 90634
注册时间2015-5-20
阅读权限10
最后登录1970-1-1
周游历练
TA的每日心情 | 开心 2020-3-18 10:20 |
---|
签到天数: 10 天 [LV.3]偶尔看看II
|
本帖最后由 b30wulf 于 2018-9-1 07:28 编辑
.010Editor的关键词
## 1.密钥是如何生成的?
__NOTICE:本节的内容仅仅是我的怀疑。我无法保证绝对正确,因为`010Editor.exe`中没有符号信息来确认我的怀疑.__
有三种类型的密钥(在010Editor中也称为密码)可以激活010Editor,它们是
|键类型|键长|格式|
| -------------- | ---------- | ----------------------- - |
|评估| 19个字符| xxxx-xxxx-xxxx-xxxx |
| VersionLicense | 19个字符| xxxx-xxxx-xxxx-xxxx |
| TimeLicense | 24个字符| xxxx-xxxx-xxxx-xxxx-xxxx |
`Format`列中的`x`表示十六进制字符,如果是字母则不区分大小写。
在我解释每种键之前,我应该给出一些概念。
* __Daystamp:__我们知道时间戳是自1970年1月1日00:00:00以来的秒数。同样,daystamp是自Jan以来的天数。 1970年1月1日。例如,1月的天数戳1970年2月,是__1__和`Jun。 2018年2月23日是__17705__。
* __Checksum:__我不确定它是否可以称为`checksum`。但我没有更好的词来描述它。 `Checksum`是一个4字节长的数据,与一些参数有关。你可以在`_010EditorKeyGen.hpp`中找到函数`_010Editor :: Keygen <_010Editor :: KeyType :: Base> :: CalculateChecksum`的定义,看看如何计算它。函数`CalculateChecksum`接收4个参数。有
|参数|描述|
| --------------------- | --------------------------- ---------------------------------------- |
| utf8_username |密钥许可的用户名的UTF-8字节。 |
| IsRegistrationVersion |`false`仅适用于`Evaluation`键。否则它必须是'true`。 |
| a3 |未知参数。到目前为止它的含义不明确。 |
| LicenseCount |表示有多少用户可以使用此许可证。必须是1~1000。 |
* __EncodedExpireDaystamp__:这是一个3字节长的数据。 `_010EditorKeygen.hpp`中的函数`_010Editor :: Keygen <_010Editor :: KeyType :: Base> :: EncodeExpireDate`可以对其进行计算。该功能接收2个参数。有
|参数|描述|
| -------------------- | ---------------------------- ----------------------------- |
| DaystampOfExpiration |到期日期戳。必须小于0x1000000。 |
|种子|编码中使用的参数使到期日期戳。 |
* __EncodedLicenseCount__:这是一个2字节长的数据。 `_010EditorKeygen.hpp`中的函数`_010Editor :: Keygen <_010Editor :: KeyType :: Base> :: EncodeLicenseCount`可以对其进行计算。此功能仅接收1个参数。
|参数|描述|
| ------------------- | ----------------------------- ------------------------ |
| DesiredLicenseCount |您想要的许可证数量。必须是1~1000。 |
### 1.1评估密钥
`Evaluation`键由8字节长的数据生成。为了说清楚,我使用
```CPP
unsigned char数据[8];
```
表示8字节长的数据。
`评价`键不能使你的010Editor成为注册版。它只能延长您的010Editor的试用期。
* __data [4] ~data [7] __是__Checksum__并由`CalculateChecksum`函数计算,其中`IsRegistrationVersion = false`,`a3 = 255`和`LicenseCount = 1`。 `utf8_username`基于您的输入。
* __data [3] __必须是`0xFC`。它代表了键的类型。
* __data [0] ~data [2] __是__EncodedExpireDaystamp__并由`EncodeExpireDate`函数计算,其中`DaystampOfExpiration`基于您的输入,`Seed`是__Checksum__。
最后,`Evaluation`键是`data [8]`的十六进制字符串,其中4个十六进制字符由一个块组成,每个块由`“ - ”`(连字符)连接。
### 1.2 VersionLicense Key
“VersionLicense”键也由8字节长的数据生成。为了说清楚,我使用
```CPP
unsigned char数据[8];
```
也表示8字节长的数据。
`VersionLicense`键只能用于指定版本或更旧版本。它没有时间限制。
* __data [4] ~data [7] __是__Checksum__并由`CalculateChecksum`函数计算,其中`IsRegistrationVersion = true`,`a3 = MajorVersion> = 2? 0:MajorVersion`。 `LicenseCount`和`utf8_username`基于您的输入。
* __data [3] __必须是“0x9C”。它代表了键的类型。
* __data [1] ~data [2] __基于__EncodedLicenseCount __,__ data [7] __和__data [5] __。 __EncodedLicenseCount__可以通过`EncodeLicenseCount`函数计算,其中`DesiredLicenseCount`基于您的输入。
```CPP
data [1] = EncodedLicenseCount.bytes [1] ^ data [7];
data [2] = EncodedLicenseCount.bytes [0] ^ data [5];
```
* __data [0] __基于`Major
010
010Editor-keygen-src.rar
(6.04 KB, 下载次数: 18)
|
|