Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

Как можно перехватить событие закрытия программы   Найти похожие ветки 

 
Ketmar ©   (2006-09-16 00:01) [80]

> [76] Eraser ©   (15.09.06 23:15)
так негламурненько.

> [78] Nemec ©   (15.09.06 23:18)
я лично имею в виду: "а как определили, что не внедрилось, или что ошибка"?


 
Nemec ©   (2006-09-16 07:26) [81]

>Ketmar
Выдает сообщение об ошибке при попытке записи по адресу 0


 
Nemec ©   (2006-09-16 09:41) [82]

>xShadow
Теперь код внедряется без проблем.
Окончательный код. Тупо, но работает. От профессионала не спасет, но от действий неискушенного пользователя поможет, даже с правами админа. Спасибо за помощь.

EXE
{ Èäåÿ xShadow
áèáëèîòåêà advApiHook Ms-Rem (Ms-Rem@yandex.ru) ICQ 286370715
}
program SecretKlient;

uses
 Windows, SysUtils,
 tlHelp32, psApi,
 advApiHook;

var
 sFile: DWord;
 Size: DWord;
 Buff: pointer;
 BytesReaded: DWord;

 HandlerSnapshot, HandlerProc: Thandle;
 Data: tagPROCESSENTRY32;
 Process: DWord;

 S, Path: String;
 BufPatch: Array [0..255] Of Char;
begin
 //Ïîëó÷èòü ñïèñîê ïðîöåññîâ
 HandlerSnapshot:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
 Data.dwSize:=sizeOf(data);
 If HandlerSnapshot>0
 then
 begin
   //ñ÷èòûâàåì Dll â ïàìÿòü
   sFile :=
     CreateFile("TestDll.dll",
                 GENERIC_READ, FILE_SHARE_READ,nil, OPEN_EXISTING, 0, 0);
   Size := GetFileSize(sFile, nil);
   GetMem(Buff, Size);
   ReadFile(sFile, Buff^, Size, BytesReaded, nil);
   CloseHandle(sFile);

   If Process32First(HandlerSnapshot, Data)
   then
   begin
     Repeat
       S:=Trim(ansiLowerCase(Data.szExeFile));
       HandlerProc:=OpenProcess(PROCESS_ALL_ACCESS,True,Data.th32ProcessID);
       GetModuleFileNameEx(HandlerProc,0,BufPatch,256);
       Path:=ansiLowerCase(BufPatch);
       if (Path<>"")and(Path[1]<>"?")
       then
         Path:=ExtractFileDir(Path)
       else
         Path:="";
       S:=ExtractFileName(S);
       If (Path <> "") //AND (Pos ("system32", Path)=0)
       Then
       begin
         //&#209;&#242;&#224;&#226;&#232;&#236; &#241;&#229;&#234;&#240;&#229;&#242;
         If S<>"secretklient.exe"
         Then
         begin
           Process:=GetProcessId(PChar(S));
           EnableDebugPrivilege();
           Process := OpenProcessEx(Process);
           Try
             InjectDllEx(Process, Buff);
           Except
           End;
         end;
       end;
     until not Process32Next(HandlerSnapshot,Data);
   end;
   FreeMem(Buff);
 end;
 CloseHandle(HandlerSnapshot);
end.

DLL
{ &#200;&#228;&#229;&#255; xShadow
&#225;&#232;&#225;&#235;&#232;&#238;&#242;&#229;&#234;&#224; advApiHook Ms-Rem (Ms-Rem@yandex.ru) ICQ 286370715
}
library TestDll;

uses
 windows,
 advApiHook;

Var
 F: Boolean;
 Process: DWord;

begin
 F:=False;
 While Not F do
 begin
   {&#199;&#228;&#229;&#241;&#252; &#232;&#228;&#229;&#242; &#239;&#240;&#238;&#226;&#229;&#240;&#234;&#224;}
   {&#196;&#235;&#255; &#239;&#240;&#232;&#236;&#229;&#240;&#224;}
   Process:=GetProcessId("Notepad.exe");
   If Process=0
   Then
   begin
     MessageBox(0, "&#199;&#224;&#234;&#240;&#251;&#235;&#232; &#234;&#235;&#232;&#229;&#237;&#242;&#224;!", "&#194;&#237;&#232;&#236;&#224;&#237;&#232;&#229;", MB_OK);
   end;
   Sleep (5000);
 end;
 ExitThread(0);
end.

>Eraser
Спасибо за подсказку по WMI, то что смог прочитать заинтересовался, но тема большая, требует изучения.

На этом ветку можно закрыть, а то это уже не ветка, а монстр.
Еще раз всем большое СПАСИБО!


 
xShadow ©   (2006-09-16 11:00) [83]


> Eraser

Не плохо, но бывает но. У меня к примеру на ноуте служба WMI отключена :) жрёт она не позволительно много.


> Nemec ©

Вообщем неплохо, но есть недочёты. Видимо недочитал ;) Качай смотри, переделал немного.
http://slil.ru/23128145


 
Nemec ©   (2006-09-16 11:28) [84]

