Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизScheduler Найти похожие ветки
← →
Task (2004-06-24 22:05) [0]Как скрыть прогу не зависимо от платформы Win9x или WinNT(2000, XP).
Что бы её ни где не было видно т.е. что бы обычному пользователю
завершить её работу было очень сложно.
Смысл - есть две программы одна Scheduler (которую нужно спрятать)
вторая доступная пользователю для редактирования файла который использует
Scheduler. Файл ситывается при запуске Scheduler"a. Если во второй
программе изменили файл, посылается сообщение Scheduler"у тот в свою
очередь загружает новые данные из файла.
Или как лучше всего сделать этого гребаного Scheduler,a???
Если можно пример по спрятыванию проги не зависимо от платформы.
← →
Task (2004-06-24 23:30) [1]?????
← →
miwa © (2004-06-24 23:49) [2]В факе смотрел?
← →
Игорь Шевченко © (2004-06-25 10:25) [3]А зачем ее прятать ? Запусти, как сервис, отбери у пользователя права
← →
Task (2004-06-25 14:41) [4]Игорь Шевченко © (25.06.04 10:25) [3]
Каким образом ее запускать как сервис и будет ли это работать в Win98(95)
← →
Task (2004-06-25 15:56) [5]Можно ли пример минимального приложения работающего как сервис?
Как отобрать права у пользователя?
← →
Дмитрий2004 (2004-06-25 16:26) [6]Держи правда видно только в процессе
ShowWindow(Handle,SW_Hide);
ShowWindow(Application.Handle,SW_Hide);
← →
Task (2004-06-25 16:33) [7]Дмитрий2004 (25.06.04 16:26) [6]
Да, но в этом случае и завершить прогу не проблема.
Под Win98 работаетfunction RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external "KERNEL32.DLL";
в WinXP это не пашет:(
Прочтите [5]
← →
panov © (2004-06-25 17:13) [8]http://delphimaster.net/view/4-1080805108/
← →
Task (2004-06-25 18:48) [9]panov © (25.06.04 17:13) [8]
Я понял что не так то просто скрыть процесс под NT?
[5]
Можно ли пример минимального приложения работающего как сервис?
Как отобрать права у пользователя?
??????????????????????????????????
← →
Task (2004-06-25 18:51) [10]Да... А реально ли сделать такую прогу которая при старте проверяла какая ОС если Win9x то пряталась бы функцией RegisterServiceProcess, а если WinNT(XP, 2000) запускалась как сервис?
← →
Task (2004-06-25 20:00) [11]НЕ ВЕРЮ что никто незнает или не хочет помочь!
← →
Task (2004-06-25 20:52) [12]Кто сможет ВОТ ЭТО (ниженаписанное) перевести на язык понятный DELPHI??????
Это я так понял "сокрытие" процесса на WinNT - платформах
NTAPI Hook_NtQuerySystemInformation(
LONG type,
PVOID SystemInformation,
LONG SystemInformationLength,
PLONG ReturnLength
);
typedef struct {
FILETIME ProcessorTime;
ULONG unk2, unk3;
FILETIME CreateTime;
ULONG unk6;
ULONG StartAddress;
ULONG ProcessID;
ULONG ThreadID;
ULONG CurrentPriority;
ULONG BasePriority;
ULONG ContextSwitchesPerSec;
ULONG ThreadState;
ULONG ThreadWaitReason;
ULONG unk15;
} SYSTEM_THREAD_INFORMATION;
typedef struct {
ULONG NextOffest; // следующий процесс
ULONG ThreadCount;
ULONG unk2, unk3, unk4, unk5, unk6, unk7;
FILETIME CreateTime;
FILETIME UserTime;
FILETIME KernelTime;
ULONG unk14;
WCHAR *pModuleName; /* unicode */
ULONG BasePriority;
ULONG ProcessID;
ULONG InheritedFromUniqueProcessID;
ULONG HandleCount;
ULONG unk20, unk21;
ULONG PeekVirtualSize;
ULONG VirtualSize;
ULONG PageFaultCountPerSec;
ULONG PeakWorkingSetSize;
ULONG WorkingSetSize;
ULONG PeekPagedPoolUsage;
ULONG PagedPoolUsage;
ULONG PeekNonPagedPoolUsage;
ULONG NonPagedPoolUsage;
ULONG unk31; /* PagefileUsage ? */
ULONG PeakPagefileUsage;
ULONG unk33; /* PrivateBytes ? */
SYSTEM_THREAD_INFORMATION ThreadInfos[1]; // потоки данного процесса
} SYSTEM_PROCESS_INFORMATION;
NTAPI Hook_NtQuerySystemInformation(
LONG type, // тип информации
PVOID SystemInformation, // указатель на буфер
LONG SystemInformationLength, // размер буфера в байтах
PLONG ReturnLength // указатель на 32-битное число
)
{
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);
}
}
}
}
← →
Игорь Шевченко © (2004-06-25 21:09) [13]
> Это я так понял "сокрытие" процесса на WinNT - платформах
Это все открывается
← →
Task (2004-06-25 22:56) [14]Спасибо Игорь, и всем кто откликнулся.
Впринципе открывается ну бог сним. В самом начале в вопросе были строки "что бы обычному пользователю
завершить её работу было очень сложно". Мне ненужно её прятать от Хакеров, Крякеров и иже с ними. Вообщем я нашел код который прячет процесс под NT - платформами по крайней мере под XP.
Проверил - работает только насколько корректно незнаю я в API слабоват. Могу выложить сюда для оценки (большой очень).
← →
Task (2004-06-25 22:58) [15]И вот еще вопрос. Если процесс скрыт, окно непоказывается что вернет функция FindWindow. Или как мне посылать сообщения скрытому процессу?
← →
Игорь Шевченко © (2004-06-25 23:14) [16]
> Впринципе открывается ну бог сним. В самом начале в вопросе
> были строки "что бы обычному пользователю
> завершить её работу было очень сложно".
Эта задача для NT-систем решается стандартными средствами системы, ограничением прав пользователя, установкой нужного дескриптора безопасности у твоего процесса (запрещающего доступ к процессу для его закрытия).
> Если процесс скрыт, окно непоказывается что вернет функция
> FindWindow. Или как мне посылать сообщения скрытому процессу?
Если окно есть, но не показано, то FindWindow вернет его Handle.
Но я бы посоветовал посмотреть в
Program Files\Borland\Delphi\Demos\IPCDemos\*.* - там описаны примеры межпроцессного взаимодействия.
← →
Task (2004-06-25 23:25) [17]Игорь еще раз СПАСИБО!
Пример неплох (\Delphi\Demos\IPCDemos\*.*) буду изучать.
(Эта задача для NT-систем решается стандартными средствами системы, ограничением прав пользователя, установкой нужного дескриптора безопасности у твоего процесса (запрещающего доступ к процессу для его закрытия).)
Каким образом программно программа отнимет у пользователя все эти права или это Админ должен делать, тогда это не пойдет.
← →
Игорь Шевченко © (2004-06-26 00:20) [18]
> это Админ должен делать, тогда это не пойдет.
Именно. В противном случае задача не имеет смысла.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.035 c