flopix Написал:Кстати еще по поводу всеработающего адреналина. Немного поковырял процесс L2 под отладкой с запущенным адреналином. Использовал ломанную версию 1,99 из шары, клиент IL.
1. адрик использует апи функции клиента, напрямую пакеты не шлет, во всяком случае основные которые выборочно я проверил (mtl, action, ...)
2. код который вызывает апи функции расположен в секции данных (не кода) основного потока.
3. вызов происходит из главного потока.
Интересно как он только загружает себя в процесс.
Доступ к A.dll которая лежит в папке с ботом, не отслеживается монитором доступа к ресурсам, не от имени адрика не от имени клиента, но без этого файла перехват не работает, неужели все таки загрузка происходит на нулевом кольце? :eek:
Ведь никакого драйвера с ботом не идет. Да и как бы запускался неподписанный драйвер так просто.
В адрике все сделано по умному, даже LG уже не давал нормально слать пакеты, тем более не из основного потока. Гораздо проще дергать API клиента, которые, тем более, обычно не меняются, чем каждый раз допиливать пакеты под новые хроники.
На счет монитора доступа к ресурсом, не факт, что он проверяет абсолютно все функции, кроме банальных CreateFileA / ReadFile.
08-29-2016, 02:41 PM (Сообщение последний раз редактировалось: 08-29-2016, 02:45 PM f1redark.)
flopix Написал:Да вызывает.
Осталось глянуть, как определяется наличие процесса l2.{bin,exe}, ибо в юзермоде нормальных способов определить запуск процесса нету, к сожалению)
Добавлено через 40 секунд
flopix Написал:Как тогда что то записать в область памяти процесса l2?
Пока в голову приходит только вписать через PE редактор свою dll в импорт какой нибудь системной dll которую использует l2, но даст ли это сделать ОС.
Ну адрик же пашет с фростом, и выделяет память, делай выводы) А вообще, инжект это самое простое, потому, что в винде в принципе нереально не дать залезть в свой процесс)
f1redark;418039 Написал:Осталось глянуть, как определяется наличие процесса l2.{bin,exe}, ибо в юзермоде нормальных способов определить запуск процесса нету, к сожалению)
Не знаю. Я получаю список процессов. Нахожу тот имя модуля которого l2.exe. На руофе пашет. Да именно само окно не видно, а вот процесс есть.
flopix Написал:Не знаю. Я получаю список процессов. Нахожу тот имя модуля которого l2.exe. На руофе пашет. Да именно само окно не видно, а вот процесс есть.
Это кривой способ) А если там 10 процессов l2.exe? Ты в каждый будешь писать? Прийдется хранить список PID уже прохаченных процессов.
+ код кривой, нужно каждые n секунд получать список процессов, т.е. просто так крутить цикл, аля
[SRC="c++"]
while( true )
{
auto list = myMegaGetProcessList();
}
[/SRC]
Но самое грустное, что ты не знаешь, в какой момент ты обнаружишь процесс, может так случиться, что защита уже будет проиниализированна, или функции, которые ты хукаешь, аля Init и т п, уже к этому времени будут вызваны. В общем, не стабильно это все.
По нормальному, нужно получить управление ровно в точке окончания системной инициализации, но до вызова любых DllMain, в которых защита уже перехерачит пол клиента.
f1redark;418044 Написал:Но самое грустное, что ты не знаешь, в какой момент ты обнаружишь процесс, может так случиться, что защита уже будет проиниализированна
Да я храню пропатченные PID.
Мне в принципе и нужно перехватить процесс уже после инициализации, чтобы все объекты были уже созданы.
Вроде бы фрост и так управляет загрузкой модуля l2.exe врятли там можно успеть что то сделать до ининциализации защиты.
f1redark;418039 Написал:Ну адрик же пашет с фростом, и выделяет память, делай выводы
К сожалению версия из шары не пашет с настоящим фростом.
Выполняет VirtualAllocEX и получает lastWinError с кодом 5 - отказано в доступе.
До вызова WriteProcessMemory даже не доходит.
Как происходт запись в память в новой версии адрика хз.