Как защититься от хакеров в MU Online с помощью AntiHack

Автор DMichael, 2013 Июль 18, 18:41

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlineantihackзащита от хакеров

DMichael

#include "StdAfx.h"
#include "AntiHack.h"


CheatDB List[] =
{
{0x4340F0, "53005F00560045005200530049004F004E005F0049004E0046004F0000000000"},
{0x41F001, "60E803000000E9EB045D4555C3E801000000EB5DBBEDFFFFFF03DD81EB00F001"}
};


bool Check(LPCSTR lpFileName, int size)
{
HANDLE hFile = CreateFileA(lpFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTR
IBUTE_NORMAL,NULL);
if(GetFileSize(hFile, NULL) == size)
{
CloseHandle(hFile);
return true;
}
CloseHandle(hFile);
return false;
}


bool TextToHex(const char* hextext, unsigned char* bytes, unsigned int bytes_size)
{
int len=strlen(hextext);
if(len/2!=bytes_size)
return false;
if(len%2) //must be a multiple of 2
return false;
for(unsigned int i=0,j=0; i<bytes_size; i++,j+=2)
{
char temp[3]="";//current byte
memcpy(temp, hextext+j, 2);
unsigned int temp2;
sscanf_s(temp, "%x", &temp2);
bytes[i]=temp2&0xFF;
}
return true;
}


void FindHacks()
{
DWORD dwProcId = NULL;
HWND hWnd = FindWindow(NULL,NULL);


while( hWnd > NULL)
{
Sleep(15);
if (!GetParent(hWnd))
{
GetWindowThreadProcessId(hWnd, &dwProcId);
HANDLE hProcess = OpenProcess(PROCESS_VM_READ, FALSE, dwProcId);
if (hProcess)
{
for(int i = NULL; i < (sizeof(List)/sizeof(CheatDB)); i++)
{
char aTmpBuffer[MAX_DUMP_SIZE];
SIZE_T aBytesRead = NULL;
ReadProcessMemory(hProcess, (LPCVOID)List[i].Offset, (LPVOID)aTmpBuffer, sizeof(aTmpBuffer), &aBytesRead);
unsigned char cmpbuf[MAX_DUMP_SIZE];
if(!memcmp(aTmpBuffer, cmpbuf, MAX_DUMP_SIZE))
{
ExitProcess(0);
}
}
}
else
{
ExitProcess(0);
}
}
hWnd = GetWindow(hWnd, GW_HWNDNEXT);
if(hWnd == 0)
{
hWnd = FindWindow(NULL,NULL);
}
}
}


extern "C" _declspec(dllexport) void Init()
{
if (!Check("Data\World1\EncTerrain1.att", 131076))
{
ExitProcess(0);
}
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)FindHacks,NULL,NULL,NULL);
}


BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
Init();
}
return TRUE;
}

#pragma once
#define MAX_DUMP_SIZE 32


struct CheatDB {
unsigned int Offset;
char Dump[MAX_DUMP_SIZE*2+1]; //string = 2x size of hex +1 for last 0
};

#pragma once

// -------------------------------------------------------------------
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
// -------------------------------------------------------------------

Profesor08

Ну, ошибок в коде нету. Но толку от него мало, так как отключается за пару минут.

BeAFriend

ребят извените что в этой теме пишу , но я хотел-бы узнать
у меня имеется античит со стороны Клиента и Сервера
но когда запускаю маин то у меня открывается штук 1000 маинов
из-за чего может быть ? , кто-нить может мне помочь?

ausmann

Цитата: GlobalDevil от 2013 Июль 18, 19:43  ребят извените что в этой теме пишу , но я хотел-бы узнать
у меня имеется античит со стороны Клиента и Сервера
но когда запускаю маин то у меня открывается штук 1000 маинов
из-за чего может быть ? , кто-нить может мне помочь?

Античит : Разработка MAX1MUS

BeAFriend

Аус , имеется две версии
Клиент
Клиент+Сервер
--
на данный момент КЛИЕНТ использую только
а вот хочу другой попробывать Клиент+сервер , а вот такая лажа бывает

NightWish

#5
Спойлер
Цитата: DMichael от 2013 Июль 18, 17:41  void FindHacks()
{
DWORD dwProcId = NULL;
HWND hWnd = FindWindow(NULL,NULL);


while( hWnd > NULL)
{
Sleep([color=#FF0000][b]15[/b][/color]);
...
}
}
[свернуть]

Не слишком большая нагрузка?

Profesor08

Если опустить значение или убрать вызов, то повиснет. Но если контролировать выделенные ресурсы, то можно многого добиться.

NightWish

#7
Мне кажется что даже 500 было бы мало, ведь время указываеться в МС.

2-3 Секунды нормально было бы.

DMichael

вы почитайте в msdn про sleep

Profesor08

А ведь можно сделать все простенько, а задачи распараллеливания и прочего возложить на операционную систему.

Mr.Kernighan

Цитироватьвы почитайте в msdn про sleep
1) Умный... Тебе тему говорят про нагрузку при таком таймауте.
2) Твой античит уг потому что как минимум он не на всех ОС будет работать. Прежде чем открыть процесс, нужно сначала получить привилегии.

DMichael

#11
Цитата: Mr.Kernighan от 2013 Июль 19, 07:30  1) Умный... Тебе тему говорят про нагрузку при таком таймауте.
2) Твой античит уг потому что как минимум он не на всех ОС будет работать. Прежде чем открыть процесс, нужно сначала получить привилегии.
1.это разве похоже на что то серьезное?
2.ты хоть видел одну проверку в коде на ошибку ?
3.AdjustTokenPrivileges

Mr.Kernighan

#12
Что ты мне функции показываешь? Я то про них знаю, это тебе совет вообще-то был, раз уж запостил тему в разработках...

Цитировать2.ты хоть видел одну проверку в коде на ошибку ?
Если уж взялся программировать, учись делать это правильно.

DMichael

Цитата: Mr.Kernighan от 2013 Июль 19, 11:32  Что ты мне функции показываешь? Я то про них знаю, это тебе совет вообще-то был, раз уж запостил тему в разработках...


Если уж взялся программировать, учись делать это правильно.
(headbang)

8BitCore

По секрету, размер некоторых файлов в клиенте, допустим *.att, item.bmd и тд, фиксированного размера, то есть твоя проверка до жопы.

Profesor08

А скопипастив несколько строк с msdn, можно распаралелить программу, при этом переложить всю заботу на операционную систему, и проверять все сколько влезит, при этом на высокой скорости.

Похожие темы (5)

Сообщений: 37
Просмотров: 21594

Сообщений: 127
Просмотров: 38088

Сообщений: 32
Просмотров: 12412