Тема: апихуки.
Показать сообщение отдельно
Старый 09.03.2009, 16:27   #6
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

в общем - написана софтина инжектирующая длл в процесс линейки, позволяющая без создания прокси манипулировать тем что отсылает/принимает линейка, отсылать пакеты от имени процесса ла2 ну и в этом духе.
идеально работает на клиентах без гг.
единственная проблемма - сам гг. после старта он востанавливает таблицу импортов для некоторых функций процесса линейки, в перечень их входит сенд и рецв.

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

есть 4 метода для создания подобных руткитов.
1. перехватываются функции LoadLibrary и GetProcAddress библиотеки kernel32.dll - GetProcAddress выдает поинтер моей функции. (годится для приложений загружающих длл динамически, пробовал это на гг - потерпел крах. линейка тоже не использует динамику)

2. с модификацией таблицы импорта. без гг метод прекрасно работает. пока за дело не принимается гг - исправляющий фарджампы. тем не менее я все еще могу отсылать данные от клиента, хотя видеть что шлет/принимает клиент с запущенным гг - не могу -)

3. метод сочетающий первое и второе (был опробован. гг выдавался неверный адресс рецв и сенд, и одновременно модифицировалась таблица импорта в линейке. потерпел крах. гг не держал чужую длл в своем адресном пространстве дольше чем пару секунд. потом происходил деатач дллки. запретить фрилибрари и подобных не удалось)

4й метод. интересный. чемто похож на 2й. но записываеться не джамп а машинный код своей функции в начале/конце целевой функции. если я правильно понимаю гг не увидит джамп, и естественно не будет ничего править.
есть у кого нибудь информация по подобной вещи ?.
alexteam вне форума   Ответить с цитированием