Nisy 发表于 2009-6-28 21:50:48

Deutschland Spielt 公司游戏简单分析

http://www.deutschland-spielt.de/

那个祖玛就是他们出的 牛B ~!

目标对象:Strike Ball 3 (这个是官方最近推荐的 挺好玩)

官方介绍:http://www.deutschland-spielt.de/games/strike-ball-3/

下载地址:http://download.deutschland-spielt.de/files/intenium/StrikeBall3.exe


对主程序下断,看一下他是如何传参的

bp CreateProcessA

看到参数: nisy.dll GameStart StrikeBall3第一个参数是目标程序 名字我修改过了 有兴趣的跟一下就可以了

随意想简单些 就写一个.bat文件即可:

-------------------------------
echo off
nisy.dll GameStart StrikeBall3
-------------------------------

PS: bat文件如何关闭自己呀


汇编简单描述就是这个样子呢

---------------------------------------------------

.386
.model flat,stdCall
option casemap:none

include windows.inc
include user32.inc
include kernel32.inc
include debug.inc
includelib debug.lib
includelib user32.lib
includelib kernel32.lib

.data

szText                           db               'nisy.dll GameStart StrikeBall3',0
stStartUp                        STARTUPINFO                <?>
stProcInfo                     PROCESS_INFORMATION      <?>      

.code

start:                  invoke CreateProcess,NULL,addr szText,NULL,0,0,NULL,NULL,NULL,\
                                             addr stStartUp,addr stProcInfo                        
                        invoke ExitProcess,0


end                     start

---------------------------------------------------

他这个程序是这样的:
                  传参调用         传参调用                加工
StrikeBall3_og.exe ====> GPlayer.exe ====> LoadHelper.exe ====> StrikeBall3_og.exe = LoadHelper.wgc2

程序退出时再返回到 GPlayer.exe

其中 GPlayer.exe通过注册表 SOFTWARE\oxxogames\dsgplayer\gpaths 来定位游戏的数量定位LoadHelper.exe 是一个固定值 就是这个目录 C:\Program Files\OXXOGames\GPlayer

StrikeBall3_og.exe 通过SOFTWARE\oxxogames\dsgplayer 来得知GPlayer.exe的位置

程序间所有的传参 都使用的是 CreateProcessA 函数其中

StrikeBall3 对 GPlayer.exe 传参就是: GPlayer GameStart StrikeBall3

---------------------------------------------------


"GPlayerExe"="C:\\StrikeBall3\\nisy.dll"


"StrikeBall3"="C:\\StrikeBall3\\StrikeBall3.exe"

--------------------------------------------------

爆破就是将 GPlayer.exe 中取reg的函数 mov al,1 即可。

我处理的时候 将 GPlayer.exe (重命名为 nisy.dll)破解后并处理游戏退出后 返回 GPlayer 不再显示NAG 而是直接退出。 同时将 LoadHelper.exe 变为 ChinaPYG.dll   将调用的目录修改为 nisy.dll 所在的文件夹

lmg7005 发表于 2009-6-28 22:14:56

批处理exit下退出测试下

ljfu 发表于 2009-6-29 09:26:18

最近老是搞游戏???

Nisy 发表于 2009-6-29 20:36:45

0012EB68   004A12E0|ModuleFileName = "ChinaPYG.dll"
0012EB6C   003FCA60|CommandLine = "GNameID=strikeball3"
0012EB70   00000000|pProcessSecurity = NULL
0012EB74   00000000|pThreadSecurity = NULL
0012EB78   00000000|InheritHandles = FALSE
0012EB7C   04000020|CreationFlags = NORMAL_PRIORITY_CLASS|CREATE_DEFAULT_ERROR_MODE
0012EB80   00000000|pEnvironment = NULL
0012EB84   0012EC80|CurrentDir = "C:\StrikeBall3"
0012EB88   0012EBA0|pStartupInfo = 0012EBA0
0012EB8C   0012EC00\pProcessInfo = 0012EC00



----------------------------------------------------------------

szText0   db                         'ChinaPYG.dll',0
szText1   db                         'GNameID=strikeball3',0
stStartUp   STARTUPINFO                <?>
stProcInfoPROCESS_INFORMATION      <?>


.code

start:                invoke CreateProcess,addr szText0,addr szText1,\
                     NULL,0,0,NORMAL_PRIORITY_CLASS,\
                     NULL,NULL,addr stStartUp,addr stProcInfo


----------------------------------------------------------------


一步到位算了 直接写一个程序 传参给LoadHelper.exe (文件名可自己修改)

跳过中间的两个exe 更省事 更快捷

exe 上代码有点问题 正在修改中

Nisy 发表于 2009-6-29 22:05:30

-----------------------------------------------------------

.386
.model flat,stdCall
option casemap:none

include windows.inc
include user32.inc
include kernel32.inc
include debug.inc
include advapi32.inc
includelib advapi32.lib
includelib debug.lib
includelib user32.lib
includelib kernel32.lib

.data

lpFileName          db      128 dup (?)
lpFileFilte         db      128 dup (?)
lpSubKey            db      'SOFTWARE\oxxogames\dsgplayer\gpaths',0
lpName            db      'StrikeBall3',0
pHandle             dd      ?
nSize               dd      128
lpFileAddr          db      '%s\%s',0
szName            db      'StrikeBall3.dll',0
szText0             db      'LoadHelper.dll',0
szText1             db      'GNameID=strikeball3',0
stStartUp         STARTUPINFO                <?>
stProcInfo          PROCESS_INFORMATION      <?>


.code

start:               
                invoke GetCurrentDirectory,nSize,offset lpFileName
                invoke wsprintf,offset lpFileFilte,offset lpFileAddr,offset lpFileName,offset szName
                        
                invoke RegCreateKeyEx,HKEY_LOCAL_MACHINE,\
                     offset lpSubKey,NULL,NULL,NULL,2001fh,NULL,addr pHandle,NULL
                invoke RegSetValueEx,pHandle,offset lpName,NULL,REG_SZ,offset lpFileFilte,sizeof lpFileName+1
                invoke RegCloseKey,pHandle
               
                invoke CreateProcess,addr szText0,addr szText1,\
                     NULL,0,0,NORMAL_PRIORITY_CLASS,\
                     NULL,NULL,addr stStartUp,addr stProcInfo

                                    
                .if    eax
                        
                  invoke      WaitForInputIdle,addr stProcInfo,5000
                  invoke      CloseHandle,stProcInfo.hProcess
                  invoke      CloseHandle,stProcInfo.hThread
                        
                .endif
                     
                invoke ExitProcess,0               

end start

----------------------------------------------


引导程序完整源代码该公司的游戏全部瓦解 其他程序只需要替换一下红字就OK了

精简版下载:https://www.chinapyg.com/viewthread.php?tid=47851



这个公司的游戏 只要把调用过程搞清楚了 剩下的就比较好办了在自己写调用程序前 首先要向注册表导入该文件的路径 否则程序将无法找到rom路径而无法加载
页: [1]
查看完整版本: Deutschland Spielt 公司游戏简单分析