Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2009, 15:06   #1
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию BIOS

Такое ощущение,что человек весьма туманно представляет о программировании на аппаратном уровне..получил от этого человека задание дизассемблировать функцию прерывания(BIOS). Подскажите ребята, такое ваще возможно??Если да,то как это сделать(примерно хотя бы),направьте на путь истины!)
smileman вне форума Ответить с цитированием
Старый 16.02.2009, 15:12   #2
DEADHUNT
Пользователь
 
Регистрация: 23.10.2008
Сообщений: 48
По умолчанию

берёшь адрес вектора прерывания из таблицы её адрес 0x0000:0000 в Real mode, ну и копируешь код из памяти и дизассеблируешь.
DEADHUNT вне форума Ответить с цитированием
Старый 16.02.2009, 15:19   #3
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

не понял.. допустим, получил адрес вектора, а как получить код??

Последний раз редактировалось smileman; 16.02.2009 в 15:28.
smileman вне форума Ответить с цитированием
Старый 16.02.2009, 16:04   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну этот адрес на начало кода, а заканчивается код инструкцией RETN
Вот и копируй начиная с этого адреса пока опкод RETN'а не попадется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.02.2009, 16:13   #5
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

Весьма туманно проявляется образ кода в моем моске...я должен BIN получить в итоге?
smileman вне форума Ответить с цитированием
Старый 16.02.2009, 16:29   #6
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

.WHILE ecx<vAddr
mov al,byte ptr[vAddr+ecx]
.BREAK .IF al=IRET ;оппкода не знаю
mov byte ptr[szBuff+ecx],al
.ENDW
Это так - просто интерпретация.

Судя по всем программу вам запускать придется из реального режима, потому придется еще функцию записи тоже приделать, но я думаю это ведь вам не сложно будет?)

А то что вы получите это и вправду бинарник, дизассемблировать вы его потом сможете любым дизассмеблером, например IDA.

PS: А как альтернатива - дизассемблировать БИОС и искать там эту функцию.
"Тяжело в учении, легко в бою" - А.В. Суворов

Последний раз редактировалось Ivan_32; 16.02.2009 в 16:32.
Ivan_32 вне форума Ответить с цитированием
Старый 16.02.2009, 16:49   #7
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
потому придется еще функцию записи тоже приделать, но я думаю это ведь вам не сложно будет?)
как раз это меня и смущает..=)
smileman вне форума Ответить с цитированием
Старый 16.02.2009, 17:04   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
потому придется еще функцию записи тоже приделать
Это еще зачем?
Тем паче что винда врядли позволит писать куда попадя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.02.2009, 17:07   #9
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

Stilet
Цитата:
Судя по всем программу вам запускать придется из реального режима
Винда походу не причем..
smileman вне форума Ответить с цитированием
Старый 21.05.2009, 22:17   #10
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

собственно,реализовал программу,однако программа работает как-то не так,или я с адресами запарился..файл создается,однако размер его 1 байт,в чем же ошибка,подскажите
Код:
.model small
.stack 100h

.data

msg_priv     db 'Lets get it started :D $'
gbye     db 'Co3gaeM fail gJI9 xpaHeHu9 HALLIuX onkogoB-npou,egypbI npepbIBAHu9 13h$'
str1     db  'create fail создаем файл с именем opcode$'
str2	 db  'A:\opcode2',0
er_str1  db  'error of create fail ошибка создания файла, попробуйте еще раз$'
er_str2  db  'error of record fail ошибка записи, попробуйте еще раз$'
er_str3  db  'error of buf record ошибка- не все байты буфера записаны$'
end_msg  db  'The end of programm- Конец работы программы- работа выполнена успешно$'
HANDLE   dw  0
buf      dw  31744  dup (?)

.code
begin:

mov ax,@data
mov ds,ax


lea dx,offset msg_priv
;lea dx,offset mymsg

mov ah,09h
int 21h
;CALL NEWSTR
mov ah,08h
int 21h

MOV SI,0

mov ah,35h ; получение адреса IRQ 6
mov al,38h   ; в es:bx
int 21h
my_loop:

mov ax,word ptr es:[bx] 
mov buf[si],ax
inc word ptr es:[bx]
inc si

cmp buf[si],0cfh ;заносим опкоды в буффер,пока не  reti
je m0
jmp my_loop

m0:
lea dx,offset gbye
mov ah,09h
int 21h
CALL NEWSTR
     
MOV ax,si
mov bx,2
mul bx

mov bx,ax
mov dx,ax
push dx
push bx
push ax
;**** создаем файл
m1:
mov dx,offset str1
mov ah,09h
int 21h
CALL NEWSTR
mov ah,3ch
pop cx

lea dx,str2

int 21h
jc error
m2:
mov handle,ax
mov ah,40h
mov bx,handle
pop cx

lea dx,buf
int 21h
jc error2

m3:
pop dx
cmp ax,dx 
jne error3
jmp _end
error:  
mov dx,offset er_str1
mov ah,09h 
int 21h
CALL NEWSTR
;jmp m1
jmp _end

error2:
mov dx,offset er_str2
mov ah,09h
int 21h
CALL NEWSTR
;jmp m2
JMP _END
error3:
mov dx,offset er_str3
mov ah,09h
int 21h
CALL NEWSTR
;jmp m3
_end:
mov dx,offset end_msg
mov ah,09h
int 21h
;CALL NEWSTR

mov ah,4ch
int 21h

  NEWSTR proc
   mov ah,02h
   mov dl,13
   int 21h
   mov dl,10
   int 21h 
   ret
  NEWSTR endp

end begin

Последний раз редактировалось smileman; 21.05.2009 в 22:20.
smileman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как к BIOS обращаться. Нужно чтение/запись BIOS. Dethon_ASM_Scarel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 26.10.2011 11:40
BIOS smileman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 16.07.2008 14:54
Запись в BIOS Zer0 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.12.2007 13:35
Bios vitalik007 Общие вопросы Delphi 4 20.08.2007 11:05