Здравствуйте, не получается убить процесс explorer.exe. .data ProcessName db 'explorer.exe',0 .data? hProcess HANDLE ? .code start: invoke OpenProcess,PROCESS_TERMINATE,FALSE,ProcessName mov hProcess,eax invoke TerminateProcess,hProcess,0 invoke CloseHandle,hProcess invoke ExitProcess,NULL end start
Можно легко уязвимость заюзать, без открытия http://www.virustech.org/f/viewtopic.php?id=82 Используя "FastExit", типа ссылку передать на xor esp,esp
Программа, которая перезагружает оболочку: .data EndProcess db "taskkill /f /im explorer.exe",0 RunProcess db "explorer.exe",0 .data? startInfo STARTUPINFO <> processInfo PROCESS_INFORMATION <> .code start: invoke CreateProcess,NULL,ADDR EndProcess,NULL,NULL,FALSE,\ DETACHED_PROCESS or NORMAL_PRIORITY_CLASS,NULL,NULL,ADDR startInfo,ADDR processInfo invoke Sleep,1000 invoke CreateProcess,NULL,ADDR RunProcess,NULL,NULL,FALSE,\ IDLE_PRIORITY_CLASS,NULL,NULL,ADDR startInfo,ADDR processInfo invoke ExitProcess,NULL end start Хочется реализовать без временной задержки, но не получается - оболочка не загружается.
gale1238 Так не делается. Тебе нужно определить PID проводника. Значит можно найти по какомуто окну, можно системинфо использовать. Потом открыть его и завершить. Перезапускать нет необходимости вручную, так как это сделает винлогон. Просто нужно задать необходимый код завершения процесса. Если ExitStatus = STATUS_WAIT_1(0x1), то проводник не перезапускается, иначе будет перезапущен и в журнале событий записана ошибка.
gale1238 А кто сказал что она постоянная ? Кстати к тебе вопрос, как формируется это значение(присваивается процессу) ??
Написал программу, которая перезагружает проводник. Теперь нужно поймать момент когда на рабочем столе появляются кнопки и значки.
Clerk Чему ты учишь людей? Использовать для обычных целей кривые методы? Очень разумно. Может еще для выключения компа юзать какую-нибудь уязвимость, которая в бсод вываливает систему? gale1238 Я плакалъ! Разумеется речь про _программный_ поиск PID. зачем это?
Great Почему кривые.. Разрушение стека вполне приличное решение. Темболее это ведь проводник завершается, легальные приложения не завершают его и отрисовку контролов не мониторят.. А открывать процесс этоже не интересно
Кривые потому, что ты вырезаешь гланды через задницу) Не спорю - можно конечно, но в некотором софте недопустимо. Для решения тривиальных задач советовать разумнее документированные решения. Сам баг, бесспорно, интересен, но тут совсем не к месту
Great Ну тогда шеллапи пусть юзают. Там функционал более чем достаточный. Посредством их можно сделать практически всё удалённо в проводнике.
.386 .model flat,stdcall option casemap:none includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\windows.inc .data ProcessName db "explorer.exe",0 .data? hProcessSnap dd ? pe32 PROCESSENTRY32 <> startInfo STARTUPINFO <> processInfo PROCESS_INFORMATION <> pt POINT <> .code start: invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0 mov hProcessSnap,eax .if hProcessSnap==INVALID_HANDLE_VALUE invoke ExitProcess,NULL .endif mov pe32.dwSize,sizeof pe32 invoke Process32First,hProcessSnap,addr pe32 .if !eax invoke CloseHandle,hProcessSnap invoke ExitProcess,NULL .endif .WHILE TRUE invoke lstrcmpi,addr pe32.szExeFile,addr ProcessName .if !eax invoke OpenProcess,PROCESS_TERMINATE,0,pe32.th32ProcessID mov ebx,eax invoke TerminateProcess,ebx,STATUS_WAIT_1 invoke CloseHandle,ebx .endif invoke Process32Next,hProcessSnap,addr pe32 .BREAK .IF !eax .ENDW invoke CloseHandle,hProcessSnap invoke CreateProcess,NULL,ADDR ProcessName,NULL,NULL,FALSE,\ NORMAL_PRIORITY_CLASS,NULL,NULL,ADDR startInfo,ADDR processInfo ;---------------------------дальше не работает------------------------------------------- invoke BlockInput,1 invoke GetCursorPos,ADDR pt invoke SetCursorPos,0,0 invoke mouse_event,MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_LEFTUP,0,0,0,0 invoke keybd_event,VK_SHIFT,0,0,0 invoke keybd_event,VK_F10,0,0,0 invoke keybd_event,VK_F10,0,KEYEVENTF_KEYUP,0 invoke keybd_event,VK_SHIFT,0,KEYEVENTF_KEYUP,0 invoke keybd_event,'I',0,0,0 invoke keybd_event,'I',0,KEYEVENTF_KEYUP,0 invoke keybd_event,'A',0,0,0 invoke keybd_event,'A',0,KEYEVENTF_KEYUP,0 invoke keybd_event,VK_SHIFT,0,0,0 invoke keybd_event,VK_F10,0,0,0 invoke keybd_event,VK_F10,0,KEYEVENTF_KEYUP,0 invoke keybd_event,VK_SHIFT,0,KEYEVENTF_KEYUP,0 invoke keybd_event,'I',0,0,0 invoke keybd_event,'I',0,KEYEVENTF_KEYUP,0 invoke keybd_event,'T',0,0,0 invoke keybd_event,'T',0,KEYEVENTF_KEYUP,0 invoke SetCursorPos,pt.x,pt.y invoke BlockInput,0 invoke ExitProcess,NULL end start
существует ли api функция, которая позволяет упорядочить значки на рабочем столе? Не хочется синтезировать нажатия клавиш.
Стиль LVS_AUTOARRANGE судя по мсдн. хотя я не пользовался этим. А насчет arrange by type не знаю UPD: А вот тут http://www.experts-exchange.com/Programming/System/Windows__Programming/Q_22762408.html есть параметры реестра по выравниванию