ПолезностиИсключительно для полезных тем из других разделов. Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.
Morfik, сплайсинг по моему не обязательно через джамп делается, можно и через кал (но тогда потребуется дополнительный код в начале нашей функции) и через пуч + рет (но этот вариант занимает 6 байт а не 5 в начале перехватываемой функции)
В любом случае норм функции с E9 (джамп) и 15FF(колл) не начинаються вообщем спалить сам факт хука несложно.
Morfik, с джампа возможно, а вот калом и уж тем более пучем спокойно, хотя да, спалить не сложно если знать где искать, а вот если не знать хер спалишь
я например одну функцию хукаю не в начале а посередине ибо там данные в более удобной форме, и вот посмотрел бы я как фрост это палить будет не зная конекретно где я хук поставил
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Последний раз редактировалось xkor, 30.07.2010 в 04:27.
xkor, при желании думаю не сложно спалить. Почему бы фросту не проверять все тело критических функций на предмет совпадения с оригиналом, ну так чек сумму какую нибудь сверял бы куска кода.
Добавлено через 6 минут Morfik, ты не хотел бы еще немного поработать над стабильностью работы своей программы, а то я и много знакомых ее недавно купили в панике обновления 20.07 но теперь ей не пользуемся. С ней ну слишком часто клиент л2 падает с критом (субьективно с аси критует гораздо реже). Видимо в длл ты что то не предусмотрел.
Добавлено через 6 минут Morfik, ты не хотел бы еще немного поработать над стабильностью работы своей программы, а то я и много знакомых ее недавно купили в панике обновления 20.07 но теперь ей не пользуемся. С ней ну слишком часто клиент л2 падает с критом (субьективно с аси критует гораздо реже). Видимо в длл ты что то не предусмотрел.
Пока не напишут больше конкретики с какими опциями и с каким текстом крита летают - помоч наврятли смогу.
И вообще это не место для ее обсуждения так что сори за оффтоп
Последний раз редактировалось Morfik, 30.07.2010 в 13:40.
Morfik, с джампа возможно, а вот калом и уж тем более пучем спокойно, хотя да, спалить не сложно если знать где искать, а вот если не знать хер спалишь
я например одну функцию хукаю не в начале а посередине ибо там данные в более удобной форме, и вот посмотрел бы я как фрост это палить будет не зная конекретно где я хук поставил
А ты когда хук делаешь VirtualProtect и т.п. зовешь?
Если да, то могут легко спалить захучив его. Более того тестить то они могут на любой ОС, в часности на x32, где хук можно и в драйвер засунуть.
Цитата:
xkor, при желании думаю не сложно спалить. Почему бы фросту не проверять все тело критических функций на предмет совпадения с оригиналом, ну так чек сумму какую нибудь сверял бы куска кода.
Не знаю как в самом фросте, но вот код линеечных функций немного динамический. Т.е. там суются nop'ы в случайные места, каждый раз в разные.
У меня другая проблема - После последнего обновления на руоффе не могу найти процесс куда внедряться.
Такое ощущение, что процесс LineageII.exe запускает l2.bin как один из своих потоков да еще и прячет его. Пытаюсь поймать его тестовыми прогами типа этой -
Код:
{$APPTYPE CONSOLE}
uses Windows, NativeAPI;
var
ProcInfo, ProcIter : PSYSTEM_PROCESSES;
var i : Integer = 1;
{
Системный вызов ZwQuerySystemInformation для Windows XP.
}
Function XpZwQuerySystemInfoCall(ASystemInformationClass: dword;
ASystemInformation: Pointer;
ASystemInformationLength: dword;
AReturnLength: pdword): dword; stdcall;
asm
pop ebp
mov eax, $AD
call @SystemCall
ret $10
@SystemCall:
mov edx, esp
sysenter
end;
procedure GetSyscallProcessList();
var
Info: PSYSTEM_PROCESSES;
mPtr: pointer;
mSize: dword;
St: NTStatus;
begin
mSize := $4000;
repeat
GetMem(mPtr, mSize);
St := XpZwQuerySystemInfoCall(SystemProcessesAndThreadsInformation, mPtr, mSize, nil);
if St = STATUS_INFO_LENGTH_MISMATCH then
begin
FreeMem(mPtr);
mSize := mSize * 2;
end;
until St <> STATUS_INFO_LENGTH_MISMATCH;
if St = STATUS_SUCCESS then
begin
Info := mPtr;
repeat
Writeln(i:3,' ',WideCharToString(Info^.ProcessName.Buffer)) ;
//NewItem^.ProcessId := Info^.ProcessId;
//NewItem^.ParrentPID := Info^.InheritedFromProcessId;
Info := pointer(dword(info) + info^.NextEntryDelta);
Inc(i);
until Info^.NextEntryDelta = 0;
end;
FreeMem(mPtr);
end;
begin
GetSyscallProcessList();
end.
Но не вижу нужного процесса.
Последний раз редактировалось Эдвадко, 15.08.2010 в 11:49.
Вообще такая проблема наблюдается только на x86 на x64 процессы видно..
ну а проблему решить можно так:
поставь SetWindowsHookEx на свою длл либо на пустую дллку-загрузчик: