大富翁6免CD破解

看雪資料發表於2015-11-15

最近想試一下光碟機的不定破解,所以找同學借了一張光碟版的遊戲,順便自己
爽爽,哪知是小李飛刀,兩張碟,Cao,要1.8G,我的硬碟實在太小,本以為最後的
C盤能夠搞定它(1.2G),哪知....哎....後來換了一個大富翁6,以前看過大眾軟體
它總是排在前面!來試一試!
  OK!裝好遊戲,執行程式,進入遊戲,剛剛Loading完,當機!鬱悶....
  看來機器太差了,賽揚700,128M,重起後,拿出光碟,執行程式,提示要你插入光
盤,W32Dasm開啟程式,有一個及時模式,一個回合模式!我們開啟及時模式,我們
查詢GetDriveTypeA,地方如下:

* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h
                                  |
:0047C830 8B3590504900            mov esidword ptr [00495090]
:0047C836 B343                    mov bl, 43

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047C87D(C)
|
:0047C838 0FBEC3                  movsx eaxbl
:0047C83B 50                      push eax

* Possible StringData Ref from Data Obj ->"%c:\

大富翁6免CD補丁:

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;大富翁6免CD補丁,Made By dengkeng ,Link By MASM32 V8
;E-Mail:shellc0de@sohu.com  
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    .486                       ; create 32 bit code
    .model flat, stdcall       ; 32 bit memory model
    option casemap :none       ; case sensitive

    include masm32includewindows.inc
    include masm32includemasm32.inc
    include masm32includegdi32.inc
    include masm32includeuser32.inc
    include masm32includekernel32.inc
    include masm32includeComctl32.inc
    include masm32includecomdlg32.inc
    include masm32includeshell32.inc
    include masm32includeoleaut32.inc

    includelib masm32libmasm32.lib
    includelib masm32libgdi32.lib
    includelib masm32libuser32.lib
    includelib masm32libkernel32.lib
    includelib masm32libComctl32.lib
    includelib masm32libcomdlg32.lib
    includelib masm32libshell32.lib
    includelib masm32liboleaut32.lib
     
.data?

hInstance  dd  ?
hFile    dd  ?
szFileName  db  MAX_PATH dup (?)
szName    db  MAX_PATH dup (?)
szBuffer  db  1024 dup (?)
BakPath    db  128  dup (?)
lFileSize  dd  ?
lFileOffset  dd  ?

.const

szCaption  db  'Richman6',0
szFilter  db  'exe(*.exe)',0,'*.exe',0,0
szTitle    db  '開啟大富翁6',0
szErrOpen  db  '不能開啟檔案,請在試一次!',13,10,0
szErrSize  db  '檔案可能已經被修改,請重新複製一份原檔案!',13,10,0
szErrPointer  db  '檔案指標設定錯誤!',13,10,0
szErrWrite  db  '檔案不能寫入!',13,10,0
szPatchOK  db  '檔案成功修補!',13,10
    db  '歡迎使用大富翁6及時模式補丁!',13,10
    db  'Made By dengkeng!',13,10,0
szOpenSccessful db  '檔案成功開啟,接著將為您修復大富翁6!',13,10,0
HeModel    db  '您所開啟的是大富翁6的回合模式!',0
JsModel    db  '您所開啟的是大富翁6的及時模式!',0
HeHe    db  'Cao,你總該選點什麼吧?',0
BakFile    db  '現在為您備份檔案!',0
BakName    db  '.bak',0
lChanges  dd  2h
BytesToWrite  db  74h,26h
lByteWriten  dd  0
szGameName  db  'rich6_t.exe'

.code


_OpenFile  proc
    local  @stOF:OPENFILENAME

    invoke  RtlZeroMemory,addr @stOF,sizeof @stOF
    mov  @stOF.lStructSize,sizeof @stOF
    push  hInstance
    pop  @stOF.hInstance
    mov  @stOF.lpstrTitle,offset szTitle
    mov  @stOF.lpstrFilter,offset szFilter
                mov  @stOF.lpstrFile,offset szFileName ;全路徑的檔名
    mov  @stOF.lpstrFileTitle,offset szName ;不包含路徑名
    mov  @stOF.nMaxFile,MAX_PATH
    mov  @stOF.Flags,OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST
    invoke  GetOpenFileName,addr @stOF
    .if  eax
      invoke  MessageBox,hInstance,addr szOpenSccessful,addr szCaption,MB_OK
    .endif
    ret

_OpenFile  endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
    invoke  GetModuleHandle,NULL
    mov  hInstance,eax
    invoke  _OpenFile

    cmp  eax,FALSE
    mov  ebx,offset HeHe
    jz  openerr

    invoke  lstrcpy,addr BakPath,addr szFileName
    invoke  lstrcat,addr BakPath,addr BakName
    invoke  MessageBox,NULL,addr BakFile,offset szTitle,MB_OK
    invoke  CopyFile,addr szFileName,addr BakPath,FALSE ;備份檔案

    invoke  lstrcmp,addr szName,addr szGameName
    cmp  eax,0 ;判斷是否為回合模式
    jnz  @1
    invoke  MessageBox,hInstance,addr HeModel,addr szTitle,MB_OK
    mov  edx,802A0h ;對檔案的大小及其偏移進行修改,使其成為回合模式
    mov  lFileOffset,edx
    mov  edx,704512
    mov  lFileSize,edx
    jmp  @2
  @1:
    invoke  MessageBox,hInstance,addr JsModel,addr szTitle,MB_OK
    mov  edx,7C850h ;對檔案的大小及其偏移進行修改,使其成為及時模式
    mov  lFileOffset,edx
    mov  edx,688128
    mov  lFileSize,edx
    

  @2:  invoke  CreateFile,addr szFileName,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
    cmp  eax,-1
    mov  ebx,offset szErrOpen
    jz  openerr
    mov  hFile,eax
    
    invoke  GetFileSize,hFile,NULL
    cmp  eax,lFileSize
    mov  ebx,offset szErrSize
    jnz  err


    invoke  SetFilePointer,hFile,lFileOffset,NULL,FILE_BEGIN
    cmp  eax,-1
    mov  ebx,offset szErrPointer
    jz  err

    invoke  WriteFile,hFile,offset BytesToWrite,lChanges,offset lByteWriten,NULL
    test  eax,eax
    mov  ebx,offset szErrWrite
    jz  err
    mov  ebx,offset szPatchOK
  err:  
    invoke  CloseHandle,hFile
  openerr:invoke  MessageBox,NULL,ebx,offset szTitle,MB_OK

    invoke  ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    end  start


大俠見笑!!!!!!

相關文章