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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коллеги, занимательная задачка для треннировки. 
:(
    Опции темы
Song
  Дата 2.6.2002, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



Требуется убрать показ своего приложения в списке процессов и приложений в w2k, NT, XP


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Baa
Дата 2.6.2002, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

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



вот это ты хорошо придумал...токо говорю в очередной раз!!!
ntquerysysteminformation не обманешь!!!
Можно приклеить свою программу отдельным потоком другому приложению, но скрыть ВООБЩЕ - нельзя...Был такой журнал, звался Ring0 вот там описывалось как все это проделать...


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Song
Дата 2.6.2002, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



Да я придумал это не из-за того что мне нужен ответ на вопрос. Я его знаю. Я просто хотел узнать что думает многоуважаемый all по этому вопросу  :)
Условия такие: не дать юзеру видеть процесс тока по CAD, об остальном можно не думать. т.е я понимаю что от всего не скроешь, здесь идёт разговор только о TaskList


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Baa
Дата 2.6.2002, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

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



RegisterServiceProcess...ипортируй из kernel32.dll


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Song
Дата 2.6.2002, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



Цитата(Baa @ 02.6.2002, 20:12)
RegisterServiceProcess...ипортируй из kernel32.dll

Очень жаль но такое прокатит только в W9x,ME :bored


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Baa
Дата 2.6.2002, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

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



Это уберет программу из тасклитса, но оставит в процес листе


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Vit
Дата 2.6.2002, 19:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Я этой глупостью не занимался, но вот я нашел на сайте:

http://delphibase.endimus.com

Код

{ **** UBPFD *********** by delphibase.endimus.com ****
>> СКРЫТИЕ или отображение процесса из списка ctrl+alt+del

СКРЫТИЕ или отображение процесса в списке ctrl+alt+del

ПРАВИЛА ИСПОЛЬЗОВАНИЯ:

ДЛЯ скрытия собственного приложения из списка процессов, отображаемых
при нажатии CTRL+ALT+DEL, вызывайте функцию ShowHideInCad со следующими
параметрами:

ShowHideInCad (TakeMyApplicationProcessID, False) - и название Вашего
приложения будет скрыто из списка CTRL+ALT+DEL

ДЛЯ скрытия процесса чужого приложения, вызывайте функцию с такими
параметрами:

ShowHideInCAD (TakeProcessID('Заголовок окна скрываемого приложения'), FALSE)

Зависимости: windows
Автор:       VID, [[email protected]][email protected][/EMAIL], ICQ:132234868, Махачкала
Copyright:   VID
Дата:        23 мая 2002 г.
***************************************************** }

unit cad;

interface
uses windows;

function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stdcall; external 'KERNEL32.DLL';
function ShowHideInCad(ProcessID:Integer; Show:Boolean):boolean;
function TakeProcessID (WindowTitle:String):Integer;
function TakeMyApplicationProcessID:Integer;

implementation

//Получение дескриптора процесса любого окна, по заголовку этого окна
function TakeProcessID (WindowTitle:String):Integer;
Var
 WH:THandle;
begin
 result := 0;
 WH := FindWindow (nil , pchar(WindowTitle));
 IF WH <> 0 then GetWindowThreadProcessID(WH, @Result);
end;


//Получение дескриптора процесса собственного приложения
function TakeMyApplicationProcessID:Integer;
begin
Result := GetCurrentProcessID;
end;

//Отображение/Скрытие процесса в CTRL+ALT+DEL
function ShowHideInCAD(ProcessID:Integer; Show:Boolean):Boolean;
begin
result := true;
try
//если show = true , то отображаем процесс в CAD, иначе - прячем
IF Show=True then RegisterServiceProcess(ProcessID, 0)
else RegisterServiceProcess(ProcessID, 1);
EXCEPT result := false;end;
end;

end.


PS.
Цитата

Да я придумал это не из-за того что мне нужен ответ на вопрос. Я его знаю. Я просто хотел узнать что думает многоуважаемый all по этому вопросу

Вообще-то я думал что большинство посителей приходин на форум за конкретным решением... Может я в корне ошибаюсь, и мне надо вместо ответов присылать загадки, ответы на которые я знаю.




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Song
Дата 3.6.2002, 07:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Vit, ну уж извините меня пожалйста. Больше не буду, когда у меня нет конкретного вопроса. Нельзя узнать мнение людей ? :huh
По существу вопроса: Ваш вариант такой же как и у Baa

2Baa, Vit: обратите внимание на вопрос:

Требуется убрать показ своего приложения в списке процессов и приложений в w2k, NT, XP
  Вверх
neutrino
Дата 3.6.2002, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Вот:
Код

_asm{
 mov eax,1
 push eax
 dec eax
 push eax
 call dword ptr[pRegisterServiceProcess]
}

тот код, что на асме легко внедрить в паскаль.({}->asm...end;)
Вообше это дело есть тута:http://www.forum.vingrad.ru/cgi-bin/newforum/ikonboard.cgi?act=ST;f=31;t=978




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Song
Дата 3.6.2002, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



:D
Ещё раз говорю: в вышеуказанных ОС этого нельзя добиться через RegisterServiceProcess()


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
neutrino
Дата 3.6.2002, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Уф... Уже и весь MSDN прочел и там и сям... но вот че откопал:
Как сделать прогу невидимой в NT
И еше для себя открыл очень интересную штучку:PsSetCreateProcessNotifyRoutine
А это как оное можно юзать:вот так


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Song
Дата 3.6.2002, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



Занятная статейка но процесс прятать не умеет :((
Дочитайте до конца :(


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
neutrino
Дата 3.6.2002, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Я ее всю прочитал. Может я понял че не так... Вроде автор сатейки поясняет в конце как она (прога) работает.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Song
Дата 3.6.2002, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



Цитата из статьи:

"Что предлагаемый мною способ НЕ ДЕЛАЕТ:

Не скрывает процесс.

Не скрывает поток.

Не запускает драйвер."


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
neutrino
Дата 3.6.2002, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата


Довольно странно, что везде пишут про невозможность обмана функции NtQuerySystemInformation. Я с этим делом мучился довольно долго, а все оказалось очень просто. Думаю, многие из вас читали книгу Рихтера или что-то подобное. Главное знать как перехватываются вызовы функций и этого вполне достаточно.
Далее следует сама перехваченная функция:

Код

NTAPI Hook_NtQuerySystemInformation(
LONG type,
PVOID SystemInformation,
LONG SystemInformationLength,
PLONG ReturnLength
)
{
SYSTEM_PROCESS_INFORMATION *pinfo, *pinfo_last;

// вызываем оригинальную функцию
((PFNNtQuerySystemInformation)(PROC) g_NtQuerySystemInformation)
(type, SystemInformation, SystemInformationLength, ReturnLength);

// если получается информация о процессах
if(type == 5)
{
if(SystemInformationLength > 20000)
{
pinfo = (SYSTEM_PROCESS_INFORMATION*)SystemInformation;
for(;;)
{
// если идентификатор процесса равен идентификатору нашего процесса
if(pinfo->ProcessID == progProcessId)
{
if(pinfo->NextOffest == 0)
{
pinfo_last->NextOffest = 0;
}
else
{
pinfo_last->NextOffest += pinfo->NextOffest;
}
}
if(pinfo->NextOffest == 0) break;
pinfo_last = pinfo;
pinfo = (SYSTEM_PROCESS_INFORMATION*)((char *)pinfo + pinfo->NextOffest);
}
}
}
}




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1995 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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