Просто учитывая сегодняшние ковыряние и слепые тыкания у меня сложилось впечатление что клиент имеет свою собственную функцию для чтения/записи в сокеты.
обнадежил, буду долбить дальше эту стену.
для начала - ловушку на креейт процес.. а потом в ловушке на креейт - сам инжект.
матрешка.. блин.
в общем - написана софтина инжектирующая длл в процесс линейки, позволяющая без создания прокси манипулировать тем что отсылает/принимает линейка, отсылать пакеты от имени процесса ла2 ну и в этом духе.
идеально работает на клиентах без гг.
единственная проблемма - сам гг. после старта он востанавливает таблицу импортов для некоторых функций процесса линейки, в перечень их входит сенд и рецв.
после очередных слепых тыканий уже в сторону гг было выяснено что
гг сканирует первые байты защищаемых функций на предмет фарджампов и восстанавливает функцию если находит джампы.
есть 4 метода для создания подобных руткитов.
1. перехватываются функции LoadLibrary и GetProcAddress библиотеки kernel32.dll - GetProcAddress выдает поинтер моей функции. (годится для приложений загружающих длл динамически, пробовал это на гг - потерпел крах. линейка тоже не использует динамику)
2. с модификацией таблицы импорта. без гг метод прекрасно работает. пока за дело не принимается гг - исправляющий фарджампы. тем не менее я все еще могу отсылать данные от клиента, хотя видеть что шлет/принимает клиент с запущенным гг - не могу -)
3. метод сочетающий первое и второе (был опробован. гг выдавался неверный адресс рецв и сенд, и одновременно модифицировалась таблица импорта в линейке. потерпел крах. гг не держал чужую длл в своем адресном пространстве дольше чем пару секунд. потом происходил деатач дллки. запретить фрилибрари и подобных не удалось)
4й метод. интересный. чемто похож на 2й. но записываеться не джамп а машинный код своей функции в начале/конце целевой функции. если я правильно понимаю гг не увидит джамп, и естественно не будет ничего править.
есть у кого нибудь информация по подобной вещи ?.
2. с модификацией таблицы импорта. без гг метод прекрасно работает. пока за дело не принимается гг - исправляющий фарджампы. тем не менее я все еще могу отсылать данные от клиента, хотя видеть что шлет/принимает клиент с запущенным гг - не могу -)
Если не сложно, можешь выложить код длли с таким типом перехвата?
Если не сложно, можешь выложить код длли с таким типом перехвата?
то что ты попросил - апи перехват. тобиш не не лсп.
работает при отсутствующем гг. работающий гг снимает перехват рецв и сенд в юзермоде.
присутствуют те же проблемы при отправке пакет на клиент что и с лса модулем. (зарезервированная память под буфер).
функция перехвата данных идущих на сервер требует модификации, если ты собираешься слать буферы по длине превышающие изначально пересылаемые.
добавлено: ах да. никакого разбора траффика нет. чистые необработанные данные.
Последний раз редактировалось alexteam, 24.03.2009 в 00:04.
За это сообщение alexteam нажился 4 спасибками от: