《新劍俠情緣》光碟版變硬碟版
前天去買了一張單張光碟的《新劍俠情緣》(正版要幾張不知道),安裝時看見上面只有500多MB安裝檔案,心想可能是硬碟版,正在暗暗高興俺的光碟機可以不受罪啦!,安裝完畢,取出光碟,馬上啟動遊戲,咚!!!!“請插入《新劍俠情緣》的第一號光碟,再重新執行本程式。”!!我X,D盤也,嗨,只得自己想辦法!
讀取光碟資訊的軟體(此類軟體多為遊戲軟體)一般要呼叫"GetDriveTypeA(判斷一個驅動器的型別)"以及"GetVolumeInformationA(返回卷標資訊)等相關API函式,所以只要反編譯成功後有針對性的分析這些函式所在位置的程式碼,並細心注意關鍵跳躍指令,往往起到事半功倍的效果。有時這些函式可能出現多個,也許單獨出現,也許混合出現,但80%以上都是對光碟進行校驗。
這就動手!
找到可執行檔案NewSword.exe,一看只有280多k,有點懷疑,就用fi檢查沒有加殼(可能讓D版者給脫了?!)。執行 W32dsm89
開啟NewSword.exe,反編譯成功後,單擊“Imports”檢視程式呼叫的相關函式,找到“KERNEL32.GetDriveTypeA”後雙擊將其開啟,我們可看到如下程式碼:
* Reference To: KERNEL32.SetErrorMode, Ord:0264h
|
:0040A507 8B2D20B04300 mov ebp, dword
ptr [0043B020]
* Reference To: KERNEL32.GetVolumeInformationA, Ord:0177h 0177h
<<----這裡是重點!!!!GetVolumeInformationA函式是獲得磁碟機代號卷標的,看看第一張光碟的卷標是什麼。
|
:0040A50D 8B1D24B04300 mov ebx, dword
ptr [0043B024]
:0040A513 C744241000000000 mov [esp+10], 00000000
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040A5A6(C)
|
:0040A51B 8D4C243C lea
ecx, dword ptr [esp+3C]
:0040A51F 51
push ecx
* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h <<-----API函式標誌,判斷一個驅動器的型別
|
:0040A520 FF1538B04300 Call dword ptr
[0043B038]
:0040A526 83F805 cmp
eax, 00000005 <<-----這是什麼!!!5代表是光碟機,3代表是硬碟,
:0040A529 7565
jne 0040A590 <<-----不等於5就跳,關鍵的一跳,磁碟機代號檢查,跳幾次就玩完
:0040A52B 6A01
push 00000001
:0040A52D FFD5
call ebp
:0040A52F 8BF0
mov esi, eax
:0040A531 6A00
push 00000000
:0040A533 8D542418 lea
edx, dword ptr [esp+18]
:0040A537 6A00
push 00000000
:0040A539 8D442420 lea
eax, dword ptr [esp+20]
:0040A53D 52
push edx
:0040A53E 50
push eax
:0040A53F 6A00
push 00000000
:0040A541 8D4C2430 lea
ecx, dword ptr [esp+30]
:0040A545 6A20
push 00000020
:0040A547 8D542454 lea
edx, dword ptr [esp+54]
:0040A54B 51
push ecx
:0040A54C 52
push edx
:0040A54D FFD3
call ebx
:0040A54F 56
push esi
:0040A550 8BF8
mov edi, eax
:0040A552 FFD5
call ebp
:0040A554 85FF
test edi, edi
:0040A556 7438
je 0040A590 <----關鍵的地方,卷標檢查,跳幾次就玩完!
此處以後會有用
:0040A558 8BB42490000000 mov esi, dword ptr
[esp+00000090]
:0040A55F 8D44241C lea
eax, dword ptr [esp+1C]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040A581(C)
|
:0040A563 8A10
mov dl, byte ptr [eax]
:0040A565 8ACA
mov cl, dl
:0040A567 3A16
cmp dl, byte ptr [esi]
:0040A569 751C
jne 0040A587
:0040A56B 84C9
test cl, cl
:0040A56D 7414
je 0040A583 <----關鍵的一跳,必須跳
:0040A56F 8A5001 mov
dl, byte ptr [eax+01]
:0040A572 8ACA
mov cl, dl
:0040A574 3A5601 cmp
dl, byte ptr [esi+01]
:0040A577 750E
jne 0040A587
:0040A579 83C002 add
eax, 00000002
:0040A57C 83C602 add
esi, 00000002
:0040A57F 84C9
test cl, cl
:0040A581 75E0
jne 0040A563
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040A56D(C)
|
:0040A583 33C0
xor eax, eax
:0040A585 EB05
jmp 0040A58C <----無條件跳,跳向遊戲可以執行的地方!
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040A569(C), :0040A577(C)
|
:0040A587 1BC0
sbb eax, eax
:0040A589 83D8FF sbb
eax, FFFFFFFF
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040A585(U)
|
:0040A58C 85C0
test eax, eax
:0040A58E 7436
je 0040A5C6 <----關鍵的必須跳,跳向遊戲可以執行的地方!
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040A529(C), :0040A556(C)
:0040A590 8A44243C mov
al, byte ptr [esp+3C] <<----關鍵的的地方!
:0040A594 FEC0
inc al
:0040A596 8844243C mov
byte ptr [esp+3C], al
:0040A59A 8B442410 mov
eax, dword ptr [esp+10]
:0040A59E 40
inc eax
:0040A59F 83F818 cmp
eax, 00000018 <-----將對24個英文字母(磁碟機代號)清掃一遍
:0040A5A2 89442410 mov
dword ptr [esp+10], eax
:0040A5A6 0F8C6FFFFFFF jl 0040A51B
<----又跳回,再來!跳幾次就玩完
* Possible StringData Ref from Data Obj ->"請插入《新劍俠情緣》的第一號光碟,再重新執行本"
->"程式。"
|
:0040A5AC 689C0A4400 push 00440A9C
* Reference To: Sword.?g_MessageBox@@YAXPADZZ, Ord:0308h
|
:0040A5B1 FF1558B14300 Call dword ptr
[0043B158]
:0040A5B7 83C404 add
esp, 00000004
:0040A5BA 33C0
xor eax, eax
:0040A5BC 5F
pop edi
:0040A5BD 5E
pop esi
:0040A5BE 5D
pop ebp
:0040A5BF 5B
pop ebx
:0040A5C0 83C47C add
esp, 0000007C
:0040A5C3 C20400 ret
0004
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040A58E(C)
|
:0040A5C6 5F
pop edi <<----遊戲可以執行的地方!
:0040A5C7 5E
pop esi
:0040A5C8 5D
pop ebp
:0040A5C9 B801000000 mov eax,
00000001
:0040A5CE 5B
pop ebx
:0040A5CF 83C47C add
esp, 0000007C
:0040A5D2 C20400 ret
0004
:0040A5D5 90
nop
:0040A5D6 90
nop
:0040A5D7 90
nop
:0040A5D8 90
nop
:0040A5D9 90
nop
:0040A5DA 90
nop
:0040A5DB 90
nop
:0040A5DC 90
nop
:0040A5DD 90
nop
:0040A5DE 90
nop
:0040A5DF 90
nop
* Referenced by a CALL at Address:
|:0040A449
|
:0040A5E0 56
push esi
:0040A5E1 57
push edi
:0040A5E2 8BF9
mov edi, ecx
好了,讓這個遊戲不讀光碟的方法有很多。
⑴ 把“0040A526 cmp eax, 00000005”改為“cmp eax, 00000003”,
用UltraEdit開啟NewSword.EXE檔案,
找到:83 F8 05 75 65
改為:83 F8 03 75 65 存檔,搞定!
或:找到:83 F8 05 75 65
改為:83 F8 05 74 65 存檔,搞定!
再把C:盤的卷標改成《新劍俠情緣》第一張光碟的卷標,
這個遊戲軟體不需要讀光碟上的某個檔案,只要卷標檢查透過就行。
⑵ 直接修改關鍵跳轉指令,直接繞過卷標檢查
仔細觀察,跳向“0040A5C6 ”,可以直接繞過卷標檢查,遊戲可以執行。
改什麼地方呢??
這裡,跳向“0040A590”的地方,共有兩處
:0040A529 7565
jne 0040A590
② :0040A556 7438
je 0040A590
把“0040A590”改為“0040A5C6”,用jumpgen算一下,①不行,②正好,運氣!!!
改0040A556 7438
je 0040A590
為0040A556 746E
je 0040A5C6
用UltraEdit開啟NewSword.EXE檔案,
找到:85 FF 74 38
改為:85 FF 74 6E 存檔,搞定!,只需改一個位元組就可以了。。。哈哈哈哈
不過,我有一疑問,只改以上跳轉指令直接繞過卷標檢查,就可以進入遊戲,那麼以下
:0040A526 83F805
cmp eax, 00000005 <<-----5代表是光碟機,3代表是硬碟,
:0040A529 7565
jne 0040A590 <<-----不等於5就跳
又有何用?請高手賜教!
後記
我寫這,是第一次,當然破解光碟遊戲也是第一次,真誠感謝看雪及他的《論壇精華Ⅲ》和《加密與解密--軟體保護技術與解決方案》一書,是他帶我上路。其實論起來,我還是看雪(段鋼)的師兄,而且我們曾同在一個校園待過(我1991年畢業於同濟大學,他1994年),我很以有此師弟為榮。
相關文章
- 光碟版變硬碟版(巧奪天工) (3千字)2001-10-04硬碟
- 光碟版遊戲變硬碟版遊戲2===>>月影傳說 (4千字)2001-08-23遊戲硬碟
- 劍俠情緣經典復刻! 《劍網1:歸來》今日10:00全平臺上線2021-10-15
- 上海大富翁1940硬碟版製作2015-11-15硬碟
- 劍俠聚首,再續前緣!《劍俠世界3》iOS測試定檔9月17日2021-09-08iOS
- 愷撒大帝3中文光碟版去除CD檢測
(1千字)2015-11-15
- 三角洲部隊之大地勇士光碟版的破解 (3千字)2001-08-24
- 再續劍俠情! 《龍武》手遊7月25日全平臺公測2019-07-25
- 難的不會,來個簡單的:破解極品飛車三光碟版 (9千字)2001-11-27
- 劍俠試玩團領銜!《劍俠世界3》7.20安卓首測蓄勢待發2021-07-16安卓
- 次世代武俠覺醒!《劍俠世界3》安卓首測今日開啟2021-07-20安卓
- 新一代劍俠覺醒!《劍俠世界3》iOS不付費刪檔測試定檔9月2021-08-25iOS
- 今日全平臺上線!《劍俠世界》手遊新門派丐幫火爆來襲!2021-06-10
- 《劍俠圖》試玩DEMO現已上架Steam,與製作組一同改變遊戲2021-12-09遊戲
- 新門派五毒來襲!《劍俠世界:起源》年度版3月6日公測2024-02-26
- 【新夢想幹貨連載】網路情緣之TCP的分包處理2019-11-05TCP
- 谷歌VR團隊招硬體和光學人才,或開發新VR裝置2018-03-01谷歌VR
- 武俠遊戲演變史:從“俠客英雄傳”到“只狼”2019-05-14遊戲
- 未來20年,地緣政治的新變數居然是它們……2015-10-27變數
- Facebook收購《節奏光劍》開發商Beat Games2019-11-27GAM
- 武俠遊戲買量素材演變史2020-08-14遊戲
- 曠視融資場景落地、依圖發晶片搞一體化,AI產業緣何"由軟變硬"?2019-05-10晶片AI產業
- 中通的雙刃劍:市值新高與模式硬傷2020-03-30模式
- 國產武俠遊戲有了新標杆2023-12-19遊戲
- 別了,網路情緣(轉帖,有刪節)2007-04-25
- 群俠星推官全面集結 《新射鵰群俠傳》手遊今日iOS上線2020-08-20iOS
- 武俠沙盒、二次元Roguelike……騰訊極光計劃簽了4款多要素融合的創新遊戲2019-08-12二次元遊戲
- 《劍俠世界3》iOS測試今日開啟 熱血家族宣傳片曝光2021-09-17iOS
- 我與訊息佇列的八年情緣2022-01-12佇列
- SUBBE水下呼吸系統輕便又智慧:秒變變身潛水俠2016-09-08
- 邊緣計算如何改變企業IT2018-09-21
- Cicret Bracelet投影智慧手錶:秒變鋼鐵俠2016-10-17
- 短訊 | 《節奏光劍》全平臺累計銷量破 400 萬2021-02-05
- 群俠匯聚經典再現 《新射鵰群俠傳》今日全平臺震撼上線2020-08-27
- 乾貨分享|網路情緣之TCP的握手和分手2022-05-31TCP
- 談談我和大資料的情緣及入門2017-04-16大資料
- 印章怎麼變成剛硬章2024-03-13
- 《大俠立志傳》試玩簡評:NPC互動劇情的遊戲特色2023-03-10遊戲