《奧數2000》註冊碼的計算(VB5程式) (6千字)
標 題:《奧數2000》註冊碼的計算(VB5程式)
發信人:laoqian
軟體簡介機序號產生器制:奧數2000未註冊時只有“考試介紹”等功能。當您註冊後成為註冊使用者時,下一步視窗的多個子視窗:“奧數課堂”
、“招生考試及競賽”、“奧賽2001”等可供使用。它們包括初、中、高階奧數訓練題及重點初中招生考試試題, 試題包括圖形、計算等多種形式試題,題庫將有兩千多道精選試題供您使用。VB
5.0程式,註冊時程式根據硬碟序列號不同產生軟體的序列號,因此每臺機器每次產生的的序列號是不同的,我們的目標就是分析其註冊碼的產生過程,作序號產生器。
使用工具:SmartCheck 6.20
註冊計算過程:
首先安裝《奧數2000》,執行SmartCheck,配置好SmartCheck後,load奧數2000,進入註冊視窗,顯示“本機硬體程式碼”:010061134(這是我的機,你的肯定不一樣)在“本軟體作者提供的註冊碼
”填入:123456789(註冊碼當然是假的,只是為了好記,必須9位,有提示) 再按註冊,這時跳出一個對話方塊.....,退出《奧數2000》。然後,再次load奧數2000,直到見到註冊提示視窗。
切換到NuMega SmartCheck的主視窗。 軟體執行過程可以在SmartCheck看到,
展開Image1_Click。(就是前面帶+的Click)
我們來到 “Form11 (Form) created”,往下看:
Text4.Text <-- "010" (String)
String "010"
Integer
(1) --> Long (1)
Integer 1
Long 1
......來到
Integer (6)
--> Long (6)
Integer 6
Long 6
Text4.Text <-- "010061134" (String)
String "010061134"
<======這是我的“本機硬體程式碼”,往下看:
這時需要展開詳細資訊,你不會?我X
Mid(VARIANT:String:"010061134..", long:4, VARIANT:Integer:6)
Arguments
--------------------
string (variant)
String
.bstrVal = 00615654
= "010061134"
Long length = 4 0x00000004 <======從第4位開始
start
(variant)
Integer .iVal = 6 0x0006
<======取6個數字
__vbaVarMove(VARIANT:String:"061134", VARIANT:Empty)
returns DWORD:83F784
Arguments
--------------------
pSource
(variant)
unsigned short * .bstrVal = 0061560C
= "061134" <======取6個數字得到
pDest (variant)
unsigned short .vt = 0 0x0000
<======"061134"為計算註冊碼的關鍵數
............
再往下看:
Text2.Text
Mid(VARIANT:String:"loca=123...", long:6, VARIANT:Integer:6)
Arguments
--------------------
string (variant)
String
.bstrVal = 007102C4
= "loca=123456789
<======這是我的假“註冊碼”,往下看:
"
Long length = 6 0x00000006
start (variant)
Integer .iVal = 6 0x0006
__vbaVarMove(VARIANT:String:"123456",
VARIANT:Empty) returns DWORD:83F81C
Arguments
--------------------
pSource (variant)
unsigned short * .bstrVal = 00615654
= "123456"
<======取前6個數字
pDest (variant)
unsigned
short .vt = 0 0x0000
<======"123456"以後會與"061134"計算出的註冊碼比較
....................
__vbaVarMul(VARIANT:String:"061134", VARIANT:Integer:18)
<======乘法
Arguments
--------------------
lhs (variant)
unsigned short * .bstrVal = 0061560C
= "061134"
rhs (variant)
signed short .iVal
= 18 0x0012 <======061134*18
__vbaVarMul returns DWORD:83F734
__vbaVarAdd(VARIANT:Double:1.10041e+006, VARIANT:Long:2498699) returns DWORD:83F724
<======加法
Arguments
--------------------
lhs (variant)
double .dblVal = 1100412. <====== 061134*18=1100412
rhs (variant)
signed long .lVal = 2498699 0x0026208B
<====== 1100412+2498699
__vbaVarMove(VARIANT:Double:3.59911e+006,
VARIANT:Empty) returns DWORD:83F774
Arguments
--------------------
pSource (variant)
double .dblVal = 3599111. <======
1100412+2498699=3599111
pDest (variant)
unsigned short
.vt = 0 0x0000
...............
Mid(VARIANT:Double:3.59911e+006, long:2,
VARIANT:Integer:6)
Arguments
--------------------
string (variant)
double .dblVal = 3599111.
Long length = 2 0x00000002
<======從第2位開始
start (variant)
Integer
.iVal = 6 0x0006 <======取6個數字
Mid
__vbaVarMove(VARIANT:String:"599111",
VARIANT:Empty) returns DWORD:83F7CC
Arguments
--------------------
pSource (variant)
unsigned short * .bstrVal = 006156E4
= "599111"
<======取6個數字得到我雞的關鍵數
pDest (variant)
unsigned
short .vt = 0 0x0000
..............
再往下看:怎樣對待"599111",找到以下mid
Mid(VARIANT:String:"599111", long:1, VARIANT:Integer:1)
Arguments
--------------------
string (variant)
String
.bstrVal = 006156E4
= "599111"
Long
length = 1 0x00000001 <======取"599111"的第1位數
start (variant)
Integer .iVal = 1 0x0001
Mid(VARIANT:String:"599111", long:3, VARIANT:Integer:1)
Arguments
--------------------
string (variant)
String .bstrVal
= 006156E4
= "599111"
Long
length = 3 0x00000003 <======取"599111"的第3位數
start (variant)
Integer .iVal = 1 0x0001
Mid(VARIANT:String:"599111",
long:5, VARIANT:Integer:1)
Arguments
--------------------
string (variant)
String .bstrVal = 006156E4
= "599111"
Long length = 5 0x00000005
<======取"599111"的第5位數
start (variant)
Integer .iVal = 1 0x0001
Mid(VARIANT:String:"599111",
long:2, VARIANT:Integer:1)
Arguments
--------------------
string (variant)
String .bstrVal = 006156E4
= "599111"
Long length = 2 0x00000002
<======取"599111"的第2位數
start (variant)
Integer .iVal = 1 0x0001
Mid(VARIANT:String:"599111",
long:4, VARIANT:Integer:1)
Arguments
--------------------
string (variant)
String .bstrVal = 006156E4
= "599111"
Long length = 4 0x00000004
<======取"599111"的第4位數
start (variant)
Integer .iVal = 1 0x0001
Mid(VARIANT:String:"599111",
long:6, VARIANT:Integer:1)
Arguments
--------------------
string (variant)
String .bstrVal = 006156E4
= "599111"
Long length = 6 0x00000006
<======取"599111"的第6位數
start
(variant)
Integer .iVal = 1 0x0001
.......
__vbaVarMove(VARIANT:String:"591911", VARIANT:Empty) returns DWORD:83F7BC
Arguments
--------------------
pSource (variant)
unsigned short * .bstrVal = 00615794
= "591911" <======由上面得到我雞的關鍵數
pDest
(variant)
unsigned short .vt = 0 0x0000
............
再往下看:怎樣對待"591911",找到以下:
__vbaVarTstEq(VARIANT:String:"591911",
VARIANT:String:"123456") returns DWORD:0
Arguments
--------------------
lhs (variant)
unsigned short * .bstrVal = 00615794
= "591911"
rhs (variant)
unsigned short * .bstrVal = 00615654
=
"123456"
<======"591911"與"123456"比較是否相等,相等即註冊成功!!!
看明白了嗎,我的註冊碼為9位數"591911***",其中*為任意字元
至於序號產生器,我就不寫了。
序號產生器演算法:
“本機硬體程式碼”為A(例如,010061134),從A第4位開始取6個數字得到B(061134),C=B*18+2498699
從C第2位開始取6個數字得到D(六位數),依次取D的1,3,5,2,4,6位,組成新數E,再在E的末尾加3個任意字元,得到你機的9位數註冊碼。
相關文章
- myeclipse6 0註冊碼收藏2018-11-12Eclipse
- 一條命令計算 Laravel 專案中註冊的路由數量2019-09-02Laravel路由
- Vue2.0原始碼學習(6) - 元件註冊2022-02-22Vue原始碼元件
- gitee(碼雲)的註冊和程式碼提交【手把手】2024-04-28Gitee
- Dynamics CRM 用程式碼註冊Plugin Step2018-07-20Plugin
- 探索Lighthouse效能分數計算背後的奧秘2023-09-27
- PhpStorm註冊碼2020-04-07PHPORM
- VMware註冊碼2018-10-18
- ShadowDefender 註冊碼 分析2024-08-17
- Viscosity for Mac 註冊碼:2019-09-19Mac
- Navicat for MySQL註冊碼2020-04-07MySql
- C#“未在本地計算機上註冊“Microsoft.ACE.OLEDB.12.0”提供程式”的解決方案2024-10-29C#計算機ROS
- 6-2 計算素數和2024-04-11
- 程式碼編輯器:sublime text for Mac 註冊版2023-12-28Mac
- 註冊中心 Eureka 原始碼解析 —— 應用例項註冊發現(一)之註冊2019-03-03原始碼
- wing ftp server 註冊碼2020-11-23FTPServer
- phpstrom 註冊碼獲取2018-05-23PHP
- PLSQL Developer 12 註冊碼2018-06-07SQLDeveloper
- [electron]終極奧義 五千字教程丟給你2018-09-18
- 計算圓的面積程式碼2024-09-28
- python的個稅計算程式碼2018-06-27Python
- 直播平臺開發,jsp登入註冊程式碼2022-12-23JS
- etcd套路(九)註冊服務中心程式碼封裝2020-08-27封裝
- 登陸註冊頁面html程式碼(仿知乎)2020-12-08HTML
- sublime text for Mac註冊啟用 sublime text4註冊碼2023-10-11Mac
- Laravel 6.x 為註冊或登入元件新增驗證碼2019-10-30Laravel元件
- VMware Workstation各個版本的註冊碼2020-11-13
- mybatis原始碼解析(四)--- MapperStatement的註冊2018-05-14MyBatis原始碼APP
- 今天好多人 phpstrom 編譯器註冊碼失效了,最新可用註冊碼2019-12-24PHP編譯
- Mac裝機必備程式碼編輯工具:sublime text for Mac 註冊啟用版 附 註冊碼 支援M12023-11-23Mac
- 程式設計師是否有義務做好程式碼的註釋?你做好程式碼註釋了嗎?2019-01-21程式設計師
- JProfiler v14.0.0註冊碼2023-10-12
- datagrip 2021.1啟用註冊碼2021-04-22
- IntelliJ IDEA 註冊碼啟用2018-08-07IntelliJIdea
- 微信小程式註冊流程2018-04-23微信小程式
- HDOJ2000題Java程式碼2019-01-15Java
- iOS逆向——Method Swizzle及WeChat註冊、登入程式碼示例2019-10-17iOS
- 6.Zookeeper服務註冊與發現2020-12-20
- Navicat for MySQL 11註冊碼\啟用碼2019-02-11MySql