![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| drZmeu |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 22.11.2006 Репутация: нет Всего: 1 |
Всем привет! У мну снова вопрос ! Предположим я загрузил dll в память чужого процесса.
Как мне обшатся с этой dll! Допустим отослать её (*RunStopHook)(true, hInstance); из моего процесса в dll которая находится в чужём процессе ? Это сообщение отредактировал(а) drZmeu - 17.3.2007, 22:48 --------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code] |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
подгрузи её в свое адресное пространство и общайся на здоровье
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| drZmeu |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 22.11.2006 Репутация: нет Всего: 1 |
Тоесть как я понимаю она должна быть в моём и в чужом адресном пространстве ???
--------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code] |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Нет конечно, это глупости. Ты как её подгружаешь? Установкой хука на оконные сообщения или инжектом базонезависимого кода и удалённым исполнением последнего? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| drZmeu |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 22.11.2006 Репутация: нет Всего: 1 |
W4FhLF: С помошью потоков. Задача у меня такая я подгружаю dll она ставит хук или моё приложение должно ставить хук. После чего dll выполняет хук и подгружает WSAStartup !
И наче никак не подгрузишь =( Если кто-то сможет напишите небольшой примерчи с созданием потоко на процедуру подгрузки WSAStartup а то я месяц парюсь не выходит! Получилось один раз но она выполнялась при каждом действии и в итоге вылетала с ошибкой =( --------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code] |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
drZmeu, я мало, что понял из написанного тобой, а самое главное не получил ответа на свой вопрос
Посмотри, вот здесь недавно обсуждали перехват, человек разобрался со всем. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| drZmeu |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 22.11.2006 Репутация: нет Всего: 1 |
Эммммм. Выкладываю наброски. Толко вот ещё что! Мне нужно чтоб HOOK выполнялся только на конкретное приложение а не на всем. Ато у мну сразу вырубается антивирус, браузер и т.д
Код .EXE
Код .DLL
Как его поправить чтоб hook выполнялся на totalcommander и один раз! Ну вобшем в коде всё понятно. --------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code] |
||||
|
|||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
drZmeu, если тебе нужно, что бы некоторые переменные в твоих dll были едины для всех процессов, помещай их в общую секцию(хотя это плохо)
Вообще, не понятно что ты хочешь. |
|||
|
||||
| drZmeu |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 22.11.2006 Репутация: нет Всего: 1 |
Tectoder: Коточе возми сейчас побыстрому напиши dll которая будет прослушивать порт при внедерении в другой процесс TotalCommander например....
Без хуков это сделать нериально потомучто будет вывалится всё наружу после if(WSAStartup(0x0200,&wsa)!=0) !!!! Мне нужно: #1 Инжектить с помошью потоков мою dll в чужой процесс - с этим проблем нет. Предположим она уже там. #2 Какимто образом научится обшатся с моей dll послеть её тотже запрос (*SSProc)(0xFF10); !!! После чего активируется мой HOOK и создаётся поток на StartWsa !!! Причём HOOK должен ставится только на этот процесс на WH_GETMESSAGE ! Когда подгрузилась WSAStartup! Отправляется сообшение моему процессу ктоторый опять же отсылает (*SSProc)(0xFF00); и снимает HOOK! Порт прослушивается, плагин работает, все счастливы Happy END !!! Как подругому разъеснить незнаю! Разжевал как мог... ПОмойму и ребёнок поймёт! Задача состоит только в том чтоб dll в чужом процессе благополучно запустила WSAStartup... --------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code] |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
Тебе надо как-то уведомить dll о том, что надо чтото сделать? Ну есть куча вариантов.
Пусть dll, которая в другом процессе, ждет, пока сработает семафор, и по этому событию запускает твою процедуру. Или создает окно на которое будет ждать прихода сообщений. Или принимает команды через канал. Или на худой конец, создавай в чужом процессе поток, с процедурой SSProc. Вариантов масса. Однако, любому, задающему вопрос на форуме, следует помнить, что вопросы надо задавать конкретные. Вопросы аля: "вот код почему он не работает" обычно получают наименьшее количиство ответов. Следует также помнить, что никто не умеет, и не обязан читать ваши мысли, и поэтому не всегда бывает понятно, что вам нужно. Винить в этом следует себя(потому что не можете объяснить) а не того, кто отвечает(мол, че тут не понятного, я же все объяснил). Это сообщение отредактировал(а) Tectoder - 18.3.2007, 19:05 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Ты в dll ставишь ГЛОБАЛЬНЫЙ СИСТЕМНЫЙ хук, а вот, чтобы поставить хук на отдельное приложение нужно инжектить dll в отдельное приложение и ты пишешь, что проблем с этим у тебя нет:
+ "инжектить с помощью потоков" неккоректно звучит и ничего не значит в данной ситуации. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| drZmeu |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 22.11.2006 Репутация: нет Всего: 1 |
Ок звучит некоректно тогда: Внедрение DLL с помощью удаленных потоков
Я думаю Рихтер описывает всё коректно Tectoder: Извени если я тебя обидел или задел... --------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code] |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
drZmeu, суть в том, что этот метод будет инжектировать DLL во все процессы имеющие окна и во все вновь созданные процессы. Он тебе не подходит, если ты хочешь инжектировать только в один процесс.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| drZmeu |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 22.11.2006 Репутация: нет Всего: 1 |
А какой тогда подходит???
Моё приложение не будет иметь окон... Я в хуках очень мало понимаю но почему "если будут имется окна то способ мне неподходит =\" Тогда можно ли както решить проблему подгрузки WSAStartup... Из DllMain этого делать нельзя ибо вызовет ошибку Это сообщение отредактировал(а) drZmeu - 19.3.2007, 01:02 --------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code] |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
drZmeu,
эм. не думал, что мой совет вызовет столько сложностей - "выдан" он был, исходя из твоих предыдущих топиков, в предположении что хуки(SetWindowsHookEx) ты так или иначе используешь(и умеешь это делать). тем не менее, совет-то довольно заднепроходный, за что приношу извинения, так как он, похоже, внес только полную сумятицу в твою голову. ![]() достаточно в DllMain просто создать поток, в котором спокойно работать:
на правах попытки реабилитации за совет, попусту породивший не один топик. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |