簡單演算法---A Speeder V2.5破解的簡要分析!
破解軟體:A
Speeder V2.5版
下載網址:http://www8.pconline.com.cn/download/download.phtml?id=106208
破解難度:易
破解工具:TRW1.22
軟體說明:一個可以顯著提高你的Windows和Windows下面執行的所有應用程式的執行速度,讓你的程式和遊戲跑的更快的程式。
該程式的演算法比較簡單,但是要跟蹤到演算法部分對我這樣菜鳥來說有點麻煩。因為該軟體在你輸入註冊碼註冊後它不會出現註冊成功與否的對話方塊,而是透過修改程式介面來體現註冊與否,所以會很容易跟進其它的程式段中。而且該程式應該是反反彙編的,因為我試圖用WDasm反彙編,卻出現非法操作。
我第1次破解時用BPX HMEMCPY斷點竟然斷不下來,只好用S搜尋大法找到輸入的註冊碼值在記憶體中的位置,然後用 BPM Address R下斷一步步的跟出來的,好累!後來破解成功後又試了一下,竟然又可以用BPX
HMEMCPY下斷了,真是搞不懂!
以下部分是按照BPX HMEMCPY的斷點操作流程和我輸入的假碼1234567進行分析的。
任意埴入註冊碼,我的為12345678,下BPX
HMEMCPY,點OK,程式被攔斷,BC *,PMODULE,然後按11下F12,再按F10,來到如下程式碼:
0167:00402DE7 CALL
0046DDB0
0167:00402DEC DEC DWORD [EBP-18]
<---程式中斷於此
0167:00402DEF LEA EAX,[EBP-10]
0167:00402DF2 MOV EDX,02
0167:00402DF7 CALL
0049D754
0167:00402DFC DEC DWORD [EBP-18]
0167:00402DFF LEA EAX,[EBP-0C]
0167:00402E02
MOV EDX,02
0167:00402E07 CALL
0049D754
0167:00402E0C DEC DWORD [EBP-18]
0167:00402E0F
LEA EAX,[EBP-08]
0167:00402E12 MOV
EDX,02
0167:00402E17 CALL 0049D754
0167:00402E1C
MOV WORD [EBP-24],08
0167:00402E22 PUSH
BYTE +10
0167:00402E24 CMP DWORD [EBP-04],BYTE
+00
0167:00402E28 JZ 00402E2F
0167:00402E2A
MOV ECX,[EBP-04] <---取我們輸入的註冊碼到ECX中
0167:00402E2D JMP SHORT 00402E34
0167:00402E2F
MOV ECX,004B24CE
0167:00402E34 PUSH
ECX
0167:00402E35 PUSH DWORD 004BBE78
0167:00402E3A
CALL 004933F4
0167:00402E3F ADD ESP,BYTE
+0C
0167:00402E42 MOV EAX,004BBE78
0167:00402E47
CALL 00401F90 <---關鍵比對的Call,跟進去看看
0167:00402E4C TEST AL,AL
0167:00402E4E JZ
00402E77 <---關鍵判斷
0167:00402E50
XOR EDX,EDX
0167:00402E52 MOV
EAX,[EBX+0334]
0167:00402E58 CALL 00473654
0167:00402E5D
XOR EDX,EDX
0167:00402E5F MOV
EAX,[EBX+0338]
0167:00402E65 CALL 00473654
0167:00402E6A
XOR EDX,EDX
0167:00402E6C MOV
[004B2264],EDX
0167:00402E72 CALL 004022B4
0167:00402E77
DEC DWORD [EBP-18]
0167:00402E7A LEA
EAX,[EBP-04]
0167:00402E7D MOV EDX,02
0167:00402E82 CALL 0049D754
0167:00402E87 MOV
ECX,[EBP-34]
0167:00402E8A MOV [FS:00],ECX
0167:00402E91 POP EBX
0167:00402E92 MOV
ESP,EBP
0167:00402E94 POP EBP
0167:00402E95 RET
我們跟進上面的那個關鍵Call,可看到如下程式碼:
0167:00401F90
PUSH EBX
0167:00401F91 ADD ESP,BYTE
-20
0167:00401F94 XOR EBX,EBX
0167:00401F96
MOV EDX,ESP
0167:00401F98 MOVSX ECX,BYTE
[EAX] <---EAX中為我們輸入的註冊碼
0167:00401F9B CMP ECX,BYTE
+41 <---是否大於字元“A“
0167:00401F9E JNL 00401FA7
0167:00401FA0 ADD ECX,BYTE -30 <---十六進位制值轉換為字元值
0167:00401FA3 MOV [EDX],ECX
0167:00401FA5 JMP SHORT 00401FBE
0167:00401FA7
MOVSX ECX,BYTE [EAX]
0167:00401FAA CMP
ECX,BYTE +61 <---是否大於字元“a“
0167:00401FAD JNL
00401FB6
0167:00401FAF ADD ECX,BYTE
-37 <---ECX=ECX-37,處理A-a之間的字元(不包括a)
0167:00401FB2 MOV
[EDX],ECX
0167:00401FB4 JMP SHORT 00401FBE
0167:00401FB6 MOVSX ECX,BYTE [EAX]
0167:00401FB9 ADD
ECX,BYTE -3D <---ECX=ECX-3D,處理大於等於a的字元
0167:00401FBC
MOV [EDX],ECX
0167:00401FBE INC
EBX
0167:00401FBF ADD EDX,BYTE +04
0167:00401FC2
INC EAX
0167:00401FC3 CMP EBX,BYTE
+08 <---輸入的註冊碼位數不能小於8位
0167:00401FC6 JL
00401F98
0167:00401FC8 MOV EBX,[ESP]
<---取註冊碼的第1位,為1
0167:00401FCB MOV
EAX,[ESP+08] <---取註冊碼的第3位,為3
0167:00401FCF ADD EAX,[ESP+0C]
<---[EBP+0C]為註冊碼的第4位,為4
0167:00401FD3 ADD EBX,[ESP+04]
<---[EBP+04]為註冊碼的第2位,為2
0167:00401FD7 ADD
EBX,[004B2278] <---[004B2278]中為17,結果為1A
0167:00401FDD ADD EAX,[004B227C] <---[004B2278]中為43,結果為4A
0167:00401FE3 IMUL EBX,EAX
<---EBX=EBX*EAX=784
0167:00401FE6 MOV EDX,[ESP+10]
<---[EBP+04]為註冊碼的第5位,為5
0167:00401FEA MOV
ECX,3E <---ECX=3E
0167:00401FEF
ADD EDX,[004B2280] <---[004B2280]中為39,結果為3E
0167:00401FF5 IMUL EBX,EDX
<---EBX=EBX*EDX=784*3E=1E100
0167:00401FF8 MOV
EAX,EBX
0167:00401FFA CDQ
0167:00401FFB
IDIV ECX
0167:00401FFD CMP EDX,[ESP+14]<--[ESP+14]為註冊碼的第6位,EDX=EAX
mod ECX=4
0167:00402001 JZ 00402007
<---要是不跳就完了
0167:00402003 XOR EAX,EAX
<---EAX=0
0167:00402005 JMP
SHORT 00402049
0167:00402007 MOV ECX,3E
<---ECX=3E
0167:0040200C MOV
EAX,EBX <---EAX=EBX=1E100
0167:0040200E
CDQ
0167:0040200F IDIV ECX
0167:00402011
MOV EBX,EAX <---EBX=EAX/ECX=7C2
0167:00402013 MOV EAX,EBX
0167:00402015 MOV ECX,3E
0167:0040201A CDQ
0167:0040201B IDIV ECX
0167:0040201D
CMP EDX,[ESP+18]<--[ESP+18]為註冊碼的第7位,EDX=EAX mod ECX=2
0167:00402021 JZ 00402027
<---要是不跳還得玩完了
0167:00402023 XOR EAX,EAX
<---EAX=0
0167:00402025 JMP
SHORT 00402049
0167:00402027 MOV ECX,3E
0167:0040202C MOV EAX,EBX
<---EAX=EBX=7C2
0167:0040202E CDQ
0167:0040202F
IDIV ECX
0167:00402031 MOV EBX,EAX
<---EBX=EAX/ECX=20
0167:00402033 MOV
EAX,EBX
0167:00402035 MOV ECX,3E
0167:0040203A CDQ
0167:0040203B IDIV
ECX
0167:0040203D CMP EDX,[ESP+1C]<--[ESP+18]為註冊碼第7位,EDX=EAX
mod ECX=20
0167:00402041 JZ 00402047
<---最後一處判斷
0167:00402043 XOR EAX,EAX
0167:00402045 JMP SHORT 00402049
0167:00402047
MOV AL,01 <---置AL中的值為1,勝利女神!
0167:00402049 ADD ESP,BYTE +20
0167:0040204C
POP EBX
0167:0040204D RET
從上面的分析我們可得到我的正確註冊碼的後3位為42W。因為最後一次的EDX中值為20,而又因為61-3D=24>20,可知為大寫字元,所以未轉換前值應為37+20,對應的字元為W,這樣就可得到正確的註冊碼:1234542W.其實從上面的分析可以看出,只要註冊碼的位數不小於8,而且只要前8位滿足上面的演算法即可,第8位以後可任意輸。
該程式註冊成功後將註冊資訊儲存在登錄檔的
“HKEY_CURRENT_USER/Software/aspeeder”中,程式重啟會取出再進行比對。
相關文章
- Access Animation破解的簡要分析2003-05-10
- powerarchiver 8.00.58 之不完全破解+簡單演算法分析2015-11-15Hive演算法
- 解除安裝精靈V3.2破解的簡要分析!2015-11-15
- Teleport
pro 演算法簡單分析2004-07-15演算法
- 磁碟原理簡要分析2022-06-15
- JRebel 破解最簡單的使用2021-09-30
- Hash破解神器:Hashcat的簡單使用2017-01-11
- Turbo Photo V2.5 演算法分析2015-11-15演算法
- 機械設計系統1.0破解實錄------------演算法簡單,破解過程一2015-11-15演算法
- 夢想圖片螢幕保護V2.6破解簡要分析2015-11-15
- 簡單的數字驗證碼破解2020-12-19
- ExplosionField簡單分析2017-03-05
- 簡單演算法2024-08-09演算法
- 簡單的UrlDns鏈分析2024-04-16DNS
- DeTitle V1.33簡單演算法分析2003-08-06演算法
- Disk
Chief 1.2 簡單註冊演算法分析2015-11-15演算法
- Source Insight 3.5 演算法簡單分析2015-11-15演算法
- Android Hal層簡要分析2014-09-21Android
- 簡單排序演算法2020-11-27排序演算法
- mr原理簡單分析2020-08-23
- SSRF漏洞簡單分析2020-07-16
- 簡單陰影分析2020-12-27
- Dubbo原理簡單分析2017-04-13
- butterknife原始碼簡單分析&原理簡述2017-12-23原始碼
- 對網易雲性格主導色實現與演算法的簡要分析2021-05-27演算法
- Multidex(分包)實現簡要分析2018-04-27IDE
- spycop5.5簡要註冊分析2015-11-15
- 夢想CMS(lmxcms)1.4 簡要分析2024-10-15
- Laravel 使用者認證最簡單的實現 比 Jetstream 要簡單很多2021-01-16Laravel
- [IOS]要多簡單有多簡單的IOS自動化calabash-ios2013-07-11iOS
- 推箱子V2.5完美破解法2015-11-15
- 簡單介紹Python迷宮生成和迷宮破解演算法2020-04-24Python演算法
- webeasymail的簡單破解過程 (2千字)2001-08-04WebAI
- flashsoft得簡單破解 (6千字)2001-05-26
- Instyler Ex-it!
漢化版 1.64 簡單演算法分析2015-11-15演算法
- 對CAS演算法的簡單理解2018-03-18演算法
- 簡單的幾個排序演算法2018-04-10排序演算法
- RSA加密演算法的簡單案例2016-08-16加密演算法