【发布时间】:2015-01-09 07:37:19
【问题描述】:
所以我的问题如下:我有一个程序 Main.exe(启动游戏),我有一个附加的 dll,所以我可以加载一些功能。我有另一个名为 StartGame.exe(launcher+autoupdater) 的程序,现在的问题是,当客户端按下 START 时,如何创建一个函数以确保 Main.exe 仅从 StartGame.exe 运行? 我无法修改 Main.exe,也无法修改 StartGame.exe... 我做了一些简单的检查,如下所示:
if(FindWindow(NULL,"LiveMU") == NULL) //LiveMU is the name of window StartGame.exe
{
MessageBoxA(0,"English: Please use the Launcher! \nRomanian: Va rugam sa folositi Launcher-ul!", TitleMsgBox,MB_ICONERROR);
ExitProcess(0);
}
问题是,如果他们打开 startgame.exe 并将其留在托盘中,他们可以毫无问题地加载 Main.exe。主要问题是,如果我无法以某种方式保护 Main.exe 在没有启动器的情况下启动,则客户端/玩家使用加载 Main.exe 的作弊程序(注入它或其他东西,我真的不知道,因为它只是消失了,我可以'没找到)
LE:我无法向 StartGame.exe 添加命令行参数,因为它受到重度保护...
【问题讨论】:
-
使用从“StartGame.exe”传递到“Main.exe”的“秘密”/内部命令行选项,如果该选项未通过,则立即退出“Main.exe”。如果用户启动 Main.exe(例如通过双击、命令行等),则该选项将不存在并且不会运行。
-
我已经说过,我无法修改/添加/更改 StartGame.exe,因为它受 VMProtect 保护...我无法传递命令行参数 :(
-
抱歉,没看到那部分。我认为一般来说没有 100% 可靠的方法,更不用说如果你试图“从外部”控制这两个程序的依赖...
-
也许有一些保护措施可以防止附加到 Main.exe 的其他内容?我找不到作弊器(精英点击器)是如何附加到游戏中的,我认为它使用的是 winapi...
-
你在问问题 Y,但你真正想要解决的是问题 X,问题 Y 只是你解决它的方法。为什么不在另一个问题中告诉我们问题 X? (“我怎样才能避免玩家作弊?”)解决方案可能完全不同......