Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как "заморозить" процесс? Приостановить процесс 
:(
    Опции темы
Jetus
Дата 28.2.2005, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.2.2005
Где: Украина, Хмельниц кий

Репутация: 1
Всего: 1



Большое спасибо ещё раз, г-н p0s0l!
Действительно, SetDebugPrivilege позволила его тормознуть.

Однако RAdmin тоже прав. Когда я для проверки (после того как остановил 4 процесса антивиря) решил скопировать вирус с одного места на другое, то у меня ничего не вышло, правда никакого предупредительного сообщения (как должно быть) не вылетело. Так и есть - стоит хук и хоть процессы заморожены, но хук работает. Как же "заморозить" хук? Может вопрос звучит глупо, но всё же?
PM MAIL ICQ   Вверх
RA
Дата 28.2.2005, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Jetus Тебе нужно выгружать чужую dll () из процесса каторому ты хочешь дать свободу действий.
PM   Вверх
bartram
  Дата 28.2.2005, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



RAdmin, а как узнать имя этой Dll?

Это сообщение отредактировал(а) bartram - 28.2.2005, 21:56


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
RA
Дата 28.2.2005, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Ну это уже самому смотреть нужно какие длл-ки системные а какие подозрительные.
Добавлено @ 22:52
Смотри описание, пути запуска, информацию о файле.
PM   Вверх
Jetus
Дата 1.3.2005, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.2.2005
Где: Украина, Хмельниц кий

Репутация: 1
Всего: 1



Спасибо, RAdmin, именно так я и думал, только вот я умею выгружать dll лишь из собственных процессов smile а как выгрузить нужную dll из чужого??? smile
PM MAIL ICQ   Вверх
Girder
Дата 1.3.2005, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Цитата(RAdmin @ 28.2.2005, 22:51)
Ну это уже самому смотреть нужно какие длл-ки системные а какие подозрительные.
Наврятли так приметивно... кто-то делает smile

Jetus смотри какие драйверы подключаются.

Цитата(Jetus @ 1.3.2005, 08:39)
а как выгрузить нужную dll из чужого???
Для динамически загруженных: FreeLibrary в контексе процесса

Это сообщение отредактировал(а) Girder - 1.3.2005, 15:35


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Jetus
Дата 1.3.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.2.2005
Где: Украина, Хмельниц кий

Репутация: 1
Всего: 1



Спасибо, Girder. Понятно, что FreeLibrary, только это для своего процесса. А у меня вопрос такой: я знаю, что определённый чужой процесс (назовём его "а.ехе") подгрузил библиотеку ("х.dll"). Как вугрузить из а.ехе библиотеку х.dll?
PM MAIL ICQ   Вверх
Girder
Дата 1.3.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Типо так:
Код
uses tlhelp32;

procedure FreeLibraryPID(pID:Cardinal; NameDLL:string);
type
TInjectCode=packed record
 Push:Byte;
 PushValue:DWord;
 Call:Byte;
 CallValue:DWord;
 IsZero:Word;
 JmpZero:Word;
 Ret:Byte;
end;
var H:THandle;
   Module32:TModuleEntry32;
   InjectCode:TInjectCode;
   KernelDLL:DWord;
   oProcess,oProcessThread:DWord;
   PID_Mem:Pointer;
   t:DWord;
begin
InjectCode.CallValue:=0;
KernelDLL:=LoadLibrary('Kernel32.dll');
if KernelDLL<>0 then
 begin
  InjectCode.CallValue:=DWord(GetProcAddress(KernelDLL,'FreeLibrary'));
  FreeLibrary(KernelDLL);
 end;
if (pID=0)or(InjectCode.CallValue=0) then exit;
oProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,PID);
if oProcess=0 then exit;
PID_Mem:=VirtualAllocEx(oProcess,nil,SizeOf(InjectCode),MEM_RESERVE or MEM_COMMIT,PAGE_EXECUTE_READWRITE);
if PID_Mem=nil then
 begin
  CloseHandle(oProcess);
  exit;
 end;
