
ВОт начал было ASM мотреть и вот по
----------
|int 13h WINDOWS XP недает даже читать диск
----------
говорит что приложение использует прямой доступ
как сделать так чтабы WINDOWS не прерывал
работу программы ВОТ :-[
Работай с под голой ДОС, либо обращайся напрямую к контроллеру...
;D Гы ГЫ я гадасть делаю мне прямо из под WINOW
и надо то ВОТ
----
что бы пользователь не подозревал
Тогда напрямую к контроллеру... :D
Нашол пару прерываний DOS УРА int 26h запсь
из доса выкидывает но пишет на дискету в 0
дорогу инфу от чего она читаетсь
но
места свободнога на ней 0
занятого 0
записать ничего нельзя
и нелечится WINDOWS
--------
интересно а с винтом ето пройдет???
--------
Гм пробовать на св не буду :P

ГМ вот примерно что получилось
mov ax,0
mov dx,0
mov cx,5
mov es,[ds:bx] ; вот ето что значит???? пока не прочел
int 26h
работает корректно пака дискета норамльная ;D
Цитата

ГМ вот примерно что получилось
mov ax,0
mov dx,0
mov cx,5
mov es,[ds:bx] ; вот ето что значит???? пока не прочел
int 26h
работает корректно пака дискета норамльная ;D
AX - номер логического диска (0-A, 1-B)..
DX - стартовый номер логического сектора
CX - количество секторов для записи
DS:BX - буфер с секторами, полными вирусов и спама ;) (для дос выше 4.х это может быть адрес управляющего блока).
а [DS:BX] - это хрень, компилятор проигнорирует DS: и это будет выглядеть следующим образом:
mov es,[bx] что эквивалентно mov es,ds:[bx], а зачем инициализировать ES, я не знаю, т.к. - это не нужно. Нужно инициализировать DS:BX как адрес твоего буфера с секторами для записи... :o
А в данном примере ты гадишь загрузочную запись + 4 сектора всяким мусором, расположенным по адресу DS:[BX] ;D
;D насчет регистров ето понятно
и что загрузочную понятно
у книге написанно
------
про буффер неочень то
в книшге нету инфы или не увидел
---
как в него чего-то положить(буффер)
типа -=BEST HACKER=-
строки
var S:String[20];
Begin
S:='-=BEST HACKER=-';
asm
lea bx,S+1 {+1 потому что 1 байт - размер строки}
{теперь DS:BX - содержит строку S + разное говно
после нее}
end;
End.
А вообще, после формирования динамических данных, работай со строковыми регистрами
;D YES УРРРРРА заработало
помотрел вредакторе диска угу есть строчечка
Попробовал бы с загрузочной дискеты - просмотреть содержимое бут-сектора... в плане деассемблировать и попробовать написать свой бут ;)
;D ДЫК ТУДА МОНО ВИРУСНЫЙ КОД ПОЛОЖИТЬ
;D
правда все поппытки
скопировать БУТ с целой дискеты
и записать на другую
подвинды чегото не удается
портить удается а вот читать чеггто нет
:'(
вот исходник типа дискету лечить
его загрузочную область
читать с хорошей дисукеты
и ззаписать на плохую
но чего то не работает
-------------------------------------
.MODEL SMALL
.STACK 100H
.DATA
;msg db '-=ENTER DISK=-',10,13,'$'
;msg1 db '-=No DISK=-',10,13,'$'
;msg2 db '-=ENTER DISK #2=-',10,13,'$'
paramdisk label word
maxlen dw 6400
dataread dw 6400 dup(?)
.CODE
START:
mov ax,3
int 10h
mov ax,@data
mov ds,ax
;mov dx,offset msg
;mov bx,offset msg2
;mov ah,9
;int 21h
mov ah,1
int 21h
;xor dl,dl
;-------------DISK_READ----------
mov ah,2 ;function read
mov al,1 ;sectors col-vo
mov cx,1 ;sector/cylindir
mov dl,0 ;NUMBER DISK a:
mov dh,0 ;number head
mov es,paramdisk
mov bx,paramdisk
int 13h
mov ax,0000
;jb a yes disck flag CF=0 --->to label <a:> no disk flag CF=1
; mov dx,offset msg2
; mov ah,9
; int 21h
mov ah,1
int 21h
;--------------DISK WRITE----------------------------
mov ah,3
mov al,1
mov cx,1
mov dl,0
mov dh,0
mov es,paramdisk
mov bx,[offset paramdisk]
int 13h
; mov ax,0
; mov dx,0
; mov cx,2
; mov bx,offset paramdisk
; mov es,[bx]
; int 26h
; mov ah,3
; mov al,2
; mov ch,0
; mov cl,0
; mov dh,0
; mov dl,0
; mov es:bx,[paramdisk]
; mov ds,es:[bx]
; int 13h
;-----------------
call exit_p
a:
;mov dx,offset msg1
;mov ah,9
;int 21h
mov ah,1
int 21h
;----EXIT------
call exit_p
exit_p proc near
mov ah,4ch ;|
mov al,0 ;| -EXIT to DOS;
int 21h ;|/
endp exit_p
end start
Попробуй вот этот: ;)
Только откомпиль в com-формате :P
а для этого в том редакторе нужно выставить параметры в опции Compiler...
И зачем ты делаешь - это, обращаясь к BIOS, ДОС делает - это точно также (в смысле обращаясь к биос), но предоставляет более удобную систему адресации сектора...

