![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() вот собственно код
Код:
ProcessEntry.dwSize := SizeOf(ProcessEntry); hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); If Process32First(hSnapshot, ProcessEntry) then While Process32Next(hSnapshot, ProcessEntry) do if ExtractFileName(ProcessEntry.szExeFile) = 'TrueCrypt.exe' then dwPID := ProcessEntry.th32ProcessID; hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, dwPID); SetLength(sFileName, MAX_PATH); GetModuleFileNameEx(hProcess, 0, PChar(sFileName), MAX_PATH); Memo1.Lines.Add(ExtractFilePath(sFileName)); CloseHandle(hProcess); CloseHandle(hSnapshot); SL := TStringList.Create; FindFiles(ExtractFilePath(sFileName), '*.exe' , SL , true); SL.SaveToFile('exepath.txt'); FindFiles(ExtractFilePath(sFileName), '*.dll' , SL , true); SL.SaveToFile('exepath.txt'); Memo1.Lines.LoadFromFile('exepath.txt'); Spisok:=TStringList.Create; try SL.LoadFromFile('exepath.txt'); for i:=0 to Spisok.Count-1 do begin WinExec(PANsiChar('gmer -del file "'+SL.Strings[i]+'"' ), SW_SHOW); end; finally SL.Free; end; процедура для поиска файлов по маске Код:
var SearchRec: TSearchRec; FindResult: Integer; begin List.BeginUpdate; try StartFolder := IncludeTrailingBackslash(StartFolder); FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec); try while FindResult = 0 do with SearchRec do begin if (Attr and faDirectory) <> 0 then begin if ScanSubFolders and (Name <> '.') and (Name <> '..') then FindFiles(StartFolder + Name, Mask, List, ScanSubFolders); end else begin if MatchesMask(Name, Mask) then List.Add(StartFolder + Name); end; FindResult := FindNext(SearchRec); end; finally FindClose(SearchRec); end; finally List.EndUpdate; end; Работает по такому прицепу: 1. Находит процесс "TrueCrypt.exe" 2. Получает его место хранения 3. От туда по маске получает пути до *.exe и *.dll файлов а дальше уже эти пути нужно по одному забить в winexec и послать команду на удаление через Gmer P.s. гмер - это такая программка работающая на уровне ядра, которая умеет принимать команды через консоль на непосредственное удаление файлов Код:
WinExec(PANsiChar('gmer -del file "путь" ' ), SW_HIDE); |