------------------------------------------------------------------------
【破解過程】
------------------------------------------------------------------------
1、字符串查找“您輸入的cdkey和當前的機器碼不匹配,您不能用這個cdkey在這臺機器上使用!”易語言機器碼注冊機,可以找到下面關鍵代碼:
.55 push ebp
.8BEC mov ebp, esp
.83C4 B0 add esp, -50
.53 push ebx
.56 push esi
.57 push edi
.8945 B4 mov [ebp-4C], eax
.B8 mov eax,
.E8 call
.66:C745 C8 08>mov word ptr [ebp-38], 8
.33D2 xor edx, edx
.8955 F8 mov [ebp-8], edx
.8D55 F8 lea edx, [ebp-8]
.FF45 D4 inc dword ptr [ebp-2C]
.8B45 B4 mov eax, [ebp-4C]
.8B80 mov eax, [eax+2FC]
.E8 call
.8D45 F8 lea eax, [ebp-8]
.33D2 xor edx, edx
.8955 F4 mov [ebp-C], edx
.8D55 F4 lea edx, [ebp-C]
.FF45 D4 inc dword ptr [ebp-2C]
.E8 call
.8D45 F4 lea eax, [ebp-C]
.8B08 mov ecx, [eax] ;假碼
.A1 mov eax, []
.51 push ecx ; /Arg2
.8B10 mov edx, [eax] ; |85w
.52 push edx ; |Arg1
.E8 call ; \關鍵Call 《----跟進
.83C4 08 add esp, 8
.BA mov edx, 2
.50 push eax
.8D45 F4 lea eax, [ebp-C]
.FF4D D4 dec dword ptr [ebp-2C]
.E8 call
.FF4D D4 dec dword ptr [ebp-2C] ; |
.8D45 F8 lea eax, [ebp-8] ; |
.BA mov edx, 2 ; |
.E8 call ; \.
.59 pop ecx
.84C9 test cl, cl
0F84 je ;關鍵跳轉。
.B2 01 mov dl, 1
.A1 mov eax, []
.E8 call
.8945 B0 mov [ebp-50], eax ;下面是注冊成功時,寫注冊表信息的操作
.BA mov edx,
.8B45 B0 mov eax, [ebp-50]
.E8 call
.66:C745 C8 14>mov word ptr [ebp-38], 14
.BA mov edx, ;\\\
2、跟進call 可以找到下面關鍵代碼:
|.53 push ebx ; /Arg2
|.33D2 xor edx, edx ; |
|.8955 FC mov [ebp-4], edx ; |
|.8D4D FC lea ecx, [ebp-4] ; |
|.51 push ecx ; |Arg1
|.FF46 1C inc dword ptr [esi+1C] ; |
|.E8 call ; \.
|.66:C746 10 08>mov word ptr [esi+10], 8
|.66:C746 10 20>mov word ptr [esi+10], 20
|.83C4 08 add esp, 8
|.8B45 FC mov eax, [ebp-4] ;這里會出現機器碼
|.33D2 xor edx, edx
|.8D4D F8 lea ecx, [ebp-8]
|.50 push eax
|.53 push ebx
|.8955 F8 mov [ebp-8], edx
|.51 push ecx
|.FF46 1C inc dword ptr [esi+1C]
|.E8 call ;上面機器碼出現了,這個Call肯定要F7了。《---跟進
3、跟進call ,可以找到如下關鍵代碼:
|.52 push edx ; /Arg3
|.53 push ebx ; |Arg2
|.894D F8 mov [ebp-8], ecx ; |
|.50 push eax ; |Arg1
|.FF45 E8 inc dword ptr [ebp-18] ; |
|.E8 call ; \.《----這里時新機器碼字符串生產的算法(1)
|.66:C745 DC 08>mov word ptr [ebp-24], 8
|.8D83 lea eax, [ebx+410]
|.83C4 0C add esp, 0C
|.8338 00 cmp dword ptr [eax], 0
|.74 04 je short
|.8B30 mov esi, [eax] ;固定字符串“”
|.EB 05 jmp short
|>BE mov esi,
|>837D F8 00 cmp dword ptr [ebp-8], 0 ;新的機器碼字符串。由上面的call 生成
|.74 05 je short
|.8B7D F8 mov edi, [ebp-8] ;計算后得到的新字符串。
|.EB 05 jmp short
|>BF mov edi,
|>33DB xor ebx, ebx
|>8A0E /mov cl, [esi] ;cl存放的是固定字符串的第n個字符。n=1,2,...16
|.46 |inc esi
|.66:C745 DC 08>|mov word ptr [ebp-24], 8
|.8A07 |mov al, [edi] ;al存放經過計算機器碼后的新字符串,取16個
|.47 |inc edi
|.8845 CB |mov [ebp-35], al
|. CB |movsx edx, byte ptr [ebp-35]
|. |movsx eax, cl
|.03C2 |add eax, edx ;+
|.B9 |mov ecx, 1A ;定值1A=26
|.99 |cdq
|.F7F9 |idiv ecx ;兩個字符的ASCII碼相加的結果 除以 1A
|.8BC2 |mov eax, edx ;得到的余數到eax
|.8D55 C9 |lea edx, [ebp-37]
|.04 41 |add al, 41 ;余數+41
|.8845 C9 |mov [ebp-37], al ;這個是轉成字符
|.8D45 F4 |lea eax, [ebp-C] ;以上得到的字符每四個連成一組。然后用“-”連接得到最后的注冊碼
|.C645 CA 00 |mov byte ptr [ebp-36], 0
|.66:C745 DC 2C>|mov word ptr [ebp-24], 2C ;
|.E8 |call
|.FF45 E8 |inc dword ptr [ebp-18] ;所以最后得到的真碼是16個字符的類似
|.8D55 F4 |lea edx, [ebp-C] ;“RADI-DCOF-NGOF-TJBP”的字符串。
|.8D45 FC |lea eax, [ebp-4]
|.E8 |call
|.FF4D E8 |dec dword ptr [ebp-18]
|.8D45 F4 |lea eax, [ebp-C]
|.BA |mov edx, 2
|.E8 |call
|.8D4B 01 |lea ecx, [ebx+1]
|.81E1 |and ecx,
|.79 05 |jns short
|.49 |dec ecx
|.83C9 FC |or ecx,
|.41 |inc ecx
|>85C9 |test ecx, ecx
|.75 36 |jnz short
|.83FB 0F |cmp ebx, 0F
|.7D 31 |jge short
|.66:C745 DC 38>|mov word ptr [ebp-24], 38
|.BA |mov edx, ;-
|.8D45 F0 |lea eax, [ebp-10]
|.E8 |call
|.FF45 E8 |inc dword ptr [ebp-18]
|.8D55 F0 |lea edx, [ebp-10]
|.8D45 FC |lea eax, [ebp-4]
|.E8 |call
|.FF4D E8 |dec dword ptr [ebp-18]
|.8D45 F0 |lea eax, [ebp-10]
|.BA |mov edx, 2
|.E8 |call
|>43 |inc ebx
|.83FB 10 |cmp ebx, 10
|.^ 0F8C \jl 循環回去。
|.66:C745 DC 44>mov word ptr [ebp-24], 44
|.8D55 FC lea edx, [ebp-4]
|.8B45 08 mov eax, [ebp+8]
|.E8 call
|.8B45 08 mov eax, [ebp+8]
|.BA mov edx, 2
|.66:C745 DC 50>mov word ptr [ebp-24], 50
|.50 push eax
|.8D45 F8 lea eax, [ebp-8]
|.FF4D E8 dec dword ptr [ebp-18]
|.E8 call
|.FF4D E8 dec dword ptr [ebp-18]
|.8D45 FC lea eax, [ebp-4]
|.BA mov edx, 2
|.E8 call
|.FF4D E8 dec dword ptr [ebp-18] ;真碼出現了.呼呼!!《-----------
4、跟進call 。這個算法(1)將通過本電腦上的機器碼重新計算出新的機器碼。可以得到一個循環代碼:
|> /8A0E /mov cl, [esi] ; 從機器碼的第n位開始取。(n=1,2易語言機器碼注冊機,..7)。共取7位ACII碼的值。
|. | |movsx eax, cl ;放到eax
|. |66:C745 E4 08>|mov word ptr [ebp-1C], 8
|. |8A5E 01 |mov bl, [esi+1] ;注冊碼第n+1位。
|. |B9 |mov ecx, 1A ;定值1A=26
|. | |movsx edx, bl ;放到edx
|. |03C2 |add eax, edx ;注冊碼前一位與后一位相加。ASCII碼相加
|. |99 |cdq
|. |F7F9 |idiv ecx ;除以定值
|. |8BC2 |mov eax, edx ;求得的余數到eax
|. |8BD7 |mov edx, edi
|. |04 41 |add al, 41 ;余數+41
|. |8807 |mov [edi], al ;轉換成字符,由于上面是取7位,所以這里將產生7個字母
|. |8D45 F8 |lea eax, [ebp-8]
|. |C647 01 00 |mov byte ptr [edi+1], 0
|. |66:C745 E4 20>|mov word ptr [ebp-1C], 20
|. |E8 |call
|. |FF45 F0 |inc dword ptr [ebp-10]
|. |8D55 F8 |lea edx, [ebp-8]
|. |8D45 FC |lea eax, [ebp-4]
|. |E8 |call
|. |FF4D F0 |dec dword ptr [ebp-10]
|. |8D45 F8 |lea eax, [ebp-8]
|. |BA |mov edx, 2
|. |E8 |call ;把新得到的字符與原機器碼連接。得到新的機器碼字符串
|. |46 |inc esi ;計數器自加
|> |837D FC 00 cmp dword ptr [ebp-4], 0
|. |74 08 |je short
|. |8B4D FC |mov ecx, [ebp-4]
|. |8B41 FC |mov eax, [ecx-4]
|. |EB 02 |jmp short
|> |33C0 |xor eax, eax
|> |83F8 11 |cmp eax, 11
|.^\7C 97 \jl short ;繼續循環
其實最重要的就是第3步驟里面的通過新機器碼計算真注冊碼。
這個注冊機比較難寫。不過還是要試試。
【算法總結】
------------------------------------------------------------------------
1、注冊碼的計算完全通過機器碼算出,與您輸入的假碼沒有關系。
2、首先通過本機自動生產的機器碼,通過前后字符之間的運算得到新的機器碼。
3、通過新的機器碼與固定字符串“”的相應位置的字符的運算(只運算16位)。得到16個字符。
4、16個字符分4組。通過“-”連接得到真碼!
【易語言注冊機源碼】
.版本 2
.局部變量 n, 整數型
.局部變量 , 文本型
.局部變量 len1, 整數型
.局部變量 , 文本型
.局部變量 LEN2, 整數型
.局部變量 a, 整數型
.局部變量 i, 整數型
.局部變量 b, 整數型
.局部變量 , 文本型
.局部變量 j, 整數型
.局部變量 c, 整數型
.局部變量 d, 整數型
.局部變量 code, 文本型
i = 1
j = 1
= 編輯框1.內容
len1 = 取文本長度 ()
= 編輯框1.內容
LEN2 = 取文本長度 ()
= “”
.計次循環首 (7, i)
a = 取代碼 (, i)
b = 取代碼 (, i + 1)
a = a + b
a = a % 26
a = a + 65
= + 字符 (a)
.計次循環尾 ()
.計次循環首 (16, j)
c = 取代碼 (, j)
d = 取代碼 (, j)
c = c + d
c = c % 26
c = c + 65
.如果 (j = 5 或 j = 9 或 j = 13)
code = code + “-” + 字符 (c)
.否則
code = code + 字符 (c)
.如果結束
.計次循環尾 ()
編輯框2.內容 =
編輯框3.內容 = code
[2022冬季班]《安卓高級研修班(網課)》月薪兩萬班招生中~