它是將輸入的內容作變換,再與內設的字串相比較,(估計只有暴破這一條路) (8千字)
Trace Arm BY Fpc
在追蹤註冊碼計算過程時很容易到這裡。
下面這個CALL的作用是:將輸入的0X18位元組的註冊資訊變換為0X10位元組的註冊碼1。
* Referenced by a CALL at Addresses:
|:0048BB15 , :0048BB50 , :0048BBED , :0048BC48
|
:0048BDC8 55
push ebp
:0048BDC9 8BEC
mov ebp, esp
:0048BDCB 83C4E4
add esp, FFFFFFE4
:0048BDCE 894DF8
mov dword ptr [ebp-08], ecx
Ecx指向輸入的註冊碼
:0048BDD1 8955E4
mov dword ptr [ebp-1C], edx Edx好象等於18
:0048BDD4 8945FC
mov dword ptr [ebp-04], eax
Eax指向一個位元組的碼錶:
01 23 45 67 89 AB CD EF FE DC BA 98 76 54 32 10
上面的這三個MOV比較重要
:0048BDD7 8B45FC
mov eax, dword ptr [ebp-04]
:0048BDDA 8B00
mov eax, dword ptr [eax]
:0048BDDC 8945F4
mov dword ptr [ebp-0C], eax
:0048BDDF 8B45FC
mov eax, dword ptr [ebp-04]
:0048BDE2 8B4004
mov eax, dword ptr [eax+04]
:0048BDE5 8945F0
mov dword ptr [ebp-10], eax
:0048BDE8 8B45FC
mov eax, dword ptr [ebp-04]
:0048BDEB 8B4008
mov eax, dword ptr [eax+08]
:0048BDEE 8945EC
mov dword ptr [ebp-14], eax
:0048BDF1 8B45FC
mov eax, dword ptr [ebp-04]
:0048BDF4 8B400C
mov eax, dword ptr [eax+0C]
:0048BDF7 8945E8
mov dword ptr [ebp-18], eax
:0048BDFA 55
push ebp
:0048BDFB 8B45E8
mov eax, dword ptr [ebp-18]
:0048BDFE 50
push eax
:0048BDFF 8B45F8
mov eax, dword ptr [ebp-08]
:0048BE02 8B00
mov eax, dword ptr [eax]
:0048BE04 0578A46AD7 add eax,
D76AA478
:0048BE09 50
push eax
:0048BE0A 6A07
push 00000007
:0048BE0C 8D45F4
lea eax, dword ptr [ebp-0C]
:0048BE0F 8B4DEC
mov ecx, dword ptr [ebp-14]
:0048BE12 8B55F0
mov edx, dword ptr [ebp-10]
:0048BE15 E856FEFFFF call
0048BC70
:0048BE1A 59
pop ecx
:0048BE1B 55
push ebp
:0048BE1C 8B45EC
mov eax, dword ptr [ebp-14]
:0048BE1F 50
push eax
:0048BE20 8B45F8
mov eax, dword ptr [ebp-08]
:0048BE23 8B4004
mov eax, dword ptr [eax+04]
:0048BE26 0556B7C7E8 add eax,
E8C7B756
:0048BE2B 50
push eax
:0048BE2C 6A0C
push 0000000C
:0048BE2E 8D45E8
lea eax, dword ptr [ebp-18]
:0048BE31 8B4DF0
mov ecx, dword ptr [ebp-10]
:0048BE34 8B55F4
mov edx, dword ptr [ebp-0C]
:0048BE37 E834FEFFFF call
0048BC70
。。。。。
:0048C653 59
pop ecx
:0048C654 55
push ebp
:0048C655 8B45F4
mov eax, dword ptr [ebp-0C]
:0048C658 50
push eax
:0048C659 8B45F8
mov eax, dword ptr [ebp-08]
:0048C65C 8B4024
mov eax, dword ptr [eax+24]
:0048C65F 0591D386EB add eax,
EB86D391
:0048C664 50
push eax
:0048C665 6A15
push 00000015
:0048C667 8D45F0
lea eax, dword ptr [ebp-10]
:0048C66A 8B4DE8
mov ecx, dword ptr [ebp-18]
:0048C66D 8B55EC
mov edx, dword ptr [ebp-14]
:0048C670 E8FFF6FFFF call
0048BD74
:0048C675 59
pop ecx
:0048C676 8B45FC
mov eax, dword ptr [ebp-04]
:0048C679 8B55F4
mov edx, dword ptr [ebp-0C]
:0048C67C 0110
add dword ptr [eax], edx
:0048C67E 8B45FC
mov eax, dword ptr [ebp-04]
:0048C681 8B55F0
mov edx, dword ptr [ebp-10]
:0048C684 015004
add dword ptr [eax+04], edx
:0048C687 8B45FC
mov eax, dword ptr [ebp-04]
:0048C68A 8B55EC
mov edx, dword ptr [ebp-14]
:0048C68D 015008
add dword ptr [eax+08], edx
:0048C690 8B45FC
mov eax, dword ptr [ebp-04]
:0048C693 8B55E8
mov edx, dword ptr [ebp-18]
:0048C696 01500C
add dword ptr [eax+0C], edx
:0048C699 8BE5
mov esp, ebp
:0048C69B 5D
pop ebp
:0048C69C C20400
ret 0004
這一段非常長,結構卻差不多,因此大部分內容都略過了。這個CALL過後會形成一個0X10位元組的註冊碼1。接下來註冊碼1會被擴充套件為0X20位元組,然後與已經計算好的0X3F0組字串相比較,與其中一組相同即可。
call 0048BC70是用於變換的一個CALL(共有四個),被呼叫16次:(真是變態!)
結合入口引數看
:0048BDFA 55
push ebp
:0048BDFB 8B45E8
mov eax, dword ptr [ebp-18]
:0048BDFE 50
push eax
;<1>
:0048BDFF 8B45F8
mov eax, dword ptr [ebp-08]
:0048BE02 8B00
mov eax, dword ptr [eax]
:0048BE04 0578A46AD7 add eax,
D76AA478
:0048BE09 50
push eax
;<2>
:0048BE0A 6A07
push 00000007
;<3>
:0048BE0C 8D45F4
lea eax, dword ptr [ebp-0C]
:0048BE0F 8B4DEC
mov ecx, dword ptr [ebp-14]
:0048BE12 8B55F0
mov edx, dword ptr [ebp-10]
:0048BE15 E856FEFFFF call
0048BC70
:0048BE1A 59
pop ecx
Call(1):
* Referenced by a CALL at Addresses:
|:0048BE15 , :0048BE37 , :0048BE59 , :0048BE7B , :0048BE9D
|:0048BEBF , :0048BEE1 , :0048BF03 , :0048BF25 , :0048BF47
|:0048BF69 , :0048BF8B , :0048BFAD , :0048BFCF , :0048BFF1
|:0048C013
|
:0048BC70 55
push ebp
:0048BC71 8BEC
mov ebp, esp
:0048BC73 83C4F4
add esp, FFFFFFF4
:0048BC76 894DF4
mov dword ptr [ebp-0C], ecx
:0048BC79 8955F8
mov dword ptr [ebp-08], edx
:0048BC7C 8945FC
mov dword ptr [ebp-04], eax
:0048BC7F 8B45F4
mov eax, dword ptr [ebp-0C] ; Eax=Ecx
:0048BC82 334510
xor eax, dword ptr [ebp+10] ; Eax^=<1>
:0048BC85 2345F8
and eax, dword ptr [ebp-08] ; Eax&=Edx
:0048BC88 334510
xor eax, dword ptr [ebp+10] ; Eax^=<1>
:0048BC8B 03450C
add eax, dword ptr [ebp+0C] ; Eax+=<2>
:0048BC8E 8B55FC
mov edx, dword ptr [ebp-04]
:0048BC91 0102
add dword ptr [edx], eax ; Save
it
:0048BC93 33C0
xor eax, eax
:0048BC95 8A4508
mov al, byte ptr [ebp+08] ; Eax=<3>
:0048BC98 B920000000 mov ecx,
00000020
:0048BC9D 2BC8
sub ecx, eax
:0048BC9F 8B45FC
mov eax, dword ptr [ebp-04]
:0048BCA2 8B00
mov eax, dword ptr [eax]
:0048BCA4 D3E8
shr eax, cl
:0048BCA6 8A4D08
mov cl, byte ptr [ebp+08]
:0048BCA9 8B55FC
mov edx, dword ptr [ebp-04]
:0048BCAC 8B12
mov edx, dword ptr [edx]
:0048BCAE D3E2
shl edx, cl
; And this part:
:0048BCB0 0BC2
or eax, edx
; Roll left N<3> bits
:0048BCB2 8B55FC
mov edx, dword ptr [ebp-04]
:0048BCB5 8902
mov dword ptr [edx], eax
:0048BCB7 8B45FC
mov eax, dword ptr [ebp-04]
:0048BCBA 8B55F8
mov edx, dword ptr [ebp-08]
:0048BCBD 0110
add dword ptr [eax], edx ; Add
again
:0048BCBF 8BE5
mov esp, ebp
:0048BCC1 5D
pop ebp
:0048BCC2 C20C00
ret 000C
For short, Call(1) looks like :
push ebp
mov ebp, esp
push ebx ;
Ebx will serve as a Temp
push eax
push edx
mov eax, ecx
xor eax, dword ptr [ebp+10]
and eax, edx ; Shit!
Cant write a KeyGen Coz of this
xor eax, dword ptr [ebp+10]
add eax, dword ptr [ebp+c]
mov ebx, eax ; Temp=Eax
mov al, byte ptr [ebp+08] ; Eax=<3>
mov cl, 20
sub cl, al
mov eax, ebx
shr eax, cl
mov cl, byte ptr [ebp+08]
mov edx, ebx
shl edx, cl ; And
this part:
or eax, edx ; Roll
left N<3> bits
pop edx
add eax, edx
mov ebx, eax
pop eax
mov dword ptr [eax], ebx
pop ebx
mov esp, ebp
pop ebp
ret 000C
本來是要追出註冊碼計算過程,然後寫出序號產生器。這個序號產生器原理是根據3F0組字串寫出逆過程,現在看是不可能了,原因就在於那個AND(不可逆)。所以ARM只能解壓後再暴破。:-(
相關文章
- app直播原始碼,監聽EditText輸入框內輸入內容的變化2023-10-13APP原始碼
- c#彈窗輸入字串並獲取到輸入內容的一種方法2024-10-28C#字串
- 『忘了再學』Shell基礎 — 21、變數的測試與內容置換2022-05-27變數
- javascript如何替換字串中的指定內容2017-03-14JavaScript字串
- js替換字串中的所有指定內容2017-03-24JS字串
- CSS 只有一條橫線的輸入框2017-02-18CSS
- JavaScript 替換字串全部指定內容2020-02-19JavaScript字串
- PbootCMS後臺列表只有一條新聞,但是前端顯示2條內容2024-08-29boot前端
- 易優CMS每隔幾條輸出內容設定與呼叫標籤2024-08-02
- Webpower:8招教你將內容營銷與SEO完美合一2016-11-24Web
- js實現的替換字串中的全部指定內容2017-02-17JS字串
- vue.js輸入框輸入值內容實時跟著變化2018-03-24Vue.js
- 使用 FOR ALL ENTRIES 將 ABAP 內表內容作為資料庫表的讀取條件之一試讀版2023-05-18資料庫
- JavaScript 文字框輸入內容同步2018-01-16JavaScript
- jQuery文字框輸入內容同步2017-03-19jQuery
- jQuery實現的將指定元素中的內容替換2017-03-27jQuery
- 直播app製作涉及資料傳輸內容請看這裡2019-07-25APP
- 實現動態自動匹配輸入的內容2020-04-05
- CSS 自適應內容寬度的輸入框2021-11-29CSS
- jQuery文字框內容輸入同步功能2017-04-07jQuery
- 從Google Sheets內容的匯出,到字串換行問題2019-02-12Go字串
- replace()方法替換字串內容程式碼例項2017-04-05字串
- 什麼是網路安全風險評估?需要評估哪些內容?2021-10-15
- 檔案內容比較2024-06-18
- 網頁內容部分設滾動條2017-11-12網頁
- js實現的對字串中的指定內容進行替換操作2017-04-03JS字串
- vim內替換檔案內容2018-05-09
- wps的excel中的單元格限定輸入的內容2020-10-08Excel
- git將指定內容寫入檔案2018-05-12Git
- 更換文字中第二次出現的字串內容2020-04-05字串
- 把握流量+內容,抖音小遊戲這條路或正是小遊戲行業的未來2023-12-18遊戲行業
- C# 輸出一個字串的字首、字尾和它的子串(資訊內容安全 實驗一)2021-03-31C#字串
- VB黑客程式的暴破(修改)一例 (9千字)2003-02-06黑客
- Excel還能限制輸入內容?其實這樣能有效避免人員輸入錯誤2019-04-09Excel
- js將文字框的內容回車換行符轉換為<br/>換行2017-03-22JS
- 網站內容建設:這些內容是萬能的 卻把你給閹了2015-11-14網站
- awk比較檔案內容的差異2015-06-12
- 內容型遊戲的體驗設計思考2024-05-09遊戲