Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых) |
eXeL@B —› Основной форум —› вопрос для знатоков IDA PRO |
Посл.ответ | Сообщение |
|
Создано: 15 мая 2008 09:45 · Поправил: at0s · Личное сообщение · #1 Есть образ с ПЗУ, проц 80С188 - это тоже самое что и 80188/80186 1. IDA неправильно расставляет JMP и CALL, например seg000:200D3 jbe short near ptr unk_200D9 ; здесь должно стоять jbe loc_200d9 seg000:200D5 xor ax, ax seg000:200D7 pop bp seg000:200D8 retn seg000:200D9 ; --------------------------------------------------------------------------- seg000:200D9 mov ax, ds:0Eh ; здесь loc_200d9: seg000:200DC les bx, ds:4 seg000:200E0 sub ax, es:[bx] seg000:200E3 add ds:0Ch, ax seg000:200E7 mov al, 0FFh seg000:200E9 pop bp seg000:200EA retn seg000:200EA sub_20082 endp а unk_200D9 просто адрес в памяти, т.е. адрес 200D9 высчитывает правильно, но метку не ставит то же самое с CALL- ами Как заставить эту прогу сделать правилный листинг 2. сегменты: при любом проце (и 8086 и 286) сегменты 32-х битные (200E9 > 0xFFFFh), перебрал все опции - не помогает как заставить его сегментировать на 16 битные сегменты ? |
|
Создано: 15 мая 2008 09:59 · Личное сообщение · #2 |
|
Создано: 15 мая 2008 10:32 · Личное сообщение · #3 |
|
Создано: 15 мая 2008 10:39 · Личное сообщение · #4 спрашивает the loaded binary file can be disassmbled in 2 modes 1. 16 bit mode 1. 32 do you want disasm. as 32 отвечаю нет, не находит точку входа, предлагает самому (фигня) и выдает seg000:0000 ; File Name : C:\dizasm\m27c4001.bin seg000:0000 ; Format : Binary file seg000:0000 ; Base Address: 0000h Range: 0000h - 80000h Loaded length: 80000h seg000:0000 seg000:0000 .8086 seg000:0000 .model flat |
|
Создано: 15 мая 2008 10:58 · Личное сообщение · #5 |
|
Создано: 15 мая 2008 11:49 · Личное сообщение · #6 at0s У тебя образ больше 64 Кб. Значит, либо должны определится(быть определены) сегменты, либо все-таки сегменты(адресация) 32-битные. Судя по 1 посту - 32-битные. Почему ? Надо смотреть начало. Точка входа в бинари задается вручную : выходишь на адрес(в БИОС-е например где-то в конце) и тюкаешь "С" - превратить в код. Далее либо все раскодируется, либо придется искать остальное. Не надейся что ИДА все сама сделает. Даже на экзешниках приходится долго "рихтовать". ПЗУ - все в твоих руках, ИДА только дерево вызовов строит, если ты правильно задал адрес загрузки ПЗУ и адрес входа. В любом другом случае построит "ахинею". Возможно у тебя вообще смесь : есть boot-блок в реал режиме, а все остальное 32-протектед. |
|
Создано: 15 мая 2008 16:04 · Личное сообщение · #7 |
|
Создано: 16 мая 2008 03:59 · Личное сообщение · #8 |
eXeL@B —› Основной форум —› вопрос для знатоков IDA PRO |