Производственное оборудование Медицинская техника, а также другое промышленное оборудования. Обсуждение и ремонт. |
06.03.2017, 17:09
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Опознать плату управления на 80186
Размер нормальный, 49152 = 0xC000. C000+14000 = 20000. Начальную область не схоронил!
В конце больше ничего нет, это и есть конец. Завтра считаю еще полностью.
У меня тоже что-то имеется с тех времен... Sourcer еще был.
Но м.б. "новая" ида даже лучше эту прошивку возьмет...
|
|
|
|
07.03.2017, 14:09
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Опознать плату управления на 80186
Sourcer более-менее справляется.
По волнам времени и памяти блин.
Думаю, это должно находится по адресу F400:0000. Т.е. к 14000 добавляем E0000.
Потому что там есть jmp far на этот адрес, F400:0000.
Начало тупое, но похоже на исполняемый код.
Похоже на китайскую инициализацию TFT дисплея.
Никак не могу заставить сорсер ставить не произвольный, а нужный мне сегмент.
Закидываю листинг. Прошивка с FF вначале бессмысленна, не кладу ее.
|
|
|
|
12.03.2017, 04:05
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Опознать плату управления на 80186
Просмотрел прошивку. Кое-где есть сложные места, но совсем не тупик.
Вот, к примеру, работа с флешью, из которой мы узнаем, что
флеш находится в сегменте 8000. Последовательность, правда,
недокументирована в даташите на AM29F010B.
Код:
|
seg000:96C0 sub_FD6C0 proc near
seg000:96C0 pushf
seg000:96C1 push ds
seg000:96C2 push ax
seg000:96C3 mov ax, 8000h
seg000:96C6 mov ds, ax
seg000:96C8 assume ds:nothing
seg000:96C8 mov byte ptr ds:5555h, 0AAh ; 'к'
seg000:96CD mov byte ptr ds:2AAAh, 55h ; 'U'
seg000:96D2 mov byte ptr ds:5555h, 0F0h ; 'Ё'
seg000:96D7 mov al, [bx]
seg000:96D9 pop ax
seg000:96DA pop ds
seg000:96DB assume ds:nothing
seg000:96DB popf
seg000:96DC retn
seg000:96DC sub_FD6C0 endp |
Порты находятся по адресам FFxx и 10x, 20x, 300.
Но непонятен смысл нижеприведенного кода, которым заполнен листинг "чуть менее чем более". Т.е. - зачем помещать 200Ah в ax, а затем выводить только младший байт?
Код:
|
seg000:0009 mov dx, 0FFA2h
seg000:000C mov ax, 200Ah
seg000:000F out dx, al
seg000:0010 mov dx, 0FF80h
seg000:0013 mov ax, 8000h
seg000:0016 out dx, al
seg000:0017 mov dx, 0FF82h
seg000:001A mov ax, 0A00Ah
seg000:001D out dx, al |
|
|
|
|
13.03.2017, 10:43
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Опознать плату управления на 80186
Прикольно, текст сообщений вкраплён в код.
Иду и сорсер это сводит ума.
Но мы то покрепче.
Например:
Код:
|
seg000:0196 call sub_8974 ;см ниже
seg000:0199 aKontrollerPim1 db 'Контроллер ПИМ-1',0Dh,0Ah
seg000:0199 db '(C) 1997-1999 АОЗТ "ИФ-АТИС"',0Dh,0Ah
seg000:0199 db 'Версия от 15/02/01',0
seg000:01DC call sub_CEA ;сюда происходит возврат |
Код:
|
seg000:8974 sub_8974 proc near
seg000:8974 pop bx ;адрес возврата на самом деле адрес текста
seg000:8975 test ds:byte_2052, 4
seg000:897A jz short loc_8998
seg000:897C pushf
seg000:897D cli
seg000:897E mov al, 0Dh ;какие-то махинации с переводом строки
seg000:8980 call sub_88FB
seg000:8983 mov al, 0Ah
seg000:8985 call sub_88FB
seg000:8988
seg000:8988 loc_8988:
seg000:8988 mov al, cs:[bx] ;используем полученный адрес
seg000:898B inc bx
seg000:898C or al, al
seg000:898E jz short loc_8995
seg000:8990 call sub_88FB
seg000:8993 jmp short loc_8988
seg000:8995 loc_8995:
seg000:8995 popf
seg000:8996 jmp bx ;вертаемся назад, но уже за текст |
|
|
|
|
13.03.2017, 12:40
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Опознать плату управления на 80186
Ну вкрапления "больше чем" это макросы, но реализация…
А такие фокусы с сообщениями после call и потом перерасчетом точки возврата из вызова очень похожи на практику ещё из предыдущих систем .
Кстати их целью было и осложнение процесса reverse engineering.
Для ЕС и потом СМ приятель написал интерактивный дизассемблер с эвристикой для таких вставок. Похоже стоит у него поинтересоваться о наличии варианта для ПК, вроде как идея была, но не могу сказать сейчас о состоянии ее реализации за давностью лет…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
13.03.2017, 13:00
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Опознать плату управления на 80186
Сообщение от mike-y-k
|
Ну вкрапления "больше чем" это макросы, но реализация…
|
Что-то не пойму, как это могут быть макросы. Если это макросы инициализации dx и ax, то откуда берется старший байт ax?...
Может это тоже "чтоб немцы не догадались"?
Это важный вопрос, т.к. от ответа зависит является ли начало скачанного кода действительно точкой входа и кодом инициализации платы.
Последний раз редактировалось ampy; 13.03.2017 в 13:15.
|
|
|
|
13.03.2017, 14:21
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Опознать плату управления на 80186
Уже не помню подробности, но результат mov ax, 0A0h после компиляции каким-то из ассемблеров имел именно такой случайный вид. А при наличии макроса программист просто переставал думать о происходящем при ассемблировании. Написал типа my_macro_out 00Ah, 0FFA2h и решил свою задачу.
Ну и вариант "защиты" тоже конечно имеет право на существование , но я бы на него много не поставил.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
14.03.2017, 10:05
|
|
Прописка
Регистрация: 02.03.2010
Сообщений: 139
Сказал спасибо: 12
Сказали Спасибо 49 раз(а) в 26 сообщении(ях)
|
Re: Опознать плату управления на 80186
Про оптимизацию быстродействия:
"Процессоры 8088 и 80188 имеют 8-разрядную шину, и для них не имеет значения, на какую границу выровнены данные, поэтому выравнивание можно не применять или установить на границу байта (1 байт, 8 бит); процессоры 8086, 80186 и 80286 обладают 16-разрядной шиной, и им проще действовать с данными, выровненными на границу слова (2 байта, 16 бит)"
Скорее всего, ключ компилятора установлен.
|
|
|
|
14.03.2017, 11:31
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Опознать плату управления на 80186
6ap6oc,
Не сходится, т.к. лишний байт добавляется и к "четным" и к "нечетным" командам:
Код:
|
38A9:0041 BA FF8E mov dx,0FF8Eh
38A9:0044 B8 0248 mov ax,248h ;0044 - четный
38A9:0047 EE out dx,al
38A9:0048 BA FF90 mov dx,0FF90h
38A9:004B B8 0400 mov ax,400h ;004b - нечетный
38A9:004E EE out dx,al
38A9:004F BA FF92 mov dx,0FF92h
38A9:0052 B8 0448 mov ax,448h |
|
|
|
|
14.03.2017, 12:48
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Опознать плату управления на 80186
6ap6oc, для выравнивания на границу у ассемблера есть такая команда - nop. И о быстродействии пока речи нет совсем. Тут пока нужно с имеющимся кодом разобраться.
Выравнивание на границу кратную 16 (AFAIK) вроде как даёт прирост скорости только на операциях чтения/записи 16 битных регистров для этого процессора (для данных) и на командах перехода. При оптимизации под 16 бит именно такое выравнивание и происходит при ассемблировании.
8088/80188/8086/80186/80286/… от Intel и их функциональные аналоги от других производителей со временем несколько разошлись в аппаратной реализации многих алгоритмов работы. И тенденция пока не изменилась .
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 14.03.2017 в 12:50.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:41.
|
|