Roll Back

This commit is contained in:
Anonymous275 2020-11-14 23:50:15 +02:00
parent 179b46d17b
commit c517a48fa6
9 changed files with 42 additions and 52 deletions

View File

@ -17,7 +17,6 @@ extern std::string UlStatus;
extern std::string ListOfMods; extern std::string ListOfMods;
void UDPSend(std::string Data); void UDPSend(std::string Data);
int KillSocket(uint64_t Dead); int KillSocket(uint64_t Dead);
void ClosePublic();
void CoreNetwork(); void CoreNetwork();
void GameSend(std::string Data); void GameSend(std::string Data);
void SendLarge(std::string Data); void SendLarge(std::string Data);

View File

@ -6,8 +6,7 @@
void PreGame(int argc, char* argv[],const std::string& GamePath); void PreGame(int argc, char* argv[],const std::string& GamePath);
void InitGame(const std::string& Dir,const std::string&Current); void InitGame(const std::string& Dir,const std::string&Current);
std::string CheckVer(const std::string &path); std::string CheckVer(const std::string &path);
void FindDLL(const std::string& Name);
void SecurityCheck(char* argv[]); void SecurityCheck(char* argv[]);
void FindDLL(char* args[]);
std::string GetGameDir(); std::string GetGameDir();
void LegitimacyCheck(); void LegitimacyCheck();
void DASM();

View File