NameDLL:=trim(NameDLL);
H:=CreateToolHelp32Snapshot(TH32CS_SNAPMODULE,pID);
if H<>INVALID_HANDLE_VALUE then
 begin
  InjectCode.Push:=$68;
  InjectCode.Call:=$e8;
  InjectCode.IsZero:=$C021;
  InjectCode.JmpZero:=$F275;
  InjectCode.Ret:=$C3;
  Module32.dwSize:=SizeOf(TModuleEntry32);
  if Module32First(H,Module32) then
   repeat
    if AnsiCompareText(NameDLL,Module32.szModule)=0 then
     begin
      InjectCode.PushValue:=DWord(Module32.modBaseAddr);
      InjectCode.CallValue:=InjectCode.CallValue-DWord(PID_Mem)-10;
      if (WriteProcessMemory(oProcess,PID_Mem,@InjectCode,SizeOf(InjectCode),t)and(t=SizeOf(InjectCode))) then
       begin
        oProcessThread:=CreateRemoteThread(oProcess,nil,0,PID_Mem,nil,0,t);
        if oProcessThread<>0 then
         begin
          if WaitForSingleObject(oProcessThread,1000)<>WAIT_TIMEOUT then //Даем на выгрузку одну секунду.
           ShowMessage('Один есть!');
          CloseHandle(oProcessThread);
         end;
       end;
     end;
   until (Module32Next(H,Module32)=false);
  CloseHandle(H);
 end;
VirtualFreeEx(oProcess,PID_Mem,0,MEM_RELEASE);  
CloseHandle(oProcess);
end;


Использование:
Код
procedure TForm1.Button1Click(Sender: TObject);
var pID:DWord;
   NameDLL:String;
begin
pID:=StrToInt(Edit1.Text);
NameDLL:=Edit2.Text;
FreeLibraryPID(pID,NameDLL);
end;


PS: Выгрузка только динамически загруженных DLL. Если ты выгрузиш(попытаешся) статическую... то процесс-жертва скорее всего прибьется системой. smile


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Jetus
Дата 1.3.2005, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.2.2005
Где: Украина, Хмельниц кий

Репутация: 1
Всего: 1



Girder, ты меня просто выручил! Отличный код! smile
Резюме по топику или для чего всё это было нужно: пробрался ко мне на комп вирь, который инжектирует свою dll-библиотеку в другие процессы. "Замораживать" процессы меня тут уже научили (ещё раз спасибо г-ну p0s0l), выгружать библиотеки из чужих процессов научили (ещё раз спасибо, Girder).
Остался ещё только один вопрос. Я не уверен, но по моему вирь запихивает свою dll-библиотеку в адресное пространство Kernel32.dll. Вопрос: Как можно просмотреть, какие библиотеки загружены Kernel32.dll?
PM MAIL ICQ   Вверх
Girder
Дата 1.3.2005, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Цитата(Jetus @ 1.3.2005, 19:03)
Я не уверен, но по моему вирь запихивает свою dll-библиотеку в адресное пространство Kernel32.dll
Енто как... так? smile smile

PS: Вирь может сидеть! в адрессном пространстве Kernel32 и т.п. Он может не много(или много) переписать код Kernel32(или других Dll) в нутри адрессного пространства. Тогда так... енто проверяется: Сравнивается код Dll в контексте процесса жертвы... и в твоем контексте... (или с образом на диске - но енто чуть сложнее)

PS2: Ты б лудше антивирь... запустил smile


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Jetus
Дата 2.3.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.2.2005
Где: Украина, Хмельниц кий

Репутация: 1
Всего: 1



Гы smile Антивирь его не видит - я специально даже новые базы скачал.
Но он вроде как притих, кажись я замочил его инжектор и теперь он не проявляется.

Огромная благодарность всем, кто принимал участие в топике! Спасибо! smile
PM MAIL ICQ   Вверх
RA
Дата 3.3.2005, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Цитата(Girder @ 1.3.2005, 10:29)
Наврятли так приметивно... кто-то делает


Нормально smile !
PM   Вверх
Competitor
Дата 31.1.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 23.3.2005
Где: Tula

Репутация: нет
Всего: -1



А монжо ли приостановить выполнение программы до наступления события OnActivate? Прошу пример
PM MAIL WWW   Вверх
_hunter
Дата 31.1.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



а она и так после него работать начинает...
что именно тебе нужно?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0853 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.