| eXeL@B —› Крэки, обсуждения —› Как найти хендл окна в самой проге? |
| Посл.ответ | Сообщение |
|
|
Создано: 17 октября 2005 11:49 · Личное сообщение · #1 |
|
|
Создано: 17 октября 2005 15:34 · Личное сообщение · #2 |
|
|
Создано: 18 октября 2005 04:40 · Личное сообщение · #3 |
|
|
Создано: 18 октября 2005 09:18 · Личное сообщение · #4 Ну например можно так, classname и windowname определяе любым шпионом:
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
а кода на асме наверное не будет. Мне у Касперски фраза понравилась, точно не помню, приблизительно так "Готовые решения развращают хакера и он теряет стимул к развитию"
![]() |
|
|
Создано: 19 октября 2005 04:12 · Личное сообщение · #5 Нет все конечно хорошо, но все таки: Подскажите как сама программа получает все эти хендлы окон или каждый раз вызывается FindWindow? Да и потом, когда окно уже созданно, его хендл должен находиться в области памяти самой программы (ну эт по-моему), да и смещение д.б. наверное одним и тем же. Вот по этому поводу я и думаю что можно найти как то хендл окна находясь в самой программе не через FindWindow. ChildWindowFromPoint() находит клиентское окно по относительным координатам в указанной точке. И если мы меняем размеры главного окошка, соответсвенно меняется и относительные координаты клиентского окна. Для нахождения клиентского окна я использовал FindWindowEx. ![]() |
|
|
Создано: 19 октября 2005 14:49 · Поправил: intty · Личное сообщение · #6 теперь понятно. действительно, то что я предлагал выше, не совсем то. крякеру очень полезно знать хотя-бы основы WinAPI. Без этого придется туго. Сама программа получает хендлы любого окна, в том числе и главного, одинаково. Для создания формы, кнопки, панельки, чего угодно, дельфи компилятор использует функцию HWND CreateWindowEx(
DWORD dwExStyle, // extended window style
LPCTSTR lpClassName, // pointer to registered class name
LPCTSTR lpWindowName, // pointer to window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HMENU hMenu, // handle to menu, or child-window identifier
HINSTANCE hInstance, // handle to application instance
LPVOID lpParam // pointer to window-creation data
);
после ее вызова в eax будет находиться хэндл созданного окна, либо NULL, если окно по каким-то причинам не было создано. обрати внимание на второй и третий параметр. если lpClassName будет TForm1(а по другому главное окно обычно редко обзывают), то это как раз создание главного окна и соответственно в eax после колла будет лежать его хэндл. ![]() |
|
|
Создано: 19 октября 2005 20:04 · Поправил: DDA · Личное сообщение · #7 |
|
|
Создано: 19 октября 2005 22:41 · Личное сообщение · #8 |
|
|
Создано: 20 октября 2005 04:02 · Личное сообщение · #9 |
|
|
Создано: 20 октября 2005 04:12 · Личное сообщение · #10 |
| eXeL@B —› Крэки, обсуждения —› Как найти хендл окна в самой проге? |
| Эта тема закрыта. Ответы больше не принимаются. |







Для печати