飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3981|回复: 4

[原创] Deutschland Spielt 公司游戏简单分析

[复制链接]

该用户从未签到

发表于 2009-6-28 21:50:48 | 显示全部楼层 |阅读模式
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

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

[HKEY_LOCAL_MACHINE\SOFTWARE\oxxogames\dsgplayer]
"GPlayerExe"="C:\\StrikeBall3\\nisy.dll"

[HKEY_LOCAL_MACHINE\SOFTWARE\oxxogames\dsgplayer\gpaths]
"StrikeBall3"="C:\\StrikeBall3\\StrikeBall3.exe"

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

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

我处理的时候 将 GPlayer.exe (重命名为 nisy.dll)破解后并处理游戏退出后 返回 GPlayer 不再显示NAG 而是直接退出。 同时将 LoadHelper.exe 变为 ChinaPYG.dll   将调用的目录修改为 nisy.dll 所在的文件夹
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-25 19:39
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2009-6-28 22:14:56 | 显示全部楼层
    批处理exit下退出测试下
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-24 21:35
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2009-6-29 09:26:18 | 显示全部楼层
    最近老是搞游戏???
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 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                <?>
    stProcInfo  PROCESS_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 上代码有点问题 正在修改中
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 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路径而无法加载
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表