Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2012, 23:17   #1
arhangel2
Новичок
Джуниор
 
Регистрация: 10.11.2012
Сообщений: 1
Вопрос Доработанная зашита

Здравствуйте.
Ищу человека кто мог бы дописать данную программу за умеренное вознаграждения. писать тут или в ПМ.
http://www.mmocom.ru/showthread.php?t=1349

О защите:
Эта зашита для Lineage 2 серверов она рабочая но не до конца, Если в процессах есть слова которая ране было занесено в блэк лист(на стороне сервера) то клиент игры закрывается.
Защита простая и обходиться легко но на первое время мне думаю должно хватить.

Что нужно сделать
  • При закрытие процесса l2.exe вырубать процесс l2.dll
  • После выхода из игры l2.exe процесс часто остаётся в процессах.(Надо чтоб закрывала всегда)
  • Убрать ограничения на запуск окон.
  • Вшить убивалку программы которая скрывает процессы.

Вот собственно исходники этой защиты. Написана на Delphi.
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
const
max_L= 256;
max_L2= 256;
var
bl:boolean;
str2:array[0..max_L-1] of char;
str:array[0..max_L-1] of char;
buff: array[0..127] of Char;
_caption:string;
_caption2:string;
te:string;
te2:string;
lpString:string;
y:string;
st: PChar;
g:integer;
i:integer;
Wnd: hWnd;
begin
for list_I:=0 to high(p_list1) do //Убивает все процессы из загруженного листа по имени exe
begin
killtask(p_list1[list_I]);
end;
killtask('patcher171.exe');
killtask('la2fun.exe');
killtask('wpf406.exe');
killtask('la2monster.exe');
killtask('WP406F.exe');
killtask('l2phx.exe');
killtask('la2reklamer.exe');
killtask('LordPE.EXE');
killtask('L2Walker.exe'); //убивает стандартные проги по Exe
killtask('l2proxy.exe');
killtask('la2fun.exe');
killtask('L2Pilot.exe');
killtask('L2dummy.exe');
killtask('l2phx.exe');
killtask('la2brute.exe');
killtask('L2Cheat_InformeR_1.3.exe');
killtask('hlapex.exe');
kilLtask('la2brute.exe');
ListBox1.Clear;
ListBox2.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst); //получение WND окна
while Wnd <> 0 do
begin
if (Wnd <> Application.Handle) and {-Собственное окно} IsWindowVisible(Wnd) and {-Невидимые окна} (GetWindow(Wnd, gw_Owner) = 0) and {-Дочернии окна} (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков} then
begin
GetWindowText(Wnd, buff, sizeof(buff));
listbox2.Items.**d(inttostr(wnd));
ListBox1.Items.**d(StrPas(buff));
end;
Wnd := GetWindow(Wnd, gw_hWndNext);
end;
ListBox1.ItemIndex := 0;
ListBox2.ItemIndex := 0;
for i:=0 to listbox2.Items.Count -1 do
begin
try wnd:=strtoint(listbox2.Items[i]);
except;
end;
if wnd <> 0 then
begin
getwindowtext(wnd,@str,max_L);
te:=str;
label1.Caption :=inttostr(g);
label2.caption:=te;
bl:=false;
if (pos('L2 CHEAT',ansiuppercase(te)) <> 0 )or (pos('L2WALKER',ansiuppercase(te)) <> 0 )or (pos('LA2REKLAMER',ansiuppercase(te)) <> 0 )or (pos('PACKETHACK',ansiuppercase(te)) <> 0 )or (pos('LORDPE',ansiuppercase(te)) <> 0 ) or (pos('HLAPEX',ansiuppercase(te)) <> 0 ) or (pos('L2PROXY',ansiuppercase(te)) <> 0 ) or (pos('LA2BRUTE',ansiuppercase(te))<>0)or(pos('L2CHEAT',ansiuppercase(te))<>0)OR (pos('LA2FUN',ansiuppercase(te))<>0) OR (pos('L2PILOT',ansiuppercase(te))<>0) OR (pos('L2 CHEAT',ansiuppercase(te))<>0)OR (pos('L2PACKET',ansiuppercase(te))<>0) OR (pos('L@MONSTER',ansiuppercase(te))<>0)then
begin
bl:=true; //проверка Caption окана по списку стандартныъ
end;
for list_I:=0 to high(p_list2) do
begin
if (pos(ansiuppercase(p_list2[list_I]),ansiuppercase(te)) <> 0 ) then
bl:=true; //проверка Caption окана по списку загруженных
end;
if bl then
begin
g:=0;
PostMessage(FindWindow(nil,str), WM_CLOSE, 0, 0);
PostMessage(FindWindow(nil, str), WM_QUIT, 0, 0);
killtask('l2.dll');
MessageBox(handle,pchar('Program internal error, cant re** memory 0xffffff memory is not re** type'),pchar('Buffer overflow'),16);
listbox2.Items.Delete(i);
application.Terminate;
end;
end;
end;
end;
вот сама функция

Код:
function KillTask(ExeFileName: string): integer; //Убивает процесс по имени файла Exe
const
PROCESS_TERMINATE=$0001;
max_L= 256;
var
Handle: HWND;
str:array[0..max_L-1] of char;
_caption:string;
te: string;
lpString:string;
st: PChar;
g:integer;
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
begin
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;

Последний раз редактировалось arhangel2; 11.11.2012 в 03:08.
arhangel2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зашита строки от debug'a Flippp Общие вопросы C/C++ 4 22.09.2010 16:12
Зашита сайта Next PHP 2 19.07.2009 15:05
Зашита файла Claster Помощь студентам 1 02.11.2008 18:20
Зашита от не санкционированного доступа farmadelkin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 27.02.2008 08:48
Зашита от не санкционированного доступа farmadelkin Помощь студентам 5 24.02.2008 11:11