Итак, мой вопрос следующий: у меня есть программа Main.exe (которая запускает игру), у меня есть dll, прикрепленная к ней, поэтому я могу загрузить некоторые функции. У меня есть другая программа под названием StartGame.exe (launcher + autoupdater), теперь вопрос в том, как я могу сделать функцию, чтобы убедиться, что Main.exe запущен только из StartGame.exe, когда клиент нажал кнопку START? Я не могу изменить ни 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 заключается в том, что если я не могу защитить каким-то образом Main.exe от запуска без запуска, клиенты/игроки используют чит-программу, загружающую Main.exe (вводя ее или что-то, я действительно не знаю, поскольку она просто исчезает, и я могу " т найти)
LE: Я не могу добавить аргументы командной строки StartGame.exe потому что она с тяжелой защитой ...
Используйте «секретно» параметр/внутренней командной строки, которая передается от «StartGame.exe» до «main.exe» , немедленно выйдите из «Main.exe», если этот параметр не передан. Если пользователь запускает Main.exe (скажем, двойным щелчком, командной строкой и т. Д.), Опция не будет присутствовать, и она не будет запущена. –
Я уже сказал, что я не могу изменить/добавить/изменить StartGame.exe, потому что он защищен VMProtect ... Я не могу передать аргумент командной строки :( –
Извините, не видел эту часть. Я думаю, что нет 100 % надежный способ в целом, а тем более, если вы пытаетесь контролировать эту зависимость «извне» в двух программах ... –