Просмотр полной версии : Эмуляция нажатий.
Набрасал для теста.
program teste;
uses
Windows, Messages, SysUtils, ExtCtrls, IdGlobal;
var dlyaComboBox:HWND;
begin
dlyaComboBox:=FindWindow('l2UnrealWWindowsViewport Window',nil);
if dlyaComboBox <> 0 then begin
sendmessage(dlyaComboBox, WM_KEYDOWN, VK_F1, 0);
exit;
end;
end.
Лог на таймере в 5 сек
1706556
1706556
1706556
1706556
1706556
1706556
0
0
0
Данный пример эмулирует нажатие F1 в клиент игры это используется 1 раз и программа закрывается..
Сообственно пробема такова: Если дописать таймер и поставить скажем на x сек то через 15-20 секунд клиент уже не принимает эмуляцию. Сервер l2.ru
Подскажите в чём проблема?
Denever, в FrosPtotector. Он через несколько секунд после запуска программы подгружается в виде dll и перехватывает вызов FindWindow и подобных winapi функций.
Denever, в FrosPtotector. Он через несколько секунд после запуска программы подгружается в виде dll и перехватывает вызов FindWindow и подобных winapi функций.
Ну а обойти же можно каким либо способом?)
supernewbie
18.04.2012, 16:14
Denever, можно например хукнуть у себя LoadLibraryW и не грузить длл фроста
Denever, можно например хукнуть у себя LoadLibraryW и не грузить длл фроста
Можно пример?
Denever, можно например хукнуть у себя LoadLibraryW и не грузить длл фроста
У меня именно для фроста это не сработало. Для ГГ работает.
в хуке LoadLibraryW я только вижу системные библиотеки которые подгружает для себя FrostProtector, а вот сам сабж как то шифруется.
Не знаю на сколько это сейчас актуально, но попробуйте перехватить kernel32.WriteProcessMemory в LineageII.exe и вернуть ноль, ничего не делая. Мне это раньше помогало.
Demion, только не в LineageII.exe, а в своем приложении. Нужно попробовать.
Именно в LineageII.exe я делал) Ибо насколько я помню оно внедряло.
Demion, а причем тут LineageII.exe? Зачем нам беспокоится что в него там загружается? Тем более это надо подгружать свою dll в LineageII.exe для перехвата. И мы говорим про руоф, а там LineageII.bin.
Не буду спорить, ибо руофом сейчас не занимаюсь и даже клиента нет. Но, если не изменяет память - там Запускатор запускает LineageII.exe, которая уже запускает L2.bin. Кроме того LineageII.exe внедряет библиотеку во все процессы. Перехватывая WriteProcessMemory мы обламываем ей (LineageII.exe) внедрение.
---
Если у тебя есть клиент, проверь сам. А потом отпишешься о результатах. Может я не прав.
Demion, а тогда понятно. Но может быть както можно обламать внедрение только в своей программе? Ведь после записи в наш процесс кода и запуска его на исполние процессом LineageII.exe этот код каким то образом вызывает подгрузку dll протектора, только вот какой именно.
supernewbie
19.04.2012, 10:01
Можно пример?
var
OldLoadLibraryW:function (lpLibFileName: PWideChar): HMODULE; stdcall;
function MyLoadLibraryW(lpLibFileName: PWideChar): HMODULE; stdcall;
begin
if ExtractFileName(lpLibFileName)='frostProtector.dll ' then
result:=0
else
result:=OldLoadLibraryW(lpLibFileName);
end;
procedure AntiFrost;
begin
HookProc('kernel32.dll','LoadLibraryW',@MyLoadLibr aryW,@OldLoadLibraryW);
end;
Добавлено через 1 минуту
раньше работало, щас хрен знает
Добавлено через 18 минут
щас проверил - работает
Но может быть както можно обламать внедрение только в своей программе?
Ну скорее всего только через перехват LoadLibraryA / LoadLibraryW. Больше ничего на ум не приходит.
ребята, вы реально сами понимаете что несёте ?
Конечно спасибо но всеравно как-то..
Помогите пож припоять http://coderx.ru/showthread.php?t=50 к l2.ru
Примерно:
program Project1;
{$APPTYPE CONSOLE}
uses
Windows;
var lib_NWindow:THandle;
lib:integer;
p:pointer;
OldPageProtection: Cardinal;
begin
lib_NWindow := LoadLibrary('nWindow.dll');
lib := lib_NWindow + $563D0; // ïîìåíÿòü íàäî
if VirtualProtect(pointer(lib), 6, PAGE_EXECUTE_READWRITE, OldPageProtection) then begin
writeLn('change old-new attributes.');
p := pointer(lib);
byte(p^) := $e9; writeLn('#1.');
byte(pointer(dword(p) + 1)^) := $eb; writeLn('#2.');
byte(pointer(dword(p) + 2)^) := $00; writeLn('#3.');
byte(pointer(dword(p) + 3)^) := $00; writeLn('#4.');
byte(pointer(dword(p) + 4)^) := $00; writeLn('#5.');
byte(pointer(dword(p) + 5)^) := $90; writeLn('#6.');
end;
if VirtualProtect(pointer(lib), 6, OldPageProtection, OldPageProtection) then begin
writeLn('change new-old attributes.');
end;
Readln;
end.
На L2.ru скорее всего бан чата контролируется не только клиентом, но и сервером.
На L2.ru скорее всего бан чата контролируется не только клиентом, но и сервером.
Это заметно по спам ботам:)
Я хз, я их давно не видел))
Правда и давно в ла2 не был))
Да работает. Я оказывается через LoadLibraryA перехватывал.
Извиняюсь, если прошу слишком многого, но извольте поподробнее объяснить, что именно делает фрост для восперпятствия Post/SendMessage(... WM_[SYS]KEYDOWN/UP ...) ?
Просто у меня Виндос настроена так, что не позволяет всякому "леваку" вклиниваться в мои процессы, посему всё работает прекрасно; чего нельзя сказать про человека, для которого собственно кликер и писался. По географическим причинам домой к нему я с олькой попасть не могу, вот и приходится работать вслепую.
Отсюда вопрос. Фрост внедряет свою длл во все процессы? Если да, то интересует имя дллки. Каким методом это реализовано: через стандартные виндовые хуки (если да, то на какие msg они повешены), через CreateRemoteThread(... &LoadLibraryA/W ...), через WriteProcessMemory - CreateRemoteThread, или же длл вообще не юзается, а инжектится код? Также интересует, запускаемый в моём приложении тред резидентный, или лишь выполняет своё грязное дело (какое именно, тоже неплохо бы знать) и завершается?
И что это за свой msg WM_USER+266, что постоянно приходит окну ла2?
В общем, приветствуется любая информация по защите на официальных русских серверах ла2.
Да, и подскажите, хорошая ли это затея - настолько очевидный простенький кликер? Или же будет бан и следует копать в сторону реверсинга клиента (по этому поводу у вас тут есть прекрасная темка "Радар своими руками", спасибо вам всем за неё)?
И конечно: вы не обязаны отвечать на эти вопросы по любой из пришедший вам в голову причин.
P.S.: я в ла2 совсем новичок, так что не обессудьте.
На предыдущей странице есть полный готовый код обхода этой проблемы, там же указана имя dll которую подгружает frost во все виндовые процессы.
Самый простой и безопасный метод это не дать загрузистя этой dll в свой процесс и все.
Спасибо за помощь.
Насчёт "беспалевности" Post/SendMessage-кликера вопрос остаётся в силе.
Самый простой и безопасный метод это не дать загрузистя этой dll в свой процесс и все.Да, но тогда к таким процессам фрост будет относится с подозрением.
Да, но тогда к таким процессам фрост будет относится с подозрением.
Да, но явно сказать что это бот программа фрост не сможет. Мало ли по какой причине винда не смогла дллку подгрузить.
Да, в мире существует предостаточно программ, по той или иной причине не позволяющих грузить в себя чужие модули. Например, антивирусы и некоторые системные процессы.
Если и это тебя не успокаивает - можешь в хукнутой лоадлибе возвращать не 0. Пусть считает, что это валидный хендл. Правда, в этом случае он может попробовать общаться с ним.
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot