上海大富翁1940硬碟版製作
這是我學crack後的第一篇關於crack的文章,不對的地方請各位兄弟姐妹多指教。另外,哪位幫忙pj一下smart goj2000?我折騰了好久都沒搞定。
* Referenced
by a (U)nconditional or (C)onditional Jump at Address:
|:00401E42(U)
|
:004325C0
81EC00010000 sub esp, 00000100
:004325C6
56 push
esi
:004325C7 57
push edi
*
Reference To: KERNEL32.GetDriveTypeA, Ord:0104h
|
:004325C8 8B3D5CC44600 mov
edi, dword ptr [0046C45C]
:004325CE BE41000000
mov esi, 00000041
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00432653(C)
|
:004325D3
56 push
esi
:004325D4 8D84248C000000 lea eax, dword
ptr [esp+0000008C]
*
Possible StringData Ref from Data Obj ->"%c:\"
|
:004325DB 68880D4600
push 00460D88
:004325E0 50
push eax
:004325E1 E89A1A0000
call 00434080
:004325E6 83C40C
add esp, 0000000C
:004325E9
8D8C2488000000 lea ecx, dword ptr [esp+00000088]
:004325F0
51 push
ecx
:004325F1 FFD7
call edi
:004325F3 83F805
cmp eax, 00000005 <--------判斷是否為光碟機,可以改為判斷是否為硬碟
:004325F6
7554 jne
0043264C<------------進一步尋找光碟機
:004325F8 56
push esi
:004325F9 8D54240C
lea edx, dword ptr [esp+0C]
*
Possible StringData Ref from Data Obj ->"%c:\sprite\1940.col"<---在當前盤根目錄下讀取此檔案
|
:004325FD 68700D4600
push 00460D70
:00432602 52
push edx
:00432603 E8781A0000
call 00434080
:00432608 8D442414
lea eax, dword ptr [esp+14]
*
Possible StringData Ref from Data Obj ->"rb"
|
:0043260C 68B0B74500
push 0045B7B0
:00432611 50
push eax
:00432612 E8C9240000
call 00434AE0
:00432617 83C414
add esp, 00000014
:0043261A
85C0 test
eax, eax
:0043261C 0F85BB000000 jne
004326DD <---------檔案讀取成功,遊戲轉入正常執行,否則進一步尋找
:00432622 56
push esi
:00432623 8D4C240C
lea ecx, dword ptr [esp+0C]
*
Possible StringData Ref from Data Obj ->"%c:\1940\sprite\1940.col"<---在當前盤根目錄下讀取此檔案
|
:00432627 68500D4600
push 00460D50
:0043262C 51
push ecx
:0043262D E84E1A0000
call 00434080
:00432632 8D542414
lea edx, dword ptr [esp+14]
*
Possible StringData Ref from Data Obj ->"rb"
|
:00432636 68B0B74500
push 0045B7B0
:0043263B 52
push edx
:0043263C E89F240000
call 00434AE0
:00432641 83C414
add esp, 00000014
:00432644
85C0 test
eax, eax
:00432646 0F8591000000 jne
004326DD <---------檔案讀取成功,遊戲轉入正常執行,否則進一步尋找
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004325F6(C)
|
:0043264C
46 inc
esi
:0043264D 8D46C0
lea eax, dword ptr [esi-40]
:00432650 83F81A
cmp eax, 0000001A <-------------從a-z順次查詢
:00432653
0F8E7AFFFFFF jle 004325D3
:00432659 68AA000000 push
000000AA<-----沒有找到,提示錯誤
:0043265E 68B4000000
push 000000B4
:00432663 B94C8A4600
mov ecx, 00468A4C
:00432668 E807F3FCFF
call 00401974
:0043266D B94C8A4600
mov ecx, 00468A4C
:00432672 E8C7F1FCFF
call 0040183E
:00432677 6A02
push 00000002
:00432679
B94C8A4600 mov ecx, 00468A4C
:0043267E
E8A0F3FCFF call 00401A23
:00432683
68F6000000 push 000000F6
:00432688
68F4000000 push 000000F4
:0043268D
68F4000000 push 000000F4
:00432692
6A00 push
00000000
* Possible
StringData Ref from Data Obj ->"請插入遊戲光碟!"
|
:00432694 683C0D4600
push 00460D3C
:00432699 B94C8A4600
mov ecx, 00468A4C
:0043269E E840F2FCFF
call 004018E3
:004326A3 B94C8A4600
mov ecx, 00468A4C
:004326A8 E899F3FCFF
call 00401A46
:004326AD B9C87D4600
mov ecx, 00467DC8
:004326B2 E85EEDFCFF
call 00401415
:004326B7 B9C87D4600
mov ecx, 00467DC8
:004326BC
E84EF3FCFF call 00401A0F
:004326C1
A144CA4500 mov eax, dword ptr
[0045CA44]
:004326C6 8D0C40
lea ecx, dword ptr [eax+2*eax]
:004326C9 D1E1
shl ecx, 1
:004326CB 51
push ecx
*
Reference To: KERNEL32.Sleep, Ord:0296h
|
:004326CC
FF1538C44600 Call dword ptr [0046C438]
:004326D2
5F pop
edi
:004326D3 32C0
xor al, al
:004326D5 5E
pop esi
:004326D6 81C400010000
add esp, 00000100
:004326DC C3
ret
*
Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0043261C(C),
:00432646(C)
|
:004326DD 50
push eax
:004326DE E89D1D0000
call 00434480
:004326E3 83C404
add esp, 00000004
:004326E6 B001
mov al, 01
:004326E8
5F pop
edi
:004326E9 5E
pop esi
:004326EA 81C400010000
add esp, 00000100
:004326F0 C3
ret
根據以上的分析,“1940.col”存放路徑有兩個,"%c:\sprite\1940.col"或"%c:\1940\sprite\1940.col"。除此以外
即使是光碟也將提示"請插入遊戲光碟!",所以“1940.col”存放路徑也需要修改,可以選擇第一個來修改。
這樣需要修改的地方有兩處:
:004325F3
83F805 cmp eax,
00000005 <--------判斷是否為光碟機,改為判斷是否為硬碟
:00432627 68500D4600
push 00460D50 <-------1940.col存放路徑,改為實際硬碟路徑
由於"1940.col"的存放路徑可能很深,而程式本身分配的地方實在可憐,所以需要徵用大片土地來存放完整路徑
00460D3C:"請插入遊戲光碟!",crack後,就沒有用了,徵用這塊地方。
00460D70:"%c:\sprite\1940.col",本來就要使用
00460D50:"%c:\1940\sprite\1940.col",crack後,就沒有用了,徵用!
這樣可以使用的空間大約80個位元組。所以"1940.col"的路徑就要進行限制了,我把1940.exe的安裝路徑長度限制在60,不過一般不會超出此長度,至於二般情況我就$#$^%$^%$。
下面是補丁,不足之處請各位大蝦多指點
//borland
c++ builder5.0
#pragma hdrstop
#include <fstream.h>
#include <string.h>
#include
<assert.h>
//---------------------------------------------------------------------------
#pragma
argsused
int main(int argc, char* argv[])
{
char str[80];
GetCurrentDirectory(65,str);
if(strlen(str)>60)
{
cout<<"error";
exit(0);
}
strcat(str,"\\sprite\\1940.col");
ifstream in("1940.exe",ios::in|ios::out);
ostream out(in.rdbuf());
//modify check for cdrom
out.seekp(0x325F5,ios::beg);
out<<(char)0x03;
//modify path of "1940.col"
out.seekp(0x60D37,ios::beg);
for(unsigned int i=0;i<strlen(str);i++)
out<<(char)str[i];
out<<(char)0;
out.seekp(0x60D36,ios::beg);
out<<(char)0x25<<(char)0x63;
//modify reference to path of(1940.col)
out.seekp(0x325FE,ios::beg);
out<<(char)0x36;
in.close();
return 0;
}
//-------------<
相關文章
- 易6畫 - 線上海報ppt製作平臺2024-03-02
- 《新劍俠情緣》光碟版變硬碟版2015-11-15硬碟
- 光碟版變硬碟版(巧奪天工) (3千字)2001-10-04硬碟
- 光碟版遊戲變硬碟版遊戲2===>>月影傳說 (4千字)2001-08-23遊戲硬碟
- 大富翁6免CD破解2015-11-15
- Blender 效果製作:製作起伏不平的路面2024-11-17
- Html 製作2010-11-17HTML
- 上海疫情實時動態地圖製作,疫情風控區域地圖”助力精準防疫!2022-05-13地圖
- 價目表製作報價單製作軟體2019-02-24
- 製作原生APP2017-02-23APP
- 地圖製作2015-01-06地圖
- 如何製作DVDrip?2009-02-04
- proxmox映象製作2024-06-15
- 製作KubeVirt映象2024-07-23
- 製作Docker映象2024-05-29Docker
- excel製作表格時 怎麼製作Excel斜表頭2016-06-18Excel
- 告訴你製作直播平臺都需要什麼硬體和軟體的乾貨文2018-12-06
- 硬體開發筆記(四):硬體開發基本流程,製作一個USB轉RS232的模組(三):設計原理圖2022-06-03筆記
- EDM郵件製作2020-06-28
- Dockerfile映象的製作2019-06-20Docker
- 製作 Cocoapods 庫2021-07-03
- svg製作及使用2018-11-28SVG
- Docker製作jdk映象2020-12-21DockerJDK
- 影片製作大師2020-12-05
- blufftitler 13,動畫製作2022-01-27FFT動畫
- Docker 映象製作方法2021-01-27Docker
- unity製作刮刮樂效果2018-01-25Unity
- logo線上製作2017-09-26Go
- 小遊戲的製作2018-05-13遊戲
- 製作原生APP(二)2017-02-23APP
- 製作比特幣2016-04-18比特幣
- 製作ISO檔案2014-03-01
- iOS 動畫製作方法。2014-10-10iOS動畫
- ubuntu製作本地源2014-07-29Ubuntu
- 手機遊戲製作揭秘2004-03-22遊戲
- YashanDB Docker映象製作2024-09-30Docker
- oracle製作docker映象2024-09-12OracleDocker
- MYSQL主從複製製作配置方案2018-06-11MySql