Автор: Unknown BIOS (не проверено) , 2 июня 2007
Предлагаю обсудить тему ...
Есть желающие поучаствовать ?

P.S. На затравку:

Формат блока 1B (Single Link Arch BIOS)

[list]
[*] Offset Size Type Comment
[*] 0 2 word 'Размер таблицы сегментов'
[/list:u]

To be continued ... May be ;]
Содержимое данного поля является приватным и не предназначено для показа.

BBCode

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

apple_rom

18 лет 8 месяцев назад

А что интересует-то? Вроде, формат достаточно очевиден.

awoland

18 лет 8 месяцев назад

Спасибо за интерес к поднятому вопросу .

Интересует формат заголовка и входящих в него структур: таблицы сегментов и релокейшенов, смещения и т. п.

Насколько я понял, формат элемента таблицы сегментов
выглядит как , где
(24 бита) представлен в виде - младший байт старшего слова , - младшее слово;
- C string (null terminated).
Т.е. элемент таблицы сегментов вида
02 4С 00 'INTERFACE_CSEG' 00
следует читать как
начало сегмента 'INTERFACE_CSEG' по смещению 0002004С
от начала блока (файла) ?

Нужно блок дизасемблировать корректно .

Если есть информация, прошу поделиться ...

apple_rom

18 лет 8 месяцев назад

[code:1]INTERFACE:00A1 Store_m1b_Segs proc near ; CODE XREF: RAM_MAP+1Ep
INTERFACE:00A1 pushad
INTERFACE:00A3 push es
INTERFACE:00A4 push ds
INTERFACE:00A5 mov bp, sp
INTERFACE:00A7 mov ax, ds
INTERFACE:00A9 movzx eax, ax
INTERFACE:00AD shl eax, 4
INTERFACE:00B1 add esi, eax
INTERFACE:00B4 push 0
INTERFACE:00B6 pop ds
INTERFACE:00B7 movzx ecx, word ptr [esi+2] ; LEN_m1b_header
INTERFACE:00BD mov edx, ecx
INTERFACE:00C0 sub sp, cx
INTERFACE:00C2 mov bx, sp
INTERFACE:00C4 push ss
INTERFACE:00C5 pop es
INTERFACE:00C6 movzx edi, sp
INTERFACE:00CA push esi
INTERFACE:00CC cld
INTERFACE:00CD rep movs byte ptr es:[edi], byte ptr [esi] ; Store m1b_header in stack
INTERFACE:00D0 pop esi
INTERFACE:00D2 push ds
INTERFACE:00D3 pop es
INTERFACE:00D4 movzx ecx, word ptr ss:[bx+0] ; Количество сегментов
INTERFACE:00D9 add esi, edx ; ESI =
INTERFACE:00DC
INTERFACE:00DC
INTERFACE:00DC
INTERFACE:00DC loc_135FC: ; CODE XREF: Store_m1b_Segs+8Dj
INTERFACE:00DC add bx, 4
INTERFACE:00DF push ecx
INTERFACE:00E1 mov edi, ss:[bx+0]
INTERFACE:00E5 cmp edi, 0E0000h
INTERFACE:00EC jb short loc_1361C
INTERFACE:00EE cmp edi, cs:dword_13679
INTERFACE:00F4 jnb short loc_1361C
INTERFACE:00F6 mov cs:dword_13679, edi
INTERFACE:00FC
INTERFACE:00FC loc_1361C: ; CODE XREF: Store_m1b_Segs+4Bj
INTERFACE:00FC ; Store_m1b_Segs+53j
INTERFACE:00FC add bx, 4
INTERFACE:00FF mov ecx, ss:[bx+0]
INTERFACE:0103 test ecx, 80000000h
INTERFACE:010A jz short skip
INTERFACE:010C and ecx, 7FFFFFFFh
INTERFACE:0113 mov edx, ecx
INTERFACE:0116 shr ecx, 2
INTERFACE:011A jz short loc_13640
INTERFACE:011C rep movs dword ptr es:[edi], dword ptr [esi] ; move dd
INTERFACE:0120
INTERFACE:0120 loc_13640: ; CODE XREF: Store_m1b_Segs+79j
INTERFACE:0120 mov ecx, edx
INTERFACE:0123 and ecx, 3
INTERFACE:0127 jz short skip
INTERFACE:0129 rep movs byte ptr es:[edi], byte ptr [esi] ; move last db
INTERFACE:012C
INTERFACE:012C skip: ; CODE XREF: Store_m1b_Segs+69j
INTERFACE:012C ; Store_m1b_Segs+86j
INTERFACE:012C pop ecx
INTERFACE:012E loop loc_135FC
[/code:1]

awoland

18 лет 8 месяцев назад

Спасибо ещё раз ...
А формат самого m1b_header известен ?
Меня интересует именно это. Всё, что расположено до смещения 0400
(начало первого сегмента RUN_CSEG).
Хочу скрипт для ИДы написать.

Santa

18 лет 8 месяцев назад

Ого, за 0400h строк скрипт - ...........

awoland

18 лет 8 месяцев назад

Ого, за 0400h строк скрипт - ...........


А в чём здесь "ого" ? Есть скрипт ami.idc. Предназначен для дизасcемблирования "снятого" образа биос. Мне же нужен скрипт для дизасеблирования блока, распакованого из *.rom. Блок имеет заголовок, описывающий его структуру, сегменты, смещения и т.п. Описание структур этого заголовка мне и нужны. По-моему всё понятно.
Первые 2 байта - кол-во блоков информации.
Вторые 2 байта - размер заголовка.
Далее(в моём случае) (46*8) идут адреса сегментов с размерами, по 4 байта на адрес и размер.
С 198h начинаются блоки (пока не понял какие) вида POST2_CSEG...
seg000:0198 db 50h ; P seg000:0199 db 4Fh ; O seg000:019A db 53h ; S seg000:019B db 54h ; T seg000:019C db 32h ; 2 seg000:019D db 5Fh ; _ seg000:019E db 43h ; C seg000:019F db 53h ; S seg000:01A0 db 45h ; E seg000:01A1 db 47h ; G seg000:01A2 db 0 seg000:01A3 db 1 seg000:01A4 db 0Ch seg000:01A5 db 0

Информация от сюда http://sites.google.com/site/pinczakko/pinczakko-s-guide-to-ami-bios-reverse-engineering-1
раздел 4.5. POST (Power-On Self-Test) Preparation

XVilka

15 лет 9 месяцев назад

А где этот скрипт найти? ami.idc, в сети вроде не встречал...

Киньте ссылочку :-)

sush (не проверено)

15 лет 8 месяцев назад

скрипт раскладки SLAB-а по первому мегабайту?
у вас с этим трудности??

ami.idc не встречал (да и не искал никогда)
у меня он называется start_slab.idc вроде.... или slab_start.idc..

XVilka

15 лет 8 месяцев назад

да нет трудностей нет - я ж не знаю что в скрпите есть, поэтому и не знаю что он делает :)