можно по таймеру сравнивать значение WndProc Код (Text): LRESULR CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { ... if (message == WM_TIMER) { if (GetWindowLongPtr(hWnd, GWLP_WNDPROC) != &WndProc) { // error code } } .... } или вообще при любом сообщении - но это может замедлить работу.
Сообщение таймера тоже можно перехватить... Мне просто интересно, как icq защищается. У меня не получается сменить ей адрес процесса, ни одному едит окну. Но она норм при этом работает. А Квип, просто клинит сразу, но тоже не получается.
Кстати, когда у обычной icq стал сообщение таймера перехватывать, ее так же клинить как и квип стало Как буд-то вообще на внутренних компонентах нет обработчика процессов.
А как ты перехватываешь? Отдельная dll, в которой WndProc заменяется? (SetWindowLongPtr(hWnd, GWLP_WNDPROC, MyNewWndProc); Там может быть поток который постоянно проверяет WndProc окна.
Да, я делаю так. Просто странно, почему тогда их клинит, а не просто адрес функции обратно заменяется. Кстати, а есть что-нибудь такое, как например hackerView, только для ехе файлов. Чтоб не надо было как в IDA, в которой у меня так и не поучилось получить нормальный код... Вон в HV, так легко, открыл файлик, исправил байты, которые нужно, и сохранил... Даже компилять ничего не нужно. А в IDA, хрен поймешь, как из полученого вообще опять ехе сделать, даже без изменений.
Сорри за оффтоп, не удержался ) Lex2029 А есть что-нибудь навроде топора, чтобы там подтесать, или клин забить? А то мне из инструментов пилу посоветовали, ей пока подтешешь, запаришься. А как гвоздь забить - это вообще хрен поймешь. А если по теме - не думаю, что у аськи или квипа есть специальная защита от подмены WndProc. Скорее, какая-нибудь бага у тебя. Или ты не учитываешь, что ВСЕ окна могут быть созданы на базе одного класса. И иметь в основе какую-нибудь борландовскую TWindow. И могут сами себя субклассировать ) Поскольку ранее было вот это: http://www.wasm.ru/forum/viewtopic.php?id=23770, то опять же, код в студию! Что там у тебя в длл, которую внедряешь?
Существует единственный способ - следить за этим адресом и в случае подмены, возвращать старый. Но, как сказал FatMoon, вряд ли где-то такое реализовано, ибо смысла и толка в этом ноль. Я, по крайней мере, таких прог не встречал...