@ -66,9 +66,12 @@ void warn(const std::string& toPrint){
addToLog(Print); addToLog(Print);
} }
void error(const std::string& toPrint) { void error(const std::string& toPrint) {
static int ECounter = 0;
std::string Print = getDate() + Sec("[ERROR] ") + toPrint + "\n"; std::string Print = getDate() + Sec("[ERROR] ") + toPrint + "\n";
std::cout << Print; std::cout << Print;
addToLog(Print); addToLog(Print);
if(ECounter > 10)exit(7);
ECounter++;
} }
void except(const std::string& toPrint) { void except(const std::string& toPrint) {
std::string Print = getDate() + Sec("[EXCEP] ") + toPrint + "\n"; std::string Print = getDate() + Sec("[EXCEP] ") + toPrint + "\n";

View File

@ -227,7 +227,7 @@ void CoreMain() {
int Handle(EXCEPTION_POINTERS *ep){ int Handle(EXCEPTION_POINTERS *ep){
char* hex = new char[100]; char* hex = new char[100];
sprintf_s(hex,100, "%lX", ep->ExceptionRecord->ExceptionCode); sprintf_s(hex,100, "%lX", ep->ExceptionRecord->ExceptionCode);
except(Sec("(Core) ") + std::string(hex)); except(Sec("(Core) Code : ") + std::string(hex));
delete [] hex; delete [] hex;
return 1; return 1;
} }

View File

@ -90,7 +90,12 @@ void ServerSend(std::string Data, bool Rel){
} }
} }
void ClosePublic(){ void NetReset(){
TCPTerminate = false;
GConnected = false;
Terminate = false;
UlStatus = Sec("Ulstart");
MStatus = " ";
if(UDPSock != (SOCKET)(-1)){ if(UDPSock != (SOCKET)(-1)){
debug(Sec("Terminating UDP Socket : ") + std::to_string(TCPSock)); debug(Sec("Terminating UDP Socket : ") + std::to_string(TCPSock));
KillSocket(UDPSock); KillSocket(UDPSock);
@ -101,15 +106,6 @@ void ClosePublic(){
KillSocket(TCPSock); KillSocket(TCPSock);
} }
TCPSock = -1; TCPSock = -1;
}
void NetReset(){
TCPTerminate = false;
GConnected = false;
Terminate = false;
UlStatus = Sec("Ulstart");
MStatus = " ";
ClosePublic();
if(GSocket != (SOCKET)(-1)){ if(GSocket != (SOCKET)(-1)){
debug(Sec("Terminating GTCP Socket : ") + std::to_string(GSocket)); debug(Sec("Terminating GTCP Socket : ") + std::to_string(GSocket));
KillSocket(GSocket); KillSocket(GSocket);

View File

@ -23,20 +23,6 @@ void DAS(){
f.close(); f.close();
#endif #endif
} }
void DASM(){
#ifndef DEBUG
int i = 0;
std::ifstream f(GetEN(), std::ios::binary);
f.seekg(0, std::ios_base::end);
std::streampos fileSize = f.tellg();
if(IsDebuggerPresent() || fileSize > 0x4C4B40){
i++;
DAboard();
}
if(i)DAboard();
f.close();
#endif
}
DWORD getParentPID(DWORD pid){ DWORD getParentPID(DWORD pid){
HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe = {0}; PROCESSENTRY32 pe = {0};

View File

@ -4,44 +4,52 @@
#include "Network/network.h" #include "Network/network.h"
#include "Security/Enc.h" #include "Security/Enc.h"
#include <windows.h> #include <windows.h>
#include <Logger.h> #include "Logger.h"
#include <psapi.h> #include <psapi.h>
#include <string>
#include <thread> #include <thread>
DWORD getParentPID(DWORD pid);
HANDLE getProcess(DWORD pid, LPSTR fname, DWORD sz);
void Kill(){ void Kill(){
static bool Run = false; static bool Run = false;
if(!Run)Run = true; if(!Run)Run = true;
else return; else return;
while(Run){ while(Run){
std::this_thread::sleep_for(std::chrono::milliseconds(200)); std::this_thread::sleep_for(std::chrono::seconds(2));
ClosePublic(); NetReset();
#ifdef DEBUG #ifdef DEBUG
debug("NetReset Check!"); debug(Sec("Attention! NetReset Check!"));
#endif #endif
} }
} }
void FindDLL(const std::string& Name) { void FindDLL(char* args[]){
static std::string PName = LocalEnc(Name.substr(0,Name.rfind(Sec("\\")))); static auto argv = args;
static bool Running = false;
if(Running)return;
HANDLE hProcess = GetCurrentProcess(); HANDLE hProcess = GetCurrentProcess();
HMODULE hMods[1024]; std::string Parent(MAX_PATH,0);
DWORD cbNeeded; DWORD ppid = getParentPID(GetCurrentProcessId());
unsigned int i; HANDLE Process = getProcess(ppid, &Parent[0], MAX_PATH);
TCHAR szModName[MAX_PATH]; if(Process == nullptr){
if (K32EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)) { HMODULE hMods[1024];
for (i = 1; i < (cbNeeded / sizeof(HMODULE)); i++) { DWORD cbNeeded;
if (K32GetModuleFileNameExA(hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(TCHAR))) { unsigned int i;
std::string MName(szModName); if(K32EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)){
MName = MName.substr(0, MName.rfind(Sec("\\"))); for ( i = 1; i < (cbNeeded / sizeof(HMODULE)); i++ ){
if (MName == LocalDec(PName)) { TCHAR szModName[MAX_PATH];
Running = true; if (K32GetModuleFileNameExA(hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(TCHAR))){
std::thread t1(Kill); std::string Name(szModName),PName(argv[0]);
t1.detach(); Name = Name.substr(0,Name.rfind(Sec("\\")));
PName = PName.substr(0,PName.rfind(Sec("\\")));
if(Name == PName){
std::thread t1(Kill);
t1.detach();
}
} }
ZeroMemory(szModName,MAX_PATH);
} }
ZeroMemory(szModName, MAX_PATH);
} }
} }
CloseHandle(hProcess); CloseHandle(hProcess);

View File

@ -181,7 +181,7 @@ void InitLauncher(int argc, char* argv[]) {
SetConsoleTitleA((Sec("BeamMP Launcher v") + std::string(GetVer()) + GetPatch()).c_str()); SetConsoleTitleA((Sec("BeamMP Launcher v") + std::string(GetVer()) + GetPatch()).c_str());
InitLog(); InitLog();
CheckName(argc, argv); CheckName(argc, argv);
FindDLL(argv[0]); FindDLL(argv);
SecurityCheck(argv); SecurityCheck(argv);
Discord_Main(); Discord_Main();
RequestRole(); RequestRole();

View File

@ -19,7 +19,6 @@ int main(int argc, char* argv[]) {
std::thread gb(aa); std::thread gb(aa);
gb.detach(); gb.detach();
#endif #endif
DASM();
InitLauncher(argc,argv); InitLauncher(argc,argv);
CheckDir(argc,argv); CheckDir(argc,argv);
LegitimacyCheck(); LegitimacyCheck();