Вот, если кому интересно, первая статья:
http://rapidshare.de/files/26153243/IDA_Pro.zip.html Вот результат работы IDA, после того, как мы встали на адрес: 0x7FFFFFFE и нажали клавишу “C”.
ROM:7FFFFFE7 ; ---------------------------------------------------------------------------
ROM:7FFFFFE7
ROM:7FFFFFE7 loc_7FFFFFE7: ; CODE XREF: ROM:7FFFFFFE j
ROM:7FFFFFE7 ldc unk_7FFF0158
ROM:7FFFFFEF gcall
ROM:7FFFFFF0 ajw 8
ROM:7FFFFFF1 stl 7
ROM:7FFFFFF2 outword
ROM:7FFFFFF3 ldl 0Fh
ROM:7FFFFFF4 stl 6
ROM:7FFFFFF6 outword
ROM:7FFFFFF7 ldl 0Fh
ROM:7FFFFFF8 eqc 0
ROM:7FFFFFF9 j loc_7FFFFFFB
ROM:7FFFFFF9 ; ---------------------------------------------------------------------------
ROM:7FFFFFFA db 0
ROM:7FFFFFFB ; ---------------------------------------------------------------------------
ROM:7FFFFFFB
ROM:7FFFFFFB loc_7FFFFFFB: ; CODE XREF: ROM:7FFFFFF9 j
ROM:7FFFFFFB adc 0
ROM:7FFFFFFB ; ---------------------------------------------------------------------------
ROM:7FFFFFFC db 20h
ROM:7FFFFFFD db 20h
ROM:7FFFFFFE ; ---------------------------------------------------------------------------
ROM:7FFFFFFE j loc_7FFFFFE7
ROM:7FFFFFFE
ROM:7FFFFFFE end ;
Переключимся в IDA на вкладку “Hex View-A” , здесь мы увидим, будем смотреть справа на лево, следующие байты:80 00 01 C0; 7F FF D6 20; 7F FF D7 B8.
ROM:7FFFFFF0 B8 D7 FF 7F 20 D6 FF 7F C0 01 00 80 20 20 61 07
80 00 01 C0 - initial workspace pointer
7F FF D6 20 – SectionTable
7F FF D7 B8 - bootdata_block
Переключаемся обратно на вкладку “IDA View-A” и, как, я уже писал, внесем правку вручную. Ставим курсор на адрес:7FFFFFF0 делаем клик правой кнопкой мыши и щелкаем по “Undefine” Выскочит окошко с вопросом “Do you want to undefine the current instruction(s)?”. Жмем “Yes”. Вы должны получить нижеследующее:
ROM:7FFFFFE7 ; ---------------------------------------------------------------------------
ROM:7FFFFFE7
ROM:7FFFFFE7 loc_7FFFFFE7: ; CODE XREF: ROM:7FFFFFFE j
ROM:7FFFFFE7 ldc unk_7FFF0158
ROM:7FFFFFEF gcall
ROM:7FFFFFEF ; ---------------------------------------------------------------------------
ROM:7FFFFFF0 db 0B8h ;
ROM:7FFFFFF1 db 0D7h ; +
ROM:7FFFFFF2 db 0FFh
ROM:7FFFFFF3 db 7Fh ;
ROM:7FFFFFF4 db 20h
ROM:7FFFFFF5 db 0D6h ; г
ROM:7FFFFFF6 db 0FFh
ROM:7FFFFFF7 db 7Fh ;
ROM:7FFFFFF8 db 0C0h ; L
ROM:7FFFFFF9 db 1
ROM:7FFFFFFA db 0
ROM:7FFFFFFB db 80h ; А
ROM:7FFFFFFC db 20h
ROM:7FFFFFFD db 20h
ROM:7FFFFFFE ; ---------------------------------------------------------------------------
ROM:7FFFFFFE j loc_7FFFFFE7
ROM:7FFFFFFE
ROM:7FFFFFFE end ;
Далее устанавливаем курсор на адрес: 7FFFFFF0, делаем клик правой кнопкой мыши и в контекстном меню щелкаем по строке – Double word 7FFFD7B8h. Встаем на адрес: 7FFFFFF4 и делаем все, как выше, затем на адрес: 7FFFFFF8 и все аналогично. Вот полученный результат:
ROM:7FFFFFE7 ; ---------------------------------------------------------------------------
ROM:7FFFFFE7
ROM:7FFFFFE7 BootStart: ; CODE XREF: ROM:ResetVector j
ROM:7FFFFFE7 ldc unk_7FFF0158 ; load constant (romload)
ROM:7FFFFFEF gcall ; general call
ROM:7FFFFFEF ; ---------------------------------------------------------------------------
ROM:7FFFFFF0 dd unk_7FFFD7B8 ; bootdata_block
ROM:7FFFFFF4 dd unk_7FFFD620 ; SectionTable
ROM:7FFFFFF8 dd 800001C0h ; initial workspace pointer
ROM:7FFFFFFC db 20h
ROM:7FFFFFFD db 20h
ROM:7FFFFFFE ; ---------------------------------------------------------------------------
ROM:7FFFFFFE
ROM:7FFFFFFE ResetVector: ; jump
ROM:7FFFFFFE j BootStart
ROM:7FFFFFFE
ROM:7FFFFFFE end ;
Чтобы ввести комментарий вручную. Установите курсор на адрес (строку), где вы хотите что-то записать, кликните правой клавишей мышки и в контекстном меню выберите строку “Enter repeatable comment… ”, или же просто нажмите на клавишу быстрого вызова “;”. В появившемся окне наберите комментарий и жмите “Ok”.
Для переименования адреса(метка, Label). Мы хотим переименовать метку 7FFFFFE7 в BootStart. Для этого встаем на метку, кликнем правой кнопкой, выбираем в контекстном меню “Rename” или же кнопкой быстрого вызова “N”.
Если хотите, то переименуйте адреса:
unk_7FFF0158 в romload
unk_7FFFD7B8 в bootdata_block
unk_7FFFD620 в SectionTable
Продолжение следует…