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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ZwTerminateProcess, хук 
V
    Опции темы
bartram
  Дата 18.3.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Делаю хук на системную функцию ZwTerminateProcess
Есть длл:
Код

library Hook;
uses
  Windows, AdvApiHook, NativeAPI;

  var
  TrueZwTerminateProcess:Function (ProcessHandle:dword;
                            ExitStatus:dword):NTStatus;stdcall;
  //
  function NewZwTerminateProcess (ProcessHandle:dword;
                            ExitStatus:dword):NTStatus;stdcall;

  var
  pid: DWORD;
  MyHandle: DWORD;
  begin
  pid:=GetProcessId('Explorer.EXE'); //так для примера :)
  MyHandle:=OpenProcess(PROCESS_ALL_ACCESS, false,pid);
  if MyHandle = ProcessHandle
  then
 MessageBox(0, 'Нашёлся :)', 'Проверка', MB_ICONINFORMATION or MB_OK)
 else
 TrueZwTerminateProcess(ProcessHandle, ExitStatus);
end;

procedure LibraryProc (Reason : integer);
begin
  case Reason of
    DLL_PROCESS_ATTACH : //событие присоединения к процессу
      begin
         //ставим хук
       HookProc('ntdll.dll', 'ZwTerminateProcess', @NewZwTerminateProcess, @TrueZwTerminateProcess);
      end;

    DLL_PROCESS_DETACH :
//Отсоединение от процесса
// снимаем хук
    begin
     UnhookCode(@TrueZwTerminateProcess);
    end;
  end;
end;
begin
  DllProc := LibraryProc;
  DllProc (DLL_PROCESS_ATTACH);
end.

Почему то функция
Код

OpenProcess(PROCESS_ALL_ACCESS, false,pid);

Не возвращает Хендл процесса, и поэтому условие не выполняется smile не знаю почему! Помогите пожалуйста разобраться

Это сообщение отредактировал(а) bartram - 18.3.2006, 23:17


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

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


Эксперт
***


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

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



Что разве ни кто не знает? smile


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

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


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Мож привелегий мало?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
bems
Дата 20.3.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Разные вызовы OpenProcess возвращают разные хэндлы.
Добавлено @ 18:37
Можно получить путь к проге из которой вызвана процедура хука (ParamStr(0)), примести к какой-нить нормальной форнме (регистр нижний сделать например) и сравнивать с например 'c:\windows\explorer.exe'


--------------------
Обижено школьников: 8
PM MAIL   Вверх
bartram
Дата 20.3.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(bems @ 20.3.2006, 18:32 Найти цитируемый пост)
Разные вызовы OpenProcess возвращают разные хэндлы.

Как это? smile


Цитата(bems @ 20.3.2006, 18:32 Найти цитируемый пост)
Можно получить путь к проге из которой вызвана процедура хука (ParamStr(0)), примести к какой-нить нормальной форнме (регистр нижний сделать например) и сравнивать с например 'c:\windows\explorer.exe'

Хм.... А это идея, как я сам не додумался smile , спасибо!



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

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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(bartram @ 20.3.2006, 20:26 Найти цитируемый пост)
Как это?
А вот так. ИД у процесса один, а Хэндлов может быть дохрена. И каждый из них годен только внутри того процесса который вызвал OpenProcess
Добавлено @ 21:01
Цитата(bartram @ 20.3.2006, 20:26 Найти цитируемый пост)
спасибо!
Всегда пожалуйста!
Добавлено @ 21:06
Цитата(bartram @ 20.3.2006, 20:26 Найти цитируемый пост)
Хм.... А это идея, как я сам не додумался
И правильно! это я стормозил. Ща что-нить придумаю...



--------------------
Обижено школьников: 8
PM MAIL   Вверх
bartram
Дата 20.3.2006, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(bems @ 20.3.2006, 20:59 Найти цитируемый пост)
А вот так. ИД у процесса один, а Хэндлов может быть дохрена. И каждый из них годен только внутри того процесса который вызвал OpenProcess

Так а как же всё таки получить "нужный" мне?



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

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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(bartram @ 20.3.2006, 21:07 Найти цитируемый пост)
Так а как же всё таки получить "нужный" мне?

