Keith » 01 мар 2005, 23:06
1. Может быть 'WH_GETMESSAGE' можно чем-то заменить?
2. Иногда долго не выгружает, хотя в GetMsgProc() только:
return(CallNextHookEx(g_hhook, code, wParam, lParam));
3. Мне нужно внедрять свой код в чужой поток, чтобы он там выполнялся два раза: при вредрении(вкл. перехват API) и при отключении(выкл. перехват API), но при этом нужно, чтобы код можно было внедрять в поток, который находиться в SUSPENDED. Это нужно, чтобы ни один вызов API не был пропущен.
Работать должно в win98/2000/XP, поэтому и выбрал хуки.
Вот немного подробнее:
My_DLL: имеет две функции: my_init() и my_exit(). Первая устанавливает перехват CreateProcess(), вторая — снимает.
My_Thread: устанавливает глобальный HotKey, при нажатии которого в процесс активного окна(GetForegroundWindow()) внедряется моя dll и выполняется my_init(). Если этот процесс захочет создать свою копию, т.е. вызовет CreateProcess(thisProgName,...), то на нее надо сразу вешать мою dll и выполнять my_init() _до_ выполнения команд первичного потока. Для этого я и хочу добавлять к шестому параметру CREATE_SUSPENDED, потом устанавливать хук, а потом вызывать ResumeThread() для первичного потока. Если опять нажат HotKey и активно окно процесса в котором висит моя dll, то выполнять my_exit() в этом процессе.
1. Может быть 'WH_GETMESSAGE' можно чем-то заменить?
2. Иногда долго не выгружает, хотя в GetMsgProc() только:
return(CallNextHookEx(g_hhook, code, wParam, lParam));
3. Мне нужно внедрять свой код в чужой поток, чтобы он там выполнялся два раза: при вредрении(вкл. перехват API) и при отключении(выкл. перехват API), но при этом нужно, чтобы код можно было внедрять в поток, который находиться в SUSPENDED. Это нужно, чтобы ни один вызов API не был пропущен.
Работать должно в win98/2000/XP, поэтому и выбрал хуки.
Вот немного подробнее:
My_DLL: имеет две функции: my_init() и my_exit(). Первая устанавливает перехват CreateProcess(), вторая — снимает.
My_Thread: устанавливает глобальный HotKey, при нажатии которого в процесс активного окна(GetForegroundWindow()) внедряется моя dll и выполняется my_init(). Если этот процесс захочет создать свою копию, т.е. вызовет CreateProcess(thisProgName,...), то на нее надо сразу вешать мою dll и выполнять my_init() _до_ выполнения команд первичного потока. Для этого я и хочу добавлять к шестому параметру CREATE_SUSPENDED, потом устанавливать хук, а потом вызывать ResumeThread() для первичного потока. Если опять нажат HotKey и активно окно процесса в котором висит моя dll, то выполнять my_exit() в этом процессе.