Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual C++ / MFC / WTL > CTRL+ALT+DELETE


Автор: NewGye 31.01.06, 18:35
Доброго времени суток!
Такой вопрос: как я могу спрятать свою прогу чтоб, ее не было видно по CTRL+ALT+DELETE?

Автор: NewGye 31.01.06, 18:43
Ну т.е. чтоб ее не было видно в списке процессов в диспетчере задач Windows? Так точнее будет.

Автор: A1ex_D 31.01.06, 19:49
Сам такое искал и то, что находил, работало вроде только для Win 9X, ME.

Можно попробовать таким способом (только для NT-систем):

1) Найти хэндл TaskManager'a(по заголовку "Диспетчер задач Windows" в русской винде, а в английской, наверное "Task Manager Windows").

2) Найти хэндл ListView со списком процессов

3) Найти в ListView например по имени наш процесс и удалять его постоянно из списка(например в таймере).


Как раз статья про это есть (правда там на Delphi, но переделать на Си недолго :)

Вот линк на статью:
http://www.ddsoft.hoha.ru/notes/lvmgetitem/

Автор: B.V. 31.01.06, 20:24
Достаточно назваться Winlogon

Автор: NewGye 01.02.06, 07:55
Цитата B.V. @
Достаточно назваться Winlogon

а можно поподробнее, если не сложно

Автор: B.V. 01.02.06, 13:26
Это не выход - это вариант решения.
Стандартный менеджер задач не завершит процесс с именем winlogon.

Автор: nastenka 01.02.06, 14:11
Цитата
Доброго времени суток!
Такой вопрос: как я могу спрятать свою прогу чтоб, ее не было видно по CTRL+ALT+DELETE?

вирус пишите?

Автор: Revenge_Angel 01.02.06, 17:02
b]A1ex_D[/b]Я тоже находит под Win 9X/ME, ну вот под Win 2000/Xp сложнее!
nastenka, ну почему сразу вирус... Мне эта тема тоже интересна! в личных (не корыстных) целях..

Автор: LuckLess 01.02.06, 17:06
перехватываешь ZwQuerrySystemInformation() и NtQuerrySystemInformation()

Автор: NewGye 02.02.06, 08:02
Цитата nastenka @
Цитата
Доброго времени суток!
Такой вопрос: как я могу спрятать свою прогу чтоб, ее не было видно по CTRL+ALT+DELETE?

вирус пишите?

Нет это не вирус, а прога для борьбы с узерами которые любят играть в игрушки на рабочем месте, и надо чтоб юзер не мог выгрузить мою прогу)
И всетаки я чета не могу разобраться, если у кого есть пример как это сделать выложите пажалуста))

Автор: LuckLess 02.02.06, 08:06
Цитата NewGye @
Нет это не вирус, а прога для борьбы с узерами которые любят играть в игрушки на рабочем месте, и надо чтоб юзер не мог выгрузить мою прогу)

напиши сервис.
или запускай прогу под учеткой админа и в АКЛ пропиши что бзерам ее нельзя мочить

Автор: NewGye 02.02.06, 08:15
Цитата LuckLess @
или запускай прогу под учеткой админа и в АКЛ пропиши что бзерам ее нельзя мочить

А если этот юзер другой админ, ну т.е. у некоторых юзеров есть привелегии админа, тогда как быть, ведь они могут выгружать приложения запущенные другим админом. Выход - убрать из списка процессов в диспетчере задач :wall:

Автор: sprut_nsk 02.02.06, 08:18
Да кстати интересная тема, мне бы тож хотелось узнать как это сделать мона?

Автор: LuckLess 02.02.06, 09:10
Цитата NewGye @
Выход - убрать из списка процессов в диспетчере задач

это не вариант. т.к. если админ хоть намного чеото понимает , то он все равно твою прогу найдет и убъет.
я например такой типа task manager написал..

берешь этому админу вырубаешь TAKE OWNERSHIP привилегию , и он ее убить не сможет уже никак.
к томуже , думаю , стандартный таск манагер не умеет использовать take ownership и другой админ прогу все равно загрыть не сможет.

ну если очень хочется , то как я говорил перехватывай
ZwQuerrySeystemInformation() и NtQuerrySystemInformation()

Автор: NewGye 02.02.06, 18:40
Цитата LuckLess @
Цитата NewGye @
Выход - убрать из списка процессов в диспетчере задач

это не вариант. т.к. если админ хоть намного чеото понимает , то он все равно твою прогу найдет и убъет.
я например такой типа task manager написал..

берешь этому админу вырубаешь TAKE OWNERSHIP привилегию , и он ее убить не сможет уже никак.
к томуже , думаю , стандартный таск манагер не умеет использовать take ownership и другой админ прогу все равно загрыть не сможет.

ну если очень хочется , то как я говорил перехватывай
ZwQuerrySeystemInformation() и NtQuerrySystemInformation()

А если не очень сложно, расскажите тупому ламеру, как я могу перехватить ZwQuerrySeystemInformation() и NtQuerrySystemInformation()?

Автор: sprut_nsk 02.02.06, 19:03
Цитата A1ex_D @
Сам такое искал и то, что находил, работало вроде только для Win 9X, ME.

Можно попробовать таким способом (только для NT-систем):

1) Найти хэндл TaskManager'a(по заголовку "Диспетчер задач Windows" в русской винде, а в английской, наверное "Task Manager Windows").

2) Найти хэндл ListView со списком процессов

3) Найти в ListView например по имени наш процесс и удалять его постоянно из списка(например в таймере).


Как раз статья про это есть (правда там на Delphi, но переделать на Си недолго :)

Вот линк на статью:
http://www.ddsoft.hoha.ru/notes/lvmgetitem/

Ну вот кароче решил памоч бедному админу, и переложил код на С++, но если честно то это балавство, прогу твою так скрывать не очень хорошо, просто если она находится вверху списка, сам список мигает(ну если эту функцию вызывать циклически)....
Вот код:


<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    bool func(){
        if(HWND hWnd=::FindWindow("#32770", "Диспетчер задач Windows")){
            HWND hList = ::FindWindowEx(hWnd, 0, "#32770", "");
            hList=::FindWindowEx(hList, 0, "SysListView32", NULL);
            int vItemCount = ::SendMessage(hList, LVM_GETITEMCOUNT, 0, 0);
            char *buf=new char[100];
            char vBuffer[255];
            DWORD vProcessId;
            SIZE_T vNumberOfBytesRead=255;
            HANDLE  vProcess;
            LVITEM vItem;
            ::GetWindowThreadProcessId(hList, &vProcessId);
            vProcess = ::OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, false, vProcessId);
            LPVOID  vPointer;
            CString st;
            vPointer = ::VirtualAllocEx(vProcess, NULL, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
            for(int i=0;i<vItemCount;i++){
                vItem.mask=LVIF_TEXT;
                vItem.iItem=i;
                vItem.iSubItem=0;
                vItem.cchTextMax=sizeof(vBuffer);
                vItem.pszText=LPTSTR(SIZE_T(vPointer) + sizeof(LVITEM));
                ::WriteProcessMemory(vProcess, vPointer, &vItem, sizeof(LVITEM), &vNumberOfBytesRead);
                ::SendMessage(hList,LVM_GETITEM,i,LPARAM(vPointer));
                ::ReadProcessMemory(vProcess,LPVOID(SIZE_T(vPointer) + sizeof(LVITEM)),&vBuffer[0],sizeof(vBuffer),&vNumberOfBytesRead);
                st=vBuffer;
                if (st=="Твоя_прога.exe"){
                    ::SendMessage(hList,LVM_DELETEITEM,i,0);
                }
            }
            VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE); // освобождаем память
            CloseHandle(vProcess); // закрываем дескриптор доступа к процессу
            return true;
        }
        return false;
    }

Автор: Revenge_Angel 05.02.06, 06:22
Вот еще есть что то:
http://www.hackzona.ru/hz.php?name=News&file=article&sid=4718

А это наш любимый гугл:
http://www.google.com/search?hs=WrH&hl=ru&client=opera&rls=ru&q=%22type+SYSTEM_INFORMATION_CLASS%22&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)