.8086
.MODEL TINY
.CODE
ORG 100h
START:
mov ax,3 ; Чистим экран
int 10h
lea dx,Msg ; Мессага о вставке первой дискеты
mov ah,9
int 21h
mov ah,0 ;
int 16h ; Ждем клавишу
mov al,0 ; Номер диска (A:)
mov cx,1 ; Читаем 1 сектор
xor dx,dx ; Стартовый сектор (boot)
lea bx,Buf ; DS:BX - буфер для чтения
int 25h ; читаем
jc @ErMes ; при ошибке - выдаем мессагу
lea dx,Msg2 ; сообщение о вставке второй дискеты
mov ah,9
int 21h
mov ah,0
int 16h ; ждем клавишу
mov al,0 ; Номер диска (A:)
mov cx,1 ; Пишем 1 сектор
xor dx,dx ; Номер стартового сектора
lea bx,Buf ; DS:BX - буфер
int 26h ; Пишем
jc @ErMes ; не выходит - мессага
jmp @Exit
@ErMes: lea dx,Msg1
mov ah,9
int 21h
@Exit : mov ax,4C00h
int 21h
Msg db 'Enter disk, then press key...',10,13,'$'
Msg1 db 'IO Error...',10,13,'$'
Msg2 db 'Enter disk #2 then press key...',10,13,'$'
Buf db 512 dup (1)
End start

чегоето нет чегто читает чегото пишет на дискету
а еффекта нет всравно загр сектор содержит строку
которую писал туда -портильщиком=
решил короче создать портильщик чтоб
он туда писал загрузинфу прямо в кодах
перепещу HEX коды из редактора вручную
поставлю место строки и попробую так
---
чегото не прав делаем ???
:P ВИНДЫ ГОВОРЯТ
фишка в том что пока дискета хорошая
он портит а когда плохая он уже даже портить не
может винды нендают говорят что дискета нестандартная и Брррр :P :-[ :'(
{Эххх - попробуй вот это :o}
Uses
Crt;
Var
Buf:array[1..512] of Char;
i:Integer;
Name:String;
Begin
ClrScr;
Name:='boot!sec.bin'#0;
WriteLn('Вставьте дискету и нажмите any key...');
asm
mov ah,0
int 16h
mov al,0 {Номер логического диска}
mov cx,1 {Количество секторов для чтения}
mov dx,0 {Номер стартового сектора}
lea bx,Buf {Смещение к нашему буферу}
int 25h {читаем}
end;
WriteLn('Прочитали...смотрим содержимое:');
{Выводим, пропуская перевод строки и возврат каретки, дабы не уехало...}
For i:=1 to 512 do If (Buf[i]<>#10) or (Buf[i]<>#13) then Write(Buf[i]);
asm
{Сохранить, прочитанный сектор на диск под именем Name}
mov ax,3D02h {Открыть файл}
lea dx,Name {Адрес имени}
inc dx {Пропускаем байт размера стринга}
int 21h
jnc @AlrExst {Уже есть}
mov ah,3Ch {Если нет - создаем}
mov cx,20h {Атрибут - архивный}
int 21h {Обращаемся к ДОС}
@AlrExst:mov bx,ax {Дескриптор}
mov ah,40h {Запись}
mov cx,512 {Кол-во байт для записи}
lea dx,Buf {Буфер с прочитанным содержимым нулевого сектора}
int 21h {пишем}
mov ah,3Eh {Закрыть файл}
int 21h
end;
WriteLn('Вставьте следующую дискету then press any key...');
{Можешь оформить в виде отдельных процедур}
{А заодно просмотреть содержимое бут-сектора на ЖД - файл boot!sec.bin}
asm
mov ah,0
int 16h
mov ax,3D02h {Открыть файл с содержимым бут-сектора}
lea dx,Name {Адрес имени}
inc dx {Пропускаем байт размера стринга}
int 21h
mov bx,ax {Сохр. дескриптор}
mov ah,3Fh {Читать из файла}
mov cx,512 {512 байт читать}
lea dx,Buf {Буфер для чтения}
int 21h {читаем}
mov ah,3Eh {Закрыть файл}
int 21h
mov al,0 {Номер логического диска}
mov cx,1 {Количество записываемых секторов}
mov dx,0 {Номер стартового сектора}
lea bx,Buf {Буфер}
int 26h {пишешь}
end;
End.
Должно блин работать, на все, эти самые - 100% ;)
:D да блин вот паока дискета целая то программа работает т.е. портит записывает, но
когда испортилась и пытаешся записать то винд выдает сообщение от том что попытка записи на диск несовместимого формата блин
----
ВОТ НЮ ИЛАДНО ИЗ ПОД DOS работет
ААА!!! Должно работать из-под винды >:(
Тестировал на XP, 98 SE, MS-DOS 6.22 и 95OSR2, блин
:D интерактивную среду написал ужо
книга abel
помогает
из под виндовс работает только до определ момента
портить портит а когда испортит и происходит попытка обращения к нему то винды выдвают
сообщение что произшол доступ к нестандартной
форматированной дискете и выкидывает
ВОООТ !!!!!
а так все работает
Попробую переписать, чтобы обращалась к контроллеру НГМД... :P
:D ето через порты или прерывания ??? :
Что-то такая хрень получается. Типа чижика-пыжика...в смысле звука, издаваемого этим самым контроллером НГМД. А еще подумай насчет граф. движка...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.