Форум: "WinAPI";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизКак можно перехватить событие закрытия программы Найти похожие ветки
← →
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
//Ñòàâèì ñåêðåò
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
{ Èäåÿ xShadow
áèáëèîòåêà 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
{Çäåñü èäåò ïðîâåðêà}
{Äëÿ ïðèìåðà}
Process:=GetProcessId("Notepad.exe");
If Process=0
Then
begin
MessageBox(0, "Çàêðûëè êëèåíòà!", "Âíèìàíèå", 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
//Ïîëó÷èòü ñïèñîê ïðîöåññîâ
EnableDebugPrivilege();
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);
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
{Åñëè íå òåêóùèé ïðîöåññ, ïîòîìó ÷òî åñëè âíåäðÿòü â òåêóùèé ïðîöåññ îøèáêà çàïèñè ïî àäðåñó 0}
If S<>LowerCase("SecretKlient.exe")
Then
begin
//Ñòàâèì ñåêðåò
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.69 MB
Время: 0.038 c