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 所在的文件夹 批处理exit下退出测试下 最近老是搞游戏??? 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 上代码有点问题 正在修改中 -----------------------------------------------------------
.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]