Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Защита от system.ovr, artmoney и cheat engine
#61
flashman Написал:С WinApi я сегодня пробовал, но пришёл к выводу, что через него геморно(лень мб Smile).(я пишу на С#) (делфи забросил давно).
В с# через класс Process, можно получать список всех процессов, а потом перебирать их свойства, в msdn об этом толково написано.
К тому же в классе Process , есть функция которая получает заголовок главной формы, так что прикручивать findwindow нет необходимости.
У тебя есть скайп? напиши мне в ЛС.
Ответ
#62
Зачем FindWindow(...), если есть EnumWindows(...) и OpenProcess(...), и никаких проблем. Пока никаких. Smile Пока l2phx не запустят от администратора, а игру от пользователя, особенно под vista/win7 Smile

И, кстати, WinAPI оно особо не зависит от языка, хоть дельфи, хоть с/с++, хоть vb, оно везде одинаковое. И что в нем сложного, не понятно? Перебрать все окна и поубивать те, что по маске не проходят по классу/заголовку окна - 25 строк кода, 10 из которых - это реализация простенького поиска по шаблону. Единственная проблема бывает, это вспомнить/отгуглить нужную функцию, особенно, если она не документированна. Smile
Ответ
#63
Проблема в том что заголовок у всех разный, так как в заголовке пишется версия. Нужно так чтобы по началу заголовка была проверка.
ЗЫ
Неизменяемая часть заголовка (L2PacketHack)
Если ничего сложного, напиши плз кинь исход, а дальше пойдет наработки=) Я весь день ищу как, получается его закрывать - после чего появляется дочернее окно с подтверждением о выходе.. убить не получается
Побывал WM_DESTROY тож не выходит =(
Ответ
#64
EnumWindows(...) - вызывает callback для всех найденных окон и передает в него HWND окна, по нему можно GetWindowText(...) взять полный заголовок окна и сравнить с шаблоном (например, проверить, есть ли там текст "L2PacketHack").

Убивать процесс лучше через PostMessage( hWnd, WM_CLOSE, 0, 0 ); или TerminateProcess(...), если прав хватает. (подробнее - в гугл)

Неужели на ЭТО нужно целый день потратить?
http://lmgtfy.com/?q=winapi+find+process
http://lmgtfy.com/?q=winapi+kill+process
Ответ
#65
Забыл про функцию EnumWindows, но в принципе функционала C# вполне хватило для реализации, даже ещё мысли остались Big Grin
Но если использовать WinApi это вроде бы не поможет если юзер переименует кэпшон у l2phx или я что-то упустил?
Ответ
#66
flashman Написал:Забыл про функцию EnumWindows, но в принципе функционала C# вполне хватило для реализации, даже ещё мысли остались Big Grin
Но если использовать WinApi это вроде бы не поможет если юзер переименует кэпшон у l2phx или я что-то упустил?

Показывать будешь?=)
Ответ
#67
flashman Написал:Забыл про функцию EnumWindows, но в принципе функционала C# вполне хватило для реализации, даже ещё мысли остались Big Grin
Но если использовать WinApi это вроде бы не поможет если юзер переименует кэпшон у l2phx или я что-то упустил?

Ну не обязательно же на один текст заголовка окна ориентироваться Smile у процесса есть много чего интересного, за что можно зацепиться: имя файла, метаданные из него, путь до файла, список импорта, контрольная сумма файла или куска памяти, расставленные хуки, да мало ли чего еще, на что фантазии хватит.

Но это только начало, на много интереснее посмотреть, как будет решаться следующая ситуация: игра (и защита с ней вместе) пускается с правами пользователя, а l2phx (artmoney, cheat engine, другое) пускается с правами администратора. Метод защиты вредоносной программулинки доступный даже идиоту, а вот прибить его не очень-то уже и получится Smile

ЗЫ: ой, блин, спалил тему XD

Добавлено через 2 минуты
Horizon Написал:Показывать будешь?=)

Ага, вот прям сейчас все сорцы и выложит Smile
И откуда ж столько наивности-то? Smile
Ответ
#68
А я вот невижу смысла жадничать.
Я викладываю все что делаю, тем самым я общаюсь с людьми и получаю удовольствие=)
Вот так короче я кильнул окно по имени
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace KillPHX
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] ps1 = System.Diagnostics.Process.GetProcessesByName("Имя Окна");
            foreach (Process p1 in ps1)
            {
                Console.WriteLine("Закрытие процесса....{0}", p1.ProcessName);
                p1.Kill();
            }
        }
    }
}
Но вот так и не понял как по отрывку от заголовка килять=(
Ответ
#69
Цитата:Но вот так и не понял как по отрывку от заголовка килять=(
Считываешь заголовок в строку (string), пропускаешь через регуляное выражение, проверяешь есть ли совпадения, если есть завершаешь процесс.
PHP код:
<?php 
string str_regx
= @"\.*" + badNames + @"\.*"; // где badNames может быть строкой типа "artmoney", "am", "l2phx" и т.д.
Regex regex = new Regex(str_regx);
MatchCollection matches = regex.Matches(p.ProcessName);
if (
matches.Count > 0)
{
p.Kill();
}
Вот так можно. Собственно какой регулярное выражение сделаешь так и искать будет.
Ответ
#70
CS0103: Элемент "p" не существует в текущем контексте.
=((( как его прикурить к твоей наработки?
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  AiION Lightning - HTML engine... TieLay 20 8,668 01-25-2011, 02:39 AM
Последний пост: xobotyi
  Aion Engine свежие сборки Romanz 50 21,804 12-01-2010, 01:08 PM
Последний пост: jagr
  Защита сервера. Shema 140 42,847 11-12-2010, 03:25 PM
Последний пост: Wolfas
  Проблема с GS Aion Engine vitlav 7 3,951 11-06-2010, 10:04 PM
Последний пост: xobotyi
  Aion Engine Luteron 2 2,453 10-27-2010, 11:49 AM
Последний пост: Luteron
  Aion Engine TieLay 11 6,841 10-23-2010, 11:39 PM
Последний пост: aen
  защита на юнике. Shema 2 2,495 03-23-2010, 05:10 PM
Последний пост: Shema

Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)