Удалено модератором
Примечание: Offtopic


 
Nemec ©   (2006-09-16 12:40) [85]

>xShadow
В таком виде работает, пришлось загрузить DLL в память, иначе не взять адрес для InjectDllEx. С DLL понятно,  для отладки было неудобно!!!

program SecretKlient;

uses
 Windows,
 SysUtils,
 tlHelp32,
 psApi,
 advApiHook;

var
sFile: DWord;
Size: DWord;
Buff: pointer;
BytesReaded: DWord;

HandlerSnapshot, HandlerProc: Thandle;
Data: tagPROCESSENTRY32;
Process: DWord;

S, Path: String;
BufPatch: Array [0..255] Of Char;
begin
//&#207;&#238;&#235;&#243;&#247;&#232;&#242;&#252; &#241;&#239;&#232;&#241;&#238;&#234; &#239;&#240;&#238;&#246;&#229;&#241;&#241;&#238;&#226;
EnableDebugPrivilege();
HandlerSnapshot:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
Data.dwSize:=sizeOf(data);
If HandlerSnapshot>0
then
begin
   //&#241;&#247;&#232;&#242;&#251;&#226;&#224;&#229;&#236; Dll &#226; &#239;&#224;&#236;&#255;&#242;&#252;
   sFile :=
     CreateFile("TestDll.dll",
                 GENERIC_READ, FILE_SHARE_READ,nil, OPEN_EXISTING, 0, 0);
   Size := GetFileSize(sFile, nil);
   GetMem(Buff, Size);
   ReadFile(sFile, Buff^, Size, BytesReaded, nil);
   CloseHandle(sFile);

  If Process32First(HandlerSnapshot, Data)
  then
  begin
    Repeat
      S:=Trim(ansiLowerCase(Data.szExeFile));
      HandlerProc:=OpenProcess(PROCESS_ALL_ACCESS,True,Data.th32ProcessID);
      if HandlerProc > 0 then
      Begin
         GetModuleFileNameEx(HandlerProc,0,BufPatch,256);
         Path:=ansiLowerCase(BufPatch);
         if (Path<>"")and(Path[1]<>"?")
         then
           Path:=ExtractFileDir(Path)
         else
           Path:="";
         S:=ExtractFileName(S);
         If Path <> "" Then
         begin
            {&#197;&#241;&#235;&#232; &#237;&#229; &#242;&#229;&#234;&#243;&#249;&#232;&#233; &#239;&#240;&#238;&#246;&#229;&#241;&#241;, &#239;&#238;&#242;&#238;&#236;&#243; &#247;&#242;&#238; &#229;&#241;&#235;&#232; &#226;&#237;&#229;&#228;&#240;&#255;&#242;&#252; &#226; &#242;&#229;&#234;&#243;&#249;&#232;&#233; &#239;&#240;&#238;&#246;&#229;&#241;&#241; &#238;&#248;&#232;&#225;&#234;&#224; &#231;&#224;&#239;&#232;&#241;&#232; &#239;&#238; &#224;&#228;&#240;&#229;&#241;&#243; 0}
            If S<>LowerCase("SecretKlient.exe")
            Then
            begin
              //&#209;&#242;&#224;&#226;&#232;&#236; &#241;&#229;&#234;&#240;&#229;&#242;
              Process:=GetProcessId(PChar(S));
              Process := OpenProcessEx(Process);
              If Process > 0
              Then
                InjectDllEx(Process, Buff);
            end;
         end;
      end;
    until not Process32Next(HandlerSnapshot,Data);
  end;
  CloseHandle(HandlerSnapshot);
end;

end.

Кстати сайт по ссылке открывается нерегулярно, в прошлый раз открылся, но при попытке закачки выдал ошибку! Поэтому я вообще не читал.

PS. Подскажи, как быть, сегодня поставил Opera, и теперь на любые действия под своей учетной записью на delphimaster требует пароль, а я его хоть убей не помню, когда заходил на сайт не думал, что долго на нем задержусь.


 
Eraser ©   (2006-09-16 13:18) [86]

> [83] xShadow ©   (16.09.06 11:00)
>
> > Eraser
>
> Не плохо, но бывает но. У меня к примеру на ноуте служба
> WMI отключена :) жрёт она не позволительно много.

дык её никода не поздно включить, можно прямо из приложения )

а что касается внедрения, все таки я бы был поосторожнее, а то потом юзерам прийдется долго отвечать на вопрос "Почему это после установки вашей программы, антивирус стал ругаться на все подряд?", эт не из воздуха пример, а из жизни :)


 
Nemec ©   (2006-09-16 15:22) [87]

> Eraser
Пока не ругается, даже Norton сам поражается, но молчит, если верить MS-REM метод довольно безопасный, если будет ругаться - это же не вирус, всегда можно отключить.
Не подскажешь ссылку на русское описание WMI, поискал в инете, общие понятия есть, но подробностей на русском не нашел.

>xShadow
С паролем все нормально.


 
Eraser ©   (2006-09-16 15:49) [88]

> [87] Nemec ©   (16.09.06 15:22)

русской литературы не знаю, к сожалению.. вот http://www.delphikingdom.com/asp/viewitem.asp?catalogid=698
самая лучшая статья на русском с хорошими примерами.


 
Ketmar ©   (2006-09-16 16:00) [89]

> [85] Nemec ©   (16.09.06 12:40)
эй, эй, монстры, вы что, грузите и мапите DLL руками, что ли? минуя виндовый загрузчик? если да -- то готовьтесь к "странным багам". и неработоспособности кучи API-функций.


 
Nemec ©   (2006-09-16 19:24) [90]

Удалено модератором
Примечание: Offtopic


 
Ketmar ©   (2006-09-16 19:28) [91]

а мне вот WMI не нравится. понимаю, что это, в принципе, не оправдано -- но не нравится. в частности -- из-за COM, которое я на дух не перевариваю. %-)


 
Eraser ©   (2006-09-16 20:50) [92]

> [91] Ketmar ©   (16.09.06 19:28)

хех, так мне тоже по-душе больше стандартные WinAPI, но реальность такова, что до многох системных механизмов, кроме как через WMI не доберешся, не считая конечно KMD, но это еще сложнее, чем WMI :)

+ ко всему ВМАЙ позволяет использовать всю свою мощь на удаленных машинами, считаю это ключевым приемуществом :)


 
Ketmar ©   (2006-09-16 21:53) [93]

> [92] Eraser ©   (16.09.06 20:50)
да я ж не говорю, что оно плохо. я говорю, что мне не нравится. %-)


 
Nemec ©   (2006-09-16 22:46) [94]

>Eraser
Облазил весь сайт микрософта не могу понять как скачать WMI SDK или уже туплю в 3 ночи, подскажи как это сделать, а то он предлагает лить 300 с лишним метров.


 
Прочитавший ветку   (2006-09-16 22:58) [95]

Интересно, а к чему приведет такая ситуация ?
В моей программе кто-то подменил адрес SomeFunct.
Запоминаю в глобальной переменной pSomeFunc:=GetProcAddress.
Этот "кто-то" снимает перехват, а я, ни сном ни духом об этом,
пытаюсь использовать pSomeFunc ?


 
Eraser ©   (2006-09-16 23:35) [96]

> [94] Nemec ©   (16.09.06 22:46)

AFAIK его качать надо для NT4 без каких то сервис паков.
в 2K/XP необходимые ActiveX уже имеются.
> [95] Прочитавший ветку   (16.09.06 22:58)

перечитал 3 раза, так и не понял, что конкретно вы хотели сказать :)
можно то же самое, только более развернуто? )


 
Ketmar ©   (2006-09-16 23:45) [97]

> [95] Прочитавший ветку   (16.09.06 22:58)
а кто сказал, что надо перехватывать методом правки IAT? сплайсингом, сплайсингом.


 
Антибайт   (2006-09-17 02:15) [98]

А это спасёт от tskill?


 
Ketmar ©   (2006-09-17 03:38) [99]

> [98] Антибайт   (17.09.06 02:15)
если перехватить ZwTerminateXXX() -- спасёт %-)


 
Прочитавший ветку   (2006-09-17 10:49) [100]

Поясните, пожалуйста.
Почему, обычно, перехватывают Zw - функции, а не Nt ?


 
Ketmar ©   (2006-09-17 10:50) [101]

