| 本帖最后由 美鵺赤月 于 2012-4-12 05:28 编辑 
 游戏版本 1.30
 
 
 破解手记
 
 004E4080   .  E8 FB90F2FF   call 0040D180                     ;  F7进入这个Call
 
 0040D180  /$  55            push ebp
 0040D181  |.  8BEC          mov ebp,esp
 0040D183  |.  83E4 F8       and esp,-0x8
 0040D186  |.  83EC 28       sub esp,0x28
 0040D189  |.  E8 8C420D00   call 004E141A
 0040D18E  |.  A3 5CE67600   mov dword ptr ds:[0x76E65C],eax
 0040D193  |.  E8 18020000   call 0040D3B0
 0040D198  |.  85C0          test eax,eax
 0040D19A  |.  75 06         jnz short 0040D1A2
 0040D19C  |.  8BE5          mov esp,ebp
 0040D19E  |.  5D            pop ebp
 0040D19F  |.  C2 1000       retn 0x10
 0040D1A2  |>  8B45 08       mov eax,[arg.1]
 0040D1A5  |.  8B4D 14       mov ecx,[arg.4]
 0040D1A8  |.  890424        mov dword ptr ss:[esp],eax
 0040D1AB  |.  33C0          xor eax,eax
 0040D1AD  |.  894C24 04     mov dword ptr ss:[esp+0x4],ecx
 0040D1B1  |.  894424 08     mov dword ptr ss:[esp+0x8],eax
 0040D1B5  |.  894424 0C     mov dword ptr ss:[esp+0xC],eax
 0040D1B9  |.  894424 10     mov dword ptr ss:[esp+0x10],eax
 0040D1BD  |.  894424 14     mov dword ptr ss:[esp+0x14],eax
 0040D1C1  |.  894424 18     mov dword ptr ss:[esp+0x18],eax
 0040D1C5  |.  894424 1C     mov dword ptr ss:[esp+0x1C],eax
 0040D1C9  |.  894424 20     mov dword ptr ss:[esp+0x20],eax
 0040D1CD  |.  8B45 10       mov eax,[arg.3]
 0040D1D0  |.  8D0C24        lea ecx,dword ptr ss:[esp]
 0040D1D3  |.  C74424 24 C44>mov dword ptr ss:[esp+0x24], 00554>
 0040D1DB  |.  E8 9045FFFF   call 00401770                     ;  继续F7进入这个CALL
 0040D1E0  |.  8BE5          mov esp,ebp
 0040D1E2  |.  5D            pop ebp
 0040D1E3  \.  C2 1000       retn 0x10
 
 00401770  /$  53            push ebx
 00401771  |.  56            push esi
 00401772  |.  57            push edi
 00401773  |.  8BF1          mov esi,ecx
 00401775  |.  E8 F6D00800   call 0048E870
 0040177A  |.  33DB          xor ebx,ebx
 0040177C  |.  84C0          test al,al
 0040177E  |.  74 44         je short 004017C4
 00401780  |.  8BFE          mov edi,esi
 00401782  |.  E8 69BA0000   call 0040D1F0                     ;  主要判断的CALL F7进入
 00401787  |.  84C0          test al,al
 
 0040D215  |.  E8 A6140D00   call 004DE6C0                     ;  主要的CALL F7进入Call
 
 004DE6C0      83EC 30       sub esp,0x30                             ;  修改这一段 达到屏蔽Reg.dll的目的 改成 Mov eax,1 \n retn
 004DE6C3      A1 58B45400   mov eax,dword ptr ds:[0x54B458]
 004DE6C8  |.  33C4          xor eax,esp
 004DE6CA  |.  894424 2C     mov dword ptr ss:[esp+0x2C],eax
 004DE6CE  |.  53            push ebx
 004DE6CF  |.  55            push ebp
 004DE6D0  |.  8B6C24 3C     mov ebp,dword ptr ss:[esp+0x3C]
 004DE6D4  |.  56            push esi
 004DE6D5  |.  57            push edi
 004DE6D6  |.  68 1CD65300   push 0053D61C                     ; /FileName = "reg.dll"
 004DE6DB  |.  FF15 F4B05100 call dword ptr ds:[<&KERNEL32.LoadLibrar>; \LoadLibraryA
 004DE6E1  |.  8BF0          mov esi,eax
 004DE6E3  |.  33FF          xor edi,edi
 004DE6E5  |.  3BF7          cmp esi,edi
 004DE6E7  |.  74 19         je short 004DE702
 004DE6E9  |.  68 24D65300   push 0053D624                     ; /ProcNameOrOrdinal = "sarcheck"
 004DE6EE  |.  56            push esi                                 ; |hModule
 004DE6EF  |.  FF15 F0B05100 call dword ptr ds:[<&KERNEL32.GetProcAdd>; \GetProcAddress
 004DE6F5  |.  8BD8          mov ebx,eax
 004DE6F7  |.  3BDF          cmp ebx,edi
 004DE6F9  |.  75 1D         jnz short 004DE718
 004DE6FB  |.  56            push esi                                 ; /hLibModule
 004DE6FC  |.  FF15 E8B05100 call dword ptr ds:[<&KERNEL32.FreeLibrar>; \FreeLibrary
 004DE702  |>  83C8 FF       or eax,-0x1
 004DE705  |.  5F            pop edi
 004DE706  |.  5E            pop esi
 004DE707  |.  5D            pop ebp
 004DE708  |.  5B            pop ebx
 004DE709  |.  8B4C24 2C     mov ecx,dword ptr ss:[esp+0x2C]
 004DE70D  |.  33CC          xor ecx,esp
 004DE70F  |.  E8 541F0000   call 004E0668
 004DE714  |.  83C4 30       add esp,0x30
 004DE717  |.  C3            retn
 
 
 
 00401791  |.  E8 2A6D0C00   call 004C84C0                     ;  屏蔽Reg.dll后提示错误的CALL F7进入Call
 
 004C84C0  /$  8B46 24       mov eax,dword ptr ds:[esi+0x24]
 004C84C3  |.  8B08          mov ecx,dword ptr ds:[eax]
 004C84C5  |.  83EC 24       sub esp,0x24
 004C84C8  |.  890D ACDF7400 mov dword ptr ds:[0x74DFAC],ecx
 004C84CE  |.  E8 4DB6FDFF   call 004A3B20                     ;  提示错误CALL F7进入Call
 
 004A3B20  /$  83EC 14       sub esp,0x14
 004A3B23  |.  E8 2AFD0300   call 004E3852
 004A3B28  |.  68 00030000   push 0x300
 004A3B2D  |.  8D4424 04     lea eax,dword ptr ss:[esp+0x4]
 004A3B31  |.  6A 00         push 0x0
 004A3B33  |.  50            push eax
 004A3B34  |.  E8 81FB0300   call 004E36BA
 004A3B39  |.  83C4 0C       add esp,0xC
 004A3B3C  |.  68 00000300   push 0x30000
 004A3B41  |.  8D4C24 04     lea ecx,dword ptr ss:[esp+0x4]
 004A3B45  |.  6A 00         push 0x0
 004A3B47  |.  51            push ecx
 004A3B48  |.  E8 6DFB0300   call 004E36BA
 004A3B4D  |.  83C4 0C       add esp,0xC
 004A3B50  |.  8D5424 08     lea edx,dword ptr ss:[esp+0x8]
 004A3B54  |.  52            push edx                                 ; /pClusters
 004A3B55  |.  8D4424 10     lea eax,dword ptr ss:[esp+0x10]          ; |
 004A3B59  |.  50            push eax                                 ; |pFreeClusters
 004A3B5A  |.  8D4C24 0C     lea ecx,dword ptr ss:[esp+0xC]           ; |
 004A3B5E  |.  51            push ecx                                 ; |pBytesPerSector
 004A3B5F  |.  8D5424 1C     lea edx,dword ptr ss:[esp+0x1C]          ; |
 004A3B63  |.  52            push edx                                 ; |pSectorsPerCluster
 004A3B64  |.  6A 00         push 0x0                                 ; |RootPathName = NULL
 004A3B66  |.  FF15 A0B05100 call dword ptr ds:[<&KERNEL32.GetDiskFre>; \GetDiskFreeSpaceA
 004A3B6C  |.  8B4424 04     mov eax,dword ptr ss:[esp+0x4]
 004A3B70  |.  85C0          test eax,eax
 004A3B72  |.  C705 BC495500>mov dword ptr ds:[0x5549BC],0x1000
 004A3B7C  |.  74 05         je short 004A3B83
 004A3B7E  |.  A3 BC495500   mov dword ptr ds:[0x5549BC],eax
 004A3B83  |>  C705 88E67600>mov dword ptr ds:[0x76E688],0x1
 004A3B8D  |.  E8 5EF1F7FF   call 00422CF0
 004A3B92  |.  85C0          test eax,eax
 004A3B94      75 29         jnz short 004A3BBF                ;  跳过破解检测 Jnz 改成 Jmp
 004A3B96  |.  68 E8030000   push 0x3E8                               ; /Timeout = 1000. ms
 004A3B9B  |.  FF15 D0B15100 call dword ptr ds:[<&KERNEL32.Sleep>]    ; \Sleep
 004A3BA1  |.  A1 ACDF7400   mov eax,dword ptr ds:[0x74DFAC]
 004A3BA6  |.  6A 00         push 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
 004A3BA8  |.  68 D4A95300   push  0053A9D4                     ; |Title = "儔僀僙儞僗俬俢僄儔乕"
 004A3BAD  |.  68 ECA95300   push  0053A9EC                     ; |Text = "儔僀僙儞僗俬俢偺撉傒崬傒偵幐攕偟傑偟偨丅廔椆偟傑偡丅"
 004A3BB2  |.  50            push eax                                 ; |hOwner => 003003EA ('MELTY BLOOD Actress Again Cur...',class='MELTY BLOOD Actress Again Cur...')
 004A3BB3  |.  FF15 78B25100 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
 004A3BB9  |.  32C0          xor al,al
 004A3BBB  |.  83C4 14       add esp,0x14
 004A3BBE  |.  C3            retn
 004A3BBF  |>  E8 0CF3F7FF   call 0422ED0
 004A3BC4  |.  85C0          test eax,eax
 004A3BC6      75 2A         jnz short 004A3BF2                ;  跳过破解检测 Jnz 改成 Jmp
 004A3BC8  |.  68 E8030000   push 0x3E8                               ; /Timeout = 1000. ms
 004A3BCD  |.  FF15 D0B15100 call dword ptr ds:[<&KERNEL32.Sleep>]    ; \Sleep
 004A3BD3  |.  8B0D ACDF7400 mov ecx,dword ptr ds:[0x74DFAC]
 004A3BD9  |.  6A 00         push 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
 004A3BDB  |.  68 D4A95300   push 0053A9D4                     ; |Title = "儔僀僙儞僗俬俢僄儔乕"
 004A3BE0  |.  68 ECA95300   push 0053A9EC                     ; |Text = "儔僀僙儞僗俬俢偺撉傒崬傒偵幐攕偟傑偟偨丅廔椆偟傑偡丅"
 004A3BE5  |.  51            push ecx                                 ; |hOwner => 003003EA ('MELTY BLOOD Actress Again Cur...',class='MELTY BLOOD Actress Again Cur...')
 004A3BE6  |.  FF15 78B25100 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
 004A3BEC  |.  32C0          xor al,al
 004A3BEE  |.  83C4 14       add esp,0x14
 004A3BF1  |.  C3            retn
 004A3BF2  |>  B0 01         mov al,0x1
 004A3BF4  |.  83C4 14       add esp,0x14
 004A3BF7  \.  C3            retn
 
 
 
 004C84D3  |.  84C0          test al,al
 004C84D5  |.  74 39         je short 004C8510
 004C84D7  |.  8BC6          mov eax,esi
 004C84D9  |.  E8 22B7FDFF   call 004A3C00
 004C84DE  |.  84C0          test al,al
 004C84E0  |.  74 2E         je short 004C8510
 004C84E2  |.  56            push esi
 004C84E3  |.  E8 58B7FDFF   call 004A3C40
 004C84E8  |.  83C4 04       add esp,0x4
 004C84EB  |.  84C0          test al,al
 004C84ED  |.  74 21         je short 004C8510
 004C84EF  |.  E8 BC62F5FF   call  0041E7B0
 004C84F4  |.  84C0          test al,al
 004C84F6  |.  75 1E         jnz short .004C8516
 004C84F8  |.  8B56 24       mov edx,dword ptr ds:[esi+0x24]
 004C84FB  |.  8B02          mov eax,dword ptr ds:[edx]
 004C84FD  |.  6A 00         push 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
 004C84FF  |.  68 1C875300   push 0053871C                     ; |Title = "Error"
 004C8504  |.  68 68A95300   push 0053A968                     ; |Text = "僨乕僞僼傽僀儖偺儘乕僪偵幐攕偟傑偟偨丅
 僀儞僗僩乕儖偟捈偟偰壓偝偄丅"
 004C8509  |.  50            push eax                                 ; |hOwner
 004C850A  |.  FF15 78B25100 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
 004C8510  |>  32C0          xor al,al
 004C8512  |.  83C4 24       add esp,0x24
 004C8515  |.  C3            retn
 004C8516  |> \8BC6          mov eax,esi
 004C8518  |.  E8 53B7FDFF   call 004A3C70                     ;  错误信息提示框
 
 004A3C70  /$  83EC 08       sub esp,0x8
 004A3C73  |.  8B48 24       mov ecx,dword ptr ds:[eax+0x24]
 004A3C76  |.  56            push esi
 004A3C77  |.  8B31          mov esi,dword ptr ds:[ecx]
 004A3C79  |.  897424 08     mov dword ptr ss:[esp+0x8],esi
 004A3C7D  |.  E8 9EFAFFFF   call 004A3720
 004A3C82  |.  E8 B9B2FEFF   call 0048EF40
 004A3C87  |.  E8 F4F0F7FF   call 00422D80
 004A3C8C  |.  85C0          test eax,eax
 004A3C8E  |.  75 2B         jnz short 004A3CBB                ;  跳过破解检测   Jnz 改成 Jmp
 004A3C90  |.  68 E8030000   push 0x3E8                               ; /Timeout = 1000. ms
 004A3C95  |.  FF15 D0B15100 call dword ptr ds:[<&KERNEL32.Sleep>]    ; \Sleep
 004A3C9B  |.  8B15 ACDF7400 mov edx,dword ptr ds:[0x74DFAC]
 004A3CA1  |.  6A 00         push 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
 004A3CA3  |.  68 D4A95300   push 0053A9D4                     ; |Title = "儔僀僙儞僗俬俢僄儔乕"
 004A3CA8  |.  68 ECA95300   push 0053A9EC                     ; |Text = "儔僀僙儞僗俬俢偺撉傒崬傒偵幐攕偟傑偟偨丅廔椆偟傑偡丅"
 004A3CAD  |.  52            push edx                                 ; |hOwner => 003003EA ('MELTY BLOOD Actress Again Cur...',class='MELTY BLOOD Actress Again Cur...')
 004A3CAE  |.  FF15 78B25100 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
 004A3CB4  |>  32C0          xor al,al
 004A3CB6  |.  5E            pop esi
 004A3CB7  |.  83C4 08       add esp,0x8
 004A3CBA  |.  C3            retn
 004A3CBB  |> \E8 50010000   call 004A3E10
 004A3CC0  |.  84C0          test al,al
 004A3CC2  |.^ 74 F0         je short 004A3CB4
 004A3CC4  |.  6A 00         push 0x0                                 ; /lParam = NULL
 004A3CC6  |.  68 501A4A00   push 004A1A50                     ; |DlgProc = 004A1A50
 004A3CCB  |.  56            push esi                                 ; |hOwner
 004A3CCC  |.  6A 66         push 0x66                                ; |pTemplate = 66
 004A3CCE  |.  6A FA         push -0x6                                ; |/Index = GWL_HINSTANCE
 004A3CD0  |.  56            push esi                                 ; ||hWnd
 004A3CD1  |.  FF15 DCB25100 call dword ptr ds:[<&USER32.GetWindowLon>; |\GetWindowLongA
 004A3CD7  |.  50            push eax                                 ; |hInst
 004A3CD8  |.  FF15 74B25100 call dword ptr ds:[<&USER32.DialogBoxPar>; \加载到这里出现设置窗口
 004A3CDE  |.  85C0          test eax,eax
 004A3CE0  |.^ 74 D2         je short 004A3CB4
 004A3CE2  |.  E8 D9FCFFFF   call 004A39C0
 004A3CE7  |.  E8 64B8FEFF   call 0048F550
 004A3CEC  |.  8D4424 08     lea eax,dword ptr ss:[esp+0x8]
 004A3CF0  |.  E8 AB9BF6FF   call 0040D8A0
 004A3CF5  |.  E8 D6000000   call 004A3DD0                     ;  错误提示CALL F7进入Call
 004A3CFA  |.  84C0          test al,al
 004A3CFC  |.  0F95C0        setne al
 004A3CFF  |.  5E            pop esi
 004A3D00  |.  83C4 08       add esp,0x8
 004A3D03  \.  C3            retn
 
 
 004A3CBB  |> \E8 50010000   call 004A3E10
 004A3CC0  |.  84C0          test al,al
 004A3CC2  |.^ 74 F0         je short 004A3CB4
 004A3CC4  |.  6A 00         push 0x0                                 ; /lParam = NULL
 004A3CC6  |.  68 501A4A00   push .004A1A50                     ; |DlgProc = 004A1A50
 004A3CCB  |.  56            push esi                                 ; |hOwner
 004A3CCC  |.  6A 66         push 0x66                                ; |pTemplate = 66
 004A3CCE  |.  6A FA         push -0x6                                ; |/Index = GWL_HINSTANCE
 004A3CD0  |.  56            push esi                                 ; ||hWnd
 004A3CD1  |.  FF15 DCB25100 call dword ptr ds:[<&USER32.GetWindowLon>; |\GetWindowLongA
 004A3CD7  |.  50            push eax                                 ; |hInst
 004A3CD8  |.  FF15 74B25100 call dword ptr ds:[<&USER32.DialogBoxPar>; \加载到这里出现设置窗口
 004A3CDE  |.  85C0          test eax,eax
 004A3CE0  |.^ 74 D2         je short 004A3CB4
 004A3CE2  |.  E8 D9FCFFFF   call 004A39C0
 004A3CE7  |.  E8 64B8FEFF   cal 0048F550
 004A3CEC  |.  8D4424 08     lea eax,dword ptr ss:[esp+0x8]
 004A3CF0  |.  E8 AB9BF6FF   call 0040D8A0
 004A3CF5  |.  E8 D6000000   call 004A3DD0                     ;  错误提示CALL F7进入Call
 004A3CFA  |.  84C0          test al,al
 004A3CFC  |.  0F95C0        setne al
 004A3CFF  |.  5E            pop esi
 004A3D00  |.  83C4 08       add esp,0x8
 004A3D03  \.  C3            retn
 
 004A3DD0  /$  51            push ecx
 004A3DD1  |.  E8 4AF0F7FF   call 00422E20
 004A3DD6  |.  85C0          test eax,eax
 004A3DD8  |.  75 27         jnz short 004A3E01                ;  跳过破解检测  Jnz 改成 Jmp
 004A3DDA  |.  68 E8030000   push 0x3E8                               ; /Timeout = 1000. ms
 004A3DDF  |.  FF15 D0B15100 call dword ptr ds:[<&KERNEL32.Sleep>]    ; \Sleep
 004A3DE5  |.  A1 ACDF7400   mov eax,dword ptr ds:[0x74DFAC]
 004A3DEA  |.  6A 00         push 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
 004A3DEC  |.  68 D4A95300   push 0053A9D4                     ; |Title = "儔僀僙儞僗俬俢僄儔乕"
 004A3DF1  |.  68 ECA95300   push 0053A9EC                     ; |Text = "儔僀僙儞僗俬俢偺撉傒崬傒偵幐攕偟傑偟偨丅廔椆偟傑偡丅"
 004A3DF6  |.  50            push eax                                 ; |hOwner => 00980360 ('MELTY BLOOD Actress Again Cur...',class='MELTY BLOOD Actress Again Cur...')
 004A3DF7  |.  FF15 78B25100 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
 004A3DFD  |.  32C0          xor al,al
 004A3DFF  |.  59            pop ecx
 004A3E00  |.  C3            retn
 004A3E01  |>  B0 01         mov al,0x1
 004A3E03  |.  59            pop ecx
 004A3E04  \.  C3            retn                                                             ; 然后一直 F8单步运行到游戏执行
 
 
 然后是破解好的程序
 
 
 
 |