Никак. Хэндл это твой личный ключик к объекту. У кого-то другого свой ключик к тому же объекту (в твоем случае процессу). Ключики не одинаковые.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
bems
Дата 20.3.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Код

type NTSTATUS=DWORD;
     PROCESS_BASIC_INFORMATION=record
                               ExitStatus:integer;
                               PebBaseAddress:pointer;
                               AffinityMask:DWORD;
                               BasePriority:integer;
                               UniqueProcessId:DWORD;
                               InheritedFromUniqueProcessId:DWORD;
                               end;
function NtQueryInformationProcess(handle:THandle;ZeroInYourCase:integer;
                                   var BaseInfo:PROCESS_BASIC_INFORMATION;BuffSize:DWORD;var Writensize:DWORD):NTSTATUS;
                                    stdcall;external 'ntdll.dll';

function ProcessHandleToID(handle:THANDLE):DWORD;
var len:dword;info:PROCESS_BASIC_INFORMATION;
begin
ZeroMemory(@info,SizeOf(info))
NtQueryInformationProcess(handle,0,info,sizeof(info),len);
result:=info.UniqueProcessId;
end;

Добавлено @ 22:31
Єта функция по хєндлу процесса находит его ИД. ИД уникален, его можно сравнивать.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
bems
Дата 20.3.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



bartram, а у меня AdvApiHook че-то не компилится. Ругается на че-то в асме. Ты как это сделал?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
bartram
Дата 21.3.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



bems, в каком месте ругается?
Кинь код


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

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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Код

 Procedure Injector();
  asm
    pushad
    db $E8              // опкод call short 0
    dd 0                //
    pop eax             // eax - адрес текущей инструкции
    add eax, $12
    mov [eax], esi      // модифицируем операнд dd $00000000
    push [esi + $0C]    // кладем в стек имя DLL <-ТУТ БОЧИНА  advApiHook.pas(1407)  invalid combination of opcode and operands
    call [esi + $08]    // call LoadLibraryA  <-и тут тоже самое
    popad
    mov esi, [esi + $4] // восстанавливаем esi из старого контекста
    dw $25FF            // опкод Jmp dword ptr [00000000h]
    dd $00000000        // модифицируемый операнд
    ret
  end;

делфа пятая


--------------------
Обижено школьников: 8
PM MAIL   Вверх
bartram
Дата 21.3.2006, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Странно!
вот моя процедура, вроде такая же, но у меня всё работает, Делфи 7
Код

  Procedure Injector();
  asm
    pushad
    db $E8              // опкод call short 0
    dd 0                //
    pop eax             // eax - адрес текущей инструкции
    add eax, $12
    mov [eax], esi      // модифицируем операнд dd $00000000
    push [esi + $0C]    // кладем в стек имя DLL
    call [esi + $08]    // call LoadLibraryA
    popad
    mov esi, [esi + $4] // восстанавливаем esi из старого контекста
    dw $25FF            // опкод Jmp dword ptr [00000000h]
    dd $00000000        // модифицируемый операнд
    ret
  end;

Добавлено @ 18:15
Цитата(bems @ 21.3.2006, 14:50 Найти цитируемый пост)
делфа пятая

А ты что на 5-ой сидишь? Переходить пора на более новые smile


Это сообщение отредактировал(а) bartram - 21.3.2006, 18:11


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

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


Эксперт
***


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

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



Я так думаю проблема в Версии Делфи, потому что Асм есть Асм smile У меня работает а у тебя нет, выводы соответствено smile


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

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


Эксперт
***


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

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



Цитата(bems @ 20.3.2006, 22:29 Найти цитируемый пост)
Єта функция по хєндлу процесса находит его ИД. ИД уникален, его можно сравнивать.

Функция не пашет smile

Цитата(bems @ 20.3.2006, 18:32 Найти цитируемый пост)
Можно получить путь к проге из которой вызвана процедура хука (ParamStr(0)), примести к какой-нить нормальной форнме (регистр нижний сделать например) и сравнивать с например 'c:\windows\explorer.exe'

В этом случае возвращается в качестве paramstr(0) путь к той проги КОТОРАЯ завершает, а не КОТОРУЮ завершают. В моём случае нужен 2 вариант, так что этот метод подходит smile

Это сообщение отредактировал(а) bartram - 21.3.2006, 20:48


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

PM MAIL 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.

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


 




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


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

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