> [100] Прочитавший ветку   (17.09.06 10:49)
потому что Nt в конце-концов всё равно вызывают Zw.


 
Nemec ©   (2006-09-17 11:44) [102]

Удалено модератором
Примечание: Личная переписка


 
Eraser ©   (2006-09-17 13:12) [103]

> [102] Nemec ©   (17.09.06 11:44)

ссылку на что? я ж сказал - ничего качать не надо, все уже есть в системе.
если интересует под 9x/ME/NT4, то вот ссылка http://www.microsoft.com/downloads/details.aspx?FamilyID=7750e5d7-3903-4aa8-8fbd-f555a4939285&DisplayLang=en
одна из первых, которые вывел поиск по сайту M$.


 
Nemec ©   (2006-09-17 14:42) [104]

>Eraser
Все подобные ссылки переводят на
http://www.microsoft.com/library/errorpages/smarterror.aspx/404?aspxerrorpath=/downloads/details.aspx
Запросы WMI в системе работают это я заметил, еще один вопрос, как со всем этим работать из под делфи ведь в палитре компонентов нет ничего подобного, что можно почитать на эту тему?


 
Nemec ©   (2006-09-17 14:47) [105]

Удалено модератором
Примечание: Offtopic


 
Ketmar ©   (2006-09-17 14:51) [106]

Удалено модератором
Примечание: Offtopic


 
Eraser ©   (2006-09-17 15:10) [107]

у меня  http://www.microsoft.com/downloads/details.aspx?FamilyID=7750e5d7-3903-4aa8-8fbd-f555a4939285&DisplayLang=en
открывается без всяких mask as IE :) (Opera 9.0)


 
Nemec ©   (2006-09-17 15:37) [108]

Удалено модератором
Примечание: Offtopic


 
Nemec ©   (2006-09-17 17:06) [109]

Удалено модератором
Примечание: Offtopic


 
Eraser ©   (2006-09-17 17:37) [110]

Удалено модератором
Примечание: Offtopic


 
Nemec ©   (2006-09-17 18:10) [111]

Удалено модератором
Примечание: Offtopic


 
Nemec ©   (2006-09-17 18:10) [112]

Удалено модератором
Примечание: Offtopic


 
Nemec ©   (2006-09-17 18:13) [113]

>Eraser
А где я возьму Active DS Type Library (Version 1.0) и Microsoft WMI Scripting v1.1 Library (Version 1.1) из твоего примера у меня делфи их не показывает, а в статье которую ты дал сказано: установить WMI SDK;


 
Nemec ©   (2006-09-17 18:16) [114]

Удалено модератором
Примечание: Offtopic


 
Nemec ©   (2006-09-17 19:55) [115]

Удалено модератором
Примечание: Offtopic


 
Eraser ©   (2006-09-17 20:18) [116]

> Жалко, что не скачался WMI SDK

он уже встроен в систему, всмысле Run-Time часть - остальное - заголовочные файлы, которые генерируются Делфи при установке ActiveX компонентов.


 
Nemec ©   (2006-09-17 22:56) [117]

>Eraser
Там много функций и объектов которые я до этого в глаза не видел, причем судя по примерам в статье тобой рекомендованой, параметрами методов являются тексты, так что в любом случае придется искать материал, попробую еще раз скачать WMI SDK, но уже MS Internet Explorer, может удастся. Не знаешь может где есть только документация, чтобы меньше качать?


 
Nemec ©   (2006-09-17 23:13) [118]

Удалено модератором
Примечание: Offtopic


 
Eraser ©   (2006-09-17 23:21) [119]

> [117] Nemec ©   (17.09.06 22:56)

вся документация тут msdn.com, посмотреть методы/свойства классов можно с пом. утилиты WMI CIM Studio.


 
Nemec ©   (2006-09-17 23:25) [120]

Удалено модератором
Примечание: Offtopic



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2007.04.01;
Скачать: CL | DM;

Наверх




Память: 0.71 MB
Время: 0.05 c
15-1173071399
leonidus
2007-03-05 08:09
2007.04.01
Подскажите удобную программу для создания хелпов


15-1173457222
DillerXX
2007-03-09 19:20
2007.04.01
Не запускаются exe файлы :( помогите, может кто сталкивался


8-1152596059
zorik
2006-07-11 09:34
2007.04.01
Линии разных стилей толщиной более 1 пиксела


2-1173637277
eee
2007-03-11 21:21
2007.04.01
Деление


2-1173182643
pop
2007-03-06 15:04
2007.04.01
не подключается dbf через ado