информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаСтрашный баг в WindowsЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] [Win32] Технический вопрос 28.05.02 03:51  Число просмотров: 990
Автор: 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-2025 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach