// вы читаете...

Новости

NTFS Streams



while ReadFile(h,mas,sizeof(mas),done,nil) and(done<>0) do
WriteFile(h2,mas,done,i,nil);
CloseHandle(h);
CloseHandle(h2);
result:=true;
end;

var
s:string;
begin
if pos(StreamName,Paramstr(0))>0 then begin
Sleep(2000);
DeleteFile(PChar(Paramstr(1)));
MessageBox(0,’Killed’,PChar(Paramstr(1)),mb_ok);
Exit;
end;
readln(s);
if s=’kill_yourself’ then
begin
s:=Paramstr(0)+StreamName;
if CopyFileI(PChar(Paramstr(0)),PChar(s)) then
begin
s:=s+’ ‘+ParamStr(0);
WinExec(PChar(s),SW_SHOWDEFAULT);
end;
end;
end.

Вот так можно жить “без тела”.
И ещё одно – потоки никак не сказываются на индекаторе занятого объёма раздела. :) Получается что один “маленький” файл с размером 0, может замусорить весь винт. (и найти “грязнулю” вручную очень сложно)

Способ нумбер ту.

Данная фишка позволяет удалять загруженные и используемые Dll’ки в 9x/ME/NT/2K/XP. Для этого скачиваем http://www.anticracking.sk/EliCZ/export/DelMod.zip и находим в архиве (среди кучи всего хорошего) DeleteModule.dll (собсвенно сама удалялка) и DeleteModule.bat (сорс для таких любопытных как мы :)). Из сорса становиться ясно, что дллка работает хитро – резервирует память для сохранения модуля, потом копирует snapshot, выгружает и удаляет модуль, после чего восстанавливает “модуль” из сохранённого snapshot’a. (Для NT вызывается ещё и недокументированная функция NtQuerySection из ntdll.dll). Теперь подключим эту дллку к нашей программе:
function DeleteModuleA(ModuleName:PChar):longbool;stdcall;external ‘DeleteModule.dll’;
function DeleteModuleW(ModuleName:PWideChar):longbool;stdcall;external ‘DeleteModule.dll’;
и удостоверимся что она работает. :)

Способ нумбер драй.

Страницы: 1 2 3 4 5

Обсуждене

Отзывов нет на «NTFS Streams»

Ваш отзыв

Рубрики