簡單演算法之貪吃豆豆龍
標 題:簡單演算法之貪吃豆豆龍
發信人:loveboom
時 間:2003年8月22日 09:21
詳細資訊:
軟體大小: 152 KB
軟體語言: 簡體中文
軟體類別: 國產軟體 / 共享版 / 益智遊戲
應用平臺: Win9x/NT/2000/XP
介面預覽: 無
下載地址:http://www.skycn.net/soft/13584.html
軟體簡介:
貪吃豆豆龍是一款值得珍藏的經典遊戲,它是傳統貪吃蛇遊戲的全新升級,並支援樂趣無窮的雙人對戰!本次發行的2.0版本較上一版本有了大幅度的改進.1.全新的遊戲介面 2.增加排行榜功能 3.更加科學的計分方式 4.級別分數實時顯示 5.選單設定遊戲速度 6.可改變地圖尺寸 7.豆豆龍的顏色可由玩家自己選擇 8.輸入註冊碼自動註冊。
工具:0llydbg1.09d漢化版,peid 0.9(因為跟蹤時比較簡單所以也就不用w32dasm)
假碼:77585201314
機器碼:84940800
用peid0.9發現它是用c寫的。
開始下斷點getdlgitemtexta,有兩處呼叫,正確的是在第一個下斷,好了,斷下來到這裡
00403AE6 . FF15 34B14000 CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; GetDlgItemTextA
00403AEC . 68 98E94000 PUSH DDL.0040E998 ; ASCII "77585201314"
00403AF1 . E8 9AF7FFFF CALL DDL.00403290
00403AF6 . 83C4 04 ADD ESP,4
00403AF9 . E8 02F8FFFF CALL DDL.00403300 '這裡就是傳說中的關鍵處按F8切入
00403AFE . 803D 7CEF4000 0>CMP BYTE PTR DS:[40EF7C],1
00403B05 . 75 44 JNZ SHORT DDL.00403B4B '這裡一跳就 Game over,改成JZ 00403B4B就暴破
00403B07 . E8 14FFFFFF CALL DDL.00403A20
00403B0C . A1 B8E74000 MOV EAX,DWORD PTR DS:[40E7B8]
上面那個call 進入後就到了這裡:
00403300 /$ 83EC 2C SUB ESP,2C
00403303 |. A0 80EF4000 MOV AL,BYTE PTR DS:[40EF80]
00403308 |. 57 PUSH EDI
00403309 |. 884424 10 MOV BYTE PTR SS:[ESP+10],AL
0040330D |. B9 07000000 MOV ECX,7
00403312 |. 33C0 XOR EAX,EAX
00403314 |. 8D7C24 11 LEA EDI,DWORD PTR SS:[ESP+11]
00403318 |. F3:AB REP STOS DWORD PTR ES:[EDI]
0040331A |. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4]
0040331E |. C74424 04 00000>MOV DWORD PTR SS:[ESP+4],0
00403326 |. 51 PUSH ECX ; /pHandle
00403327 |. 68 D4C44000 PUSH DDL.0040C4D4 ; |Subkey = "SoftwareDdl"
0040332C |. 68 01000080 PUSH 80000001 ; |hKey = HKEY_CURRENT_USER
00403331 |. C74424 18 1E000>MOV DWORD PTR SS:[ESP+18],1E ; |
00403339 |. AA STOS BYTE PTR ES:[EDI] ; |
0040333A |. FF15 08B04000 CALL DWORD PTR DS:[<&ADVAPI32.RegCreateK>; RegCreateKeyA
00403340 |. 85C0 TEST EAX,EAX
00403342 |. 5F POP EDI
00403343 |. 75 79 JNZ SHORT DDL.004033BE
00403345 |. 8B4C24 00 MOV ECX,DWORD PTR SS:[ESP]
00403349 |. 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8]
0040334D |. 8D4424 0C LEA EAX,DWORD PTR SS:[ESP+C]
00403351 |. 52 PUSH EDX ; /pBufSize
00403352 |. 50 PUSH EAX ; |Buffer
00403353 |. 6A 00 PUSH 0 ; |pValueType = NULL
00403355 |. 6A 00 PUSH 0 ; |Reserved = NULL
00403357 |. 68 CCC44000 PUSH DDL.0040C4CC ; |ValueName = "RegID"
0040335C |. 51 PUSH ECX ; |hKey
0040335D |. FF15 00B04000 CALL DWORD PTR DS:[<&ADVAPI32.RegQueryVa>; RegQueryValueExA
00403363 |. 85C0 TEST EAX,EAX
00403365 |. 75 57 JNZ SHORT DDL.004033BE
00403367 |. 8B5424 00 MOV EDX,DWORD PTR SS:[ESP]
0040336B |. 52 PUSH EDX ; /hKey
0040336C |. FF15 04B04000 CALL DWORD PTR DS:[<&ADVAPI32.RegCloseKe>; RegCloseKey
00403372 |. 6A 0A PUSH 0A ; /pFileSystemNameSize = 0000000A
00403374 |. 6A 00 PUSH 0 ; |pFileSystemNameBuffer = NULL
00403376 |. 6A 00 PUSH 0 ; |pFileSystemFlags = NULL
00403378 |. 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10] ; |
0040337C |. 6A 00 PUSH 0 ; |pMaxFilenameLength = NULL
0040337E |. 50 PUSH EAX ; |pVolumeSerialNumber
0040337F |. 6A 0C PUSH 0C ; |MaxVolumeNameSize = C (12.)
00403381 |. 6A 00 PUSH 0 ; |VolumeNameBuffer = NULL
00403383 |. 68 E4C44000 PUSH DDL.0040C4E4 ; |RootPathName = "c:"
00403388 |. FF15 A4B04000 CALL DWORD PTR DS:[<&KERNEL32.GetVolumeI>; GetVolumeInformationA '看到了這裡就有希望了,離成功不遠了,取c盤的序列號
我的是492576481也就是十六進位制的1D5C1EE1
0040338E |. 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4] '這裡就是把1D5C1EE1入ECX
00403392 |. 8D5424 0C LEA EDX,DWORD PTR SS:[ESP+C] '假註冊碼77585201314將會到EDX中
00403396 |. 81E1 10789207 AND ECX,7927810 '這裡用序列號1D5C1EE1加上7927810
0040339C |. 52 PUSH EDX'假註冊碼入棧
0040339D |. 81F1 92078107 XOR ECX,7810792 '這裡ECX=1D5C1EE1+7927810=05101800
004033A3 |. 894C24 08 MOV DWORD PTR SS:[ESP+8],ECX '這裡ecx=05101800 xor 7810792=02911f92
004033A7 |. E8 28140000 CALL DDL.004047D4
004033AC |. 8B4C24 08 MOV ECX,DWORD PTR SS:[ESP+8]
004033B0 |. 83C4 04 ADD ESP,4
004033B3 |. 3BC1 CMP EAX,ECX '這裡用假註冊碼和0291f92比較如果相等就註冊成功
004033B5 |. 75 07 JNZ SHORT DDL.004033BE '這裡也是暴破點
004033B7 |. C605 7CEF4000 0>MOV BYTE PTR DS:[40EF7C],1
004033BE |> 33C0 XOR EAX,EAX
004033C0 |. 83C4 2C ADD ESP,2C
004033C3 . C3 RETN
最後得出正確的註冊碼就是0291f92的十進位制43065234
總結:它那個機器碼是用於作者得到你的c盤序列號,我們可以不用管它.
演算法:註冊碼=(c盤序列號+7927810)xor 7810792
相關文章
- 貪心(入門簡單題)2018-06-02
- 常用演算法之貪心演算法2019-01-06演算法
- 演算法學習之簡單排序2016-04-23演算法排序
- POJ 2718簡單列舉貪心演算法(好久沒寫程式碼了。。)2014-01-08演算法
- 貪心演算法(貪婪演算法,greedy algorithm)2020-12-10演算法Go
- 貪心演算法之無重疊區間2019-03-21演算法
- hdu 1789 Doing Homework again(簡單貪心)2014-01-23AI
- 貪心演算法2024-11-14演算法
- 簡單演算法2024-08-09演算法
- 馬踏棋盤之貪心演算法優化2014-11-28演算法優化
- 讓 AI 更簡單 人工智慧平臺 SEAL 攜手龍蜥落地達摩院演算法能力 | 龍蜥案例2023-04-25AI人工智慧演算法
- 分享一個簡單但挺有意思的演算法題2-貪心-單調棧-動態規劃2022-04-25演算法動態規劃
- 簡單排序演算法2020-11-27排序演算法
- powerarchiver 8.00.58 之不完全破解+簡單演算法分析2015-11-15Hive演算法
- 爽!用golang 手擼了個簡單的貪吃蛇2022-07-20Golang
- 學一下貪心演算法-學一下貪心演算法2024-03-08演算法
- 貪婪演算法回顧2019-05-29演算法
- 貪心演算法Dijkstra2023-01-01演算法
- 9-貪心演算法2024-10-04演算法
- JavaScript-開發一個簡單的貪吃蛇小遊戲2019-03-25JavaScript遊戲
- LRU演算法簡單例子2013-11-26演算法單例
- 122. 買賣股票的最佳時機 II-簡單-動態規劃、貪心演算法2020-11-08動態規劃演算法
- 演算法(六):圖解貪婪演算法2018-08-26演算法圖解
- 《演算法筆記》9. 培養貪心思維、貪心演算法深度實踐2020-08-04演算法筆記
- 資料探勘之KMeans演算法應用與簡單理解2019-07-23演算法
- C#圖片處理之:最簡單的柔化演算法2008-09-24C#演算法
- 關於《龍族幻想》的系統以及簡單分析2021-03-18
- c/c++實現簡單的貪吃蛇視覺化遊戲2020-12-24C++視覺化遊戲
- js開發實現簡單貪吃蛇遊戲(20行程式碼)2017-09-25JS遊戲行程
- 演算法基礎–貪心策略2018-12-12演算法
- Moving Tables(貪心演算法)2020-11-21演算法
- Python演算法:貪心策略2015-05-20Python演算法
- 簡單理解Paxos演算法(譯)2019-03-04演算法
- 15道簡單演算法題2014-06-08演算法
- Teleport
pro 演算法簡單分析2004-07-15演算法
- 演算法之單調棧2020-10-11演算法
- python實現之 K-means演算法簡單介紹2020-05-21Python演算法
- HTML之簡單標籤2018-03-16HTML