《雷霆戰將》檢查cd程式碼,有用看看。 (6千字)
剛買的《雷霆戰將》就被一無恥之徒順手牽羊。痛感交友不當之後寫下此文,望後來者以儆效尤。
首先用w32dasm反彙編之RogueSpear.exe。
在查詢“cd”“nocd”“GetVolumeInformationA”“GetLogicalDriveStringsA”
之類的子串,我們來到下面的程式碼:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040C27D(C)
|
:0040C1EC 5F
pop edi
:0040C1ED 5E
pop esi
:0040C1EE 5D
pop ebp
:0040C1EF B001
mov al, 01
:0040C1F1 5B
pop ebx
:0040C1F2 81C410060000 add esp, 00000610
:0040C1F8 C3
ret
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040C1EA(C)
|
:0040C1F9 8D94241C020000 lea edx, dword ptr
[esp+0000021C]
:0040C200 52
push edx
:0040C201 6800040000 push 00000400
* Reference To: KERNEL32.GetLogicalDriveStringsA, Ord:011Eh-----取當前路徑。
|
:0040C206 FF15A8507600 Call dword ptr
[007650A8]
:0040C20C 8BD8
mov ebx, eax
:0040C20E 85DB
test ebx, ebx
:0040C210 750A
jne 0040C21C-------如果是完全安裝,ok。
* Possible StringData Ref from Data Obj ->"GAME: Could not get drives installed
"
->"in the system"
|
:0040C212 6884517B00 push 007B5184
:0040C217 E986000000 jmp 0040C2A2
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040C210(C)
|
:0040C21C 33F6
xor esi, esi
:0040C21E 85DB
test ebx, ebx
:0040C220 7E7B
jle 0040C29D--------cd都不裝,就別想玩遊戲。
* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h-------檢查單前盤是否是cd。
|
:0040C222 8B2DAC507600 mov ebp, dword
ptr [007650AC]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040C29B(C)
|
:0040C228 8DBC341C020000 lea edi, dword ptr
[esp+esi+0000021C]
:0040C22F 57
push edi
:0040C230 FFD5
call ebp
:0040C232 83F805
cmp eax, 00000005
:0040C235 754C
jne 0040C283--------不是光碟機,game over。
:0040C237 8D84241C010000 lea eax, dword ptr
[esp+0000011C]
:0040C23E 6800010000 push 00000100
:0040C243 8D4C241C lea
ecx, dword ptr [esp+1C]
:0040C247 50
push eax
:0040C248 8D54241C lea
edx, dword ptr [esp+1C]
:0040C24C 51
push ecx
:0040C24D 8D44241C lea
eax, dword ptr [esp+1C]
:0040C251 52
push edx
:0040C252 50
push eax
:0040C253 8D4C2430 lea
ecx, dword ptr [esp+30]
:0040C257 6800010000 push 00000100
:0040C25C 51
push ecx
:0040C25D 57
push edi
* Reference To: KERNEL32.GetVolumeInformationA, Ord:0177h------檢查卷標。
|
:0040C25E FF15B0507600 Call dword ptr
[007650B0]
:0040C264 83F801
cmp eax, 00000001
:0040C267 751A
jne 0040C283------不成功,讓你死的難看。
:0040C269 8D54241C lea
edx, dword ptr [esp+1C]
* Possible StringData Ref from Data Obj ->"ROGUESPR"-----光碟卷標。
|
:0040C26D 6878517B00 push 007B5178
:0040C272 52
push edx
:0040C273 E898112900 call 0069D410
:0040C278 83C408
add esp, 00000008
:0040C27B 85C0
test eax, eax
:0040C27D 0F8469FFFFFF je 0040C1EC-----ok,檢查完畢退出CALL。
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040C235(C), :0040C267(C)
|
:0040C283 803F00
cmp byte ptr [edi], 00----是否讀卷標失敗。
:0040C286 7410
je 0040C298
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040C296(C)
|
:0040C288 3BF3
cmp esi, ebx-----是否再讀幾次。
:0040C28A 7D0C
jge 0040C298
:0040C28C 8A84341D020000 mov al, byte ptr
[esp+esi+0000021D]
:0040C293 46
inc esi
:0040C294 84C0
test al, al
:0040C296 75F0
jne 0040C288-----迴圈。
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040C286(C), :0040C28A(C)
|
:0040C298 46
inc esi
:0040C299 3BF3
cmp esi, ebx
:0040C29B 7C8B
jl 0040C228------再給你幾次機會。
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040C220(C)
|
* Possible StringData Ref from Data Obj ->"GAME: Could not find CD"------game
over。
|
:0040C29D 6860517B00 push 007B5160
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040C217(U)
|
:0040C2A2 B914468100 mov ecx,
00814614
:0040C2A7 E878EC2800 call 0069AF24
:0040C2AC 6850174000 push 00401750
:0040C2B1 6A0A
push 0000000A
:0040C2B3 8BC8
mov ecx, eax
:0040C2B5 E823EB2800 call 0069ADDD
:0040C2BA 8BC8
mov ecx, eax
:0040C2BC E86F54FFFF call 00401730
:0040C2C1 B908468100 mov ecx,
00814608
:0040C2C6 E8C5240200 call 0042E790
:0040C2CB 5F
pop edi
:0040C2CC 5E
pop esi
:0040C2CD 5D
pop ebp
:0040C2CE 32C0
xor al, al
:0040C2D0 5B
pop ebx
:0040C2D1 81C410060000 add esp, 00000610
:0040C2D7 C3
ret--------------退出CALL。
:0040C2D8 90
nop
:0040C2D9 90
nop
:0040C2DA 90
nop
:0040C2DB 90
nop
:0040C2DC 90
nop
:0040C2DD 90
nop
:0040C2DE 90
nop
:0040C2DF 90
nop
自己看者辦,要乎乎了。
Zzzzzzzzzz。。。。。
相關文章
- 看一段VB6程式檢查時間的典型程式碼 (2千字)2000-12-28
- 程式碼樣式檢查2024-07-18
- python程式碼檢查工具(靜態程式碼審查)2021-09-08Python
- ReactFlow程式碼靜態檢查2018-07-20React
- 何為程式碼檢查服務的門禁級檢查2024-03-19
- 一篇有關cd-check的譯文,隨便看看吧!上網費超支,下個月見,兄弟們!
(6千字)2000-08-27
- ESLint 靜態程式碼檢查2019-02-27EsLint
- Vue eslint 程式碼檢查配置2018-10-27VueEsLint
- JS程式碼檢查工具ESLint2018-05-23JSEsLint
- CSS程式碼檢查工具stylelint2018-05-23CSS
- vue cli 關閉程式碼檢查2017-12-14Vue
- JavaScript程式碼檢查工具對比2017-07-25JavaScript
- java 程式碼編譯檢查工具2024-04-18Java編譯
- 雷霆戰機 裝備進階材料攻略2014-04-29
- 愷撒大帝3中文光碟版去除CD檢測
(1千字)2015-11-15
- Teleport Pro破解實戰錄 (6千字)2000-05-28
- golangci-lint 程式碼檢查2021-08-11GolangGC
- (十八)前端使用eslint程式碼檢查2019-01-09前端EsLint
- 編譯檢查dsp程式碼的方法2018-11-20編譯
- android 程式碼質量檢查工具2018-09-13Android
- 利用 ESLint 檢查程式碼質量2016-08-31EsLint
- FindBugs:Java 靜態程式碼檢查2016-08-14Java
- sublime+jsxhint 做程式碼檢查2015-06-17JS
- CSS 程式碼靜態質量檢查2015-08-01CSS
- JavaScript 程式碼靜態質量檢查2015-07-15JavaScript
- 檢查中文的一段程式碼2009-04-28
- 《鐵甲風暴之黑色戰線》免CD破解手記 (5千字)2002-02-14
- Gitlab CI/CD 檔案編寫 推送程式碼 支援Psr規範性檢查,自動化Phpunit測試2021-06-11GitlabPHP
- 同行程式碼審查實戰分析2015-01-30行程
- 將ES6程式碼轉換為ES5程式碼2020-09-24
- 請看看我的程式碼2002-09-08
- 60個有用CSS程式碼片段2016-03-12CSS
- 大富翁6免CD破解2015-11-15
- git 服務搭建及提交程式碼檢查2019-01-09Git
- 60個有用CSS程式碼片段(二)2016-04-19CSS
- 30+有用的CSS程式碼片段2015-12-18CSS
- 很有用的HTML+JavaScript程式碼2011-04-24HTMLJavaScript
- Android有用程式碼片斷(六)2012-07-13Android