информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСтрашный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] [Win32] Технический вопрос 28.05.02 03:51  Число просмотров: 909
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> соответственно поток который я создал в этой области
> возвращаеца на освобожденную память - вот и тупик...
> висим... (((
а зачем ему возвращаться ?
ExitThread() вызывай
<programming>
[Win32] Технический вопрос 27.05.02 23:44  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Народ, а скажите как мне сделать так, чтобы моя ДЛЛ, загруженная в область другого процесса с помощью хука, при снятии хука не высвобождала память, взятую при своей работе?

просто получаеца облом... я ставлю ДЛЛ, создаю свой поток в удаленном процессе, а када я снимаю хук, то ДЛЛ выгружаеца вместе со всеми делами и машина безвозвратно виснет потому что на месте процедуры моего потока кукиш....? как это исправить?
мне нужно чтобы память которую я отхватил в чужом процессе оставаась при нем после выгрузки ДЛЛ....

буду очень рад любым предложениям... это будет очень кстати...

сенкс
[Win32] Технический вопрос 28.05.02 01:41  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> машина безвозвратно виснет
странно
должна быть просто "недопустимая операция"
попробуй лог писать

> мне нужно чтобы память которую я отхватил в чужом процессе
> оставаась при нем после выгрузки ДЛЛ....
а VirtualAlloc пробовал ?
[C++] [Win32] Технический вопрос 28.05.02 02:05  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > машина безвозвратно виснет
> странно
> должна быть просто "недопустимая операция"
> попробуй лог писать
>
> > мне нужно чтобы память которую я отхватил в чужом
> процессе
> > оставаась при нем после выгрузки ДЛЛ....
> а VirtualAlloc пробовал ?

1) стоит SoftIce. он и вылетает... а прога безвозвратно потеряна...
2) да, сначала я юзал LocalAlloc. потом тоже подумал что может VirtualAlloc будет надежнее, но не дало результата... соответственно поток который я создал в этой области возвращаеца на освобожденную память - вот и тупик... висим... (((

посему я сейчас в deadlock'е - я не знаю как это обойти.... %(
[C++] [Win32] Технический вопрос 28.05.02 03:51  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> соответственно поток который я создал в этой области
> возвращаеца на освобожденную память - вот и тупик...
> висим... (((
а зачем ему возвращаться ?
ExitThread() вызывай
[C++] [Win32] неее. вы не поняли... 28.05.02 04:35  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
дело вот в чем:
с помощью хука я закидываю ДЛЛ в чужой процесс(функция хука - это просто заглушка, она мне не нужна. мне нужен лишь вызов DllEntryPoint). DllEntryPoint делает следующее: а) выделяет память (из области чужого процесса разумееца) б) копирует туда обработчик Thread'а. в) запускает его

Все что делает Thread - это for(;;){WaitForSingleObject(событие,таймаут)}. событие - это индикатор на завершение Thread'а изнутри (как раз чтоб он с ExitThread выходил). я намеренно не генерю это событие (эт на всяк случай... чтоб было).
поскольку событие не выполняеца, то цикл повторяеца... таким образом я могу делать что-либо в чужом процессе.
а вот теперь самая гадкая вещь

после того как я закрываю хук, он выгружает ДЛЛ из области процесса. а эта зараза видимо освобождает всю выделенную во время работы память. поэтому по истечении таймаута мой Thread отсасывает по полной программы, потому что изпод него выдернули память как ковер.. вот он и вешает мне машину...
каким образом мне избежать этого - я не понимаю...

как мне сделать так, чтоб после выгрузки ДЛЛ (по завершению хука) у меня оставалась память а не нагло удалялась???????????????
[C++] [Win32] неее. вы не поняли... 28.05.02 11:14  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
ИМХО память там не освобождается
когда ты выгружаешь длл, то исчезает import table и ты не можешь вызывать функции API
нужно до выгрузки узнавать адреса функций через GetProcAddress и потом пользоваться этими указателями
ещё не должно быть глобальных переменных или констант - этого ничего нет после выгрузки модуля

p.s.
кстати ты случайно не beginthread() используешь ?

p.p.s
лучше из DllMain всё в хук перенеси
так спокойнее
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach