Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Завершить процесс!

367
07 февраля 2007 года
Meatcoins
303 / / 18.01.2006
Некоторые проги оставляют после себя несколько ненужных резидентов - как их грохнуть?
Код:
.data
module db "help.exe",0h
....
....
....
invoke OpenSCManager,0h,0h,SC_MANAGER_ALL_ACCESS
.if eax==0
invoke Beep,40h,1000h
.endif
invoke OpenService,eax,offset module,DELETE
.if eax==0
invoke Beep,40h,100h  ;Вот тут ошибка возникает!!!
.endif                        ;Не могу получить handle процесса!!!
push eax
invoke DeleteService, eax
call CloseServiceHandle

Как получить handle процесса и его грохнуть!?
Кстати лучше TerminateProcess или DeleteService?
602
07 февраля 2007 года
KPI Student
265 / / 16.12.2006
Чтобы завершить системный процесс, получите привилегии отладчика:
Код:
//-----------------------------------------------------------------------
void DebugPrivileges()
{
    HANDLE hToken=NULL;
    TOKEN_PRIVILEGES tp;
    DWORD ret=0;

    tp.PrivilegeCount=1;
    if (OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
    {
        bool f=false;
        f=LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&(tp.Privileges[0].Luid));
        tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
        f=AdjustTokenPrivileges(hToken,false,&tp,0,NULL,&ret);
    }
}
//------------------------------------------------------------------------

Как найти процесс см. Toolhelp32:
Код:
#include <tlhelp32.h>
bool FindProcess(const char *name, PROCESSENTRY32 *pEntry)
{ // на выходе дает pEntry, нам интересно pInfo.th32ProcessID
    HANDLE hSnapshot;
    PROCESSENTRY32 pe;

    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot == INVALID_HANDLE_VALUE)  return 0;

    memset(&pe, 0, sizeof(pe));
    pe.dwSize = sizeof(pe);
    if (!Process32First(hSnapshot, &pe))
    {
        CloseHandle(hSnapshot);
        return 0;       //опять не срослось;
    }

    do
    {
        if (!lstrcmpi(pe.szExeFile,name))           // вот он
            {*pEntry=pe;CloseHandle(hSnapshot);return true;}
    }
    while (Process32Next(hSnapshot, &pe));
    CloseHandle(hSnapshot);
    return 0;
}

Далее открываем процесс
 
Код:
HANDLE hProcess = OpenProcessPROCESS_ALL_ACCESS, FALSE, dwProcessId);

И потом маленький штрих
 
Код:
TerminateProcess(hProcess,ExitCode);
602
07 февраля 2007 года
KPI Student
265 / / 16.12.2006
Другой вопрос, как перевести это на асму... =)
261
08 февраля 2007 года
ahilles
1.5K / / 03.11.2005
ну если пишешь проги на асме, то ты хоть немного шаришь в асме, следовательно ты должен сам перевести всё это на асм
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог