Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Декомпиляция библиотек для ADAM-5510

 Ответить Ответить Страница  123>
Автор
Сообщение
tonyk Смотреть выпадающим
Новичок
Новичок


Присоединился: 21 Август 2010
Online Status: Offline
Публикации: 27
Свойства публикации Свойства публикации   Ответить, цитируя автора - tonyk Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Декомпиляция библиотек для ADAM-5510
    Опубликовано: 04 Ноябрь 2010 17:16
Приветствую всех, читающих мой вопрос!

Advantech поставляет со своими ADAM-5510 и ADAM-450х библиотеки функций для работы с этими девайсами. Размер пользовательских программ после линковки с этими библиотеками удручает. Кто работал с этими контроллерами, тот понимает последствия. Возникло желание "выцарапать" код каждой функции из библиотеки.
Исследование показало, что в одной *.lib лежит один(!) *.obj. Вытаскиваю этот obj из lib, пытаюсь его преобразовать в asm. Перепробовал кучу конвертеров а-ля obj2asm. Не могу получить верный код: одна утилита выдаёт в листинге нераспознанные инструкции С8 и С9 (enter и leave), другая пытается строить из данных код, третья...
Пробовал отладчики. Скомпилировал программу с опцией включения отладочной информации, но все отладчики по умолчанию не пытаются её использовать. Попытка по быстрому вразумить их у меня провалилась.
Может кто из знатоков MS-DOS подскажет инструментик для решения моей задачки?
Наверх
kuzulis Смотреть выпадающим
Участник
Участник


Присоединился: 04 Декабрь 2008
Категория: Russian Federation
Online Status: Offline
Публикации: 81
Свойства публикации Свойства публикации   Ответить, цитируя автора - kuzulis Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 05 Ноябрь 2010 11:55
Ох, я тоже пытался также действовать, думал что всё получится, но неполучилось. :)
Как вариант, можно попытаться взять исходники у ПРОСОФТА, т.к. они (или не они) писали такую штуку как UltraLogic, и типо там размер (говорят, сам не пробовал) гораздо меньше выходит.

Я тут бегло набросал библиотеку (еще не закончил) с набором ф-ций для работы с последовательным портом (на Си) и у меня её размер получился ~5КБ (против ~40КБ адвантеха)..  Вот теперь после этого и думай, какой говнокод они туда себе напихали...

Если у вас что, нибудь получится (хоть что то) или есть какие-то исходники, спецификации на адресное пространство и т.п. то сообщите пожалуйста...

Кстати, предлагаю всем заинтересованным объединить усилия и попробовать создать Open Source аналог адвантеховских библиотек.
Наверх
tonyk Смотреть выпадающим
Новичок
Новичок


Присоединился: 21 Август 2010
Online Status: Offline
Публикации: 27
Свойства публикации Свойства публикации   Ответить, цитируя автора - tonyk Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 07 Ноябрь 2010 11:36
Привет, kazulis!

Причиной появления "говнокода" является, на мой взгляд, недостаточно продуманная декомпозиция библиотек. Взяли функции, имеющие отношения к последовательному порту, да запихали их в одну библиотеку. Если бы сначала разбили на модули, например, обработчик прерывания, принять/передать байт и так далее, а потом модули компоновали в библиотеку, то линковщик не цеплял бы лишнего. А так получается, что для передачи одного байта цепляется 40К ненужного кода, а из него идёт вызов единственной(!) функции из другой библиотеки, и пошло-поехало!

Кстати, сейчас изучаю АДАМ-450х. "Железо" у 4501 и 5510, с очевидными оговорками, одинаковое, как и библиотеки, а вот описания несколько разнятся. Некоторые нюники 5510, до которых я дошёл сам, для 4501 прописаны явно. Имейте это в виду, вдруг пригодится.

UltraLogic (УЛ) писал не "Прософт", какая-то немецкая фирма, название не помню. "Прософт" эксклюзивный дистрибьютор УЛ. Качнул УЛ, поковыряюсь, отчитаюсь.

Насчёт использования коллективного разума идея хорошая. Давайте обмениваться результатами, а то каждый тратит время на повторения пути другого, а мог бы двигаться дальше. Главное, чтобы выложенные для общего пользования результаты были документированы, и с ними мог разобраться страждущий.
В этой связи вопрос: кто-нибудь может внятно изложить архитектуру Модбас-сервера и проиллюстрировать примерами кода для чтения входных регистров, чтения/записи регистров состояния, чтения/записи состояния катушек реле? Имеется в виду тот набор функций, что идёт от Адвантека.

Если будет интерес к вопросу о программировании АДАМов, то могу выложить свои наработки.
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Ноябрь 2010 06:11
@@Исследование показало, что в одной *.lib лежит один(!) *.obj.@@
 
Попробуй
C:\Tasm\BIN\Tlib.exe 80x86.lib -+ADAM5017.obj, ADAM5510.lst
 
и в ADAM5510.lst получиш список!!!
 
UltraLogic писали наши и код у них сделан не ногами-, весь прикомпилированный код для передачи данных по протоколу PLCNet занимает 2.4 кБ. (проверяется просто - в UltraLogic компилиш пустой проект с передачей данных и без неё)
 
В библиотеке все функции распределены по своим задачам и вы можете их использовать напрямую, а есл хочеш исходный код, то изучай asm и используй IDA pro!
 
 
Vel
Наверх
kuzulis Смотреть выпадающим
Участник
Участник


Присоединился: 04 Декабрь 2008
Категория: Russian Federation
Online Status: Offline
Публикации: 81
Свойства публикации Свойства публикации   Ответить, цитируя автора - kuzulis Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Ноябрь 2010 11:54
Кстати, о птичках: а при помощи CoDeSys возможно программирование ADAM-ов или как? Мож кто в курсе?
Наверх
KozlovKS Смотреть выпадающим
Prosoft.ru
Prosoft.ru


Присоединился: 21 Июнь 2003
Online Status: Offline
Публикации: 432
Свойства публикации Свойства публикации   Ответить, цитируя автора - KozlovKS Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Ноябрь 2010 14:13
Первоначально опубликовано kuzulis

Кстати, о птичках: а при помощи CoDeSys возможно программирование ADAM-ов или как? Мож кто в курсе?

Это называется ADAM-5510KW
Наверх
Yaroslav Смотреть выпадающим
Новичок
Новичок


Присоединился: 15 Июнь 2004
Online Status: Offline
Публикации: 27
Свойства публикации Свойства публикации   Ответить, цитируя автора - Yaroslav Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Ноябрь 2010 15:20
Первоначально опубликовано KozlovKS


Первоначально опубликовано kuzulis

Кстати, о птичках: а при помощи CoDeSys возможно программирование ADAM-ов или как? Мож кто в курсе?

Это называется ADAM-5510<font ="Apple-style-span" color="#FF0000">KW


Да, но только софтина другая KW-Multiprog а не CoDeSys.
Наверх
tonyk Смотреть выпадающим
Новичок
Новичок


Присоединился: 21 Август 2010
Online Status: Offline
Публикации: 27
Свойства публикации Свойства публикации   Ответить, цитируя автора - tonyk Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Ноябрь 2010 21:31
Про список и ежу понятно, но не tlink, который тащит в ехе код не использованных функций.

Ещё не успел добраться до UltraLogic, поэтому сори за такой вопрос: а насколько хорошо документированы внутренние функции УЛ, которые Вы предлагаете использовать? Нужно ведь (хотя бы!) понимать не только ЧТО делает та или иная функция, но и то КАК она это делает, а также знать архитектуру всей библиотеки УЛ. Камни в огород Адвантека летят не зато, что у них чего-то нет, а за то, что не описано КАК реализован тот или иной механизм. А то что получается: пока читаешь доку, вроде всё понятно, но как только пытаешься отобразить её на свою задачу, то возникает куча вопросов, на которые указаний на ответы в доке нет. И приходится решать дилемму: методом проб и ошибок добиваться работы того, что даёт Адвантек, то ли писать самому.
Наверх
tonyk Смотреть выпадающим
Новичок
Новичок


Присоединился: 21 Август 2010
Online Status: Offline
Публикации: 27
Свойства публикации Свойства публикации   Ответить, цитируя автора - tonyk Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Ноябрь 2010 21:47
...а есл хочеш исходный код, то изучай asm и используй IDA pro!...

То есть Вы предлагаете взлом? Я разработчик, а не взломщик. Asm мой второй язык, но с годами обрыдло расковыривать чужой код. Лет десять назад так бы и поступил, но сейчас мне нужно быстро, качественно и надёжно сделать свою работу, да и годы общения с Линукс отучили от такого подхода. Дело не в моей квалификации, а в подходе.

"Деньги не пахнут!" заявил один из римских императоров, решивший брать с граждан деньги за пользование общественными туалетами. Расковырять в IDA чужой код, прикрутить его к своей программе...  Ну не профессионально это!
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 09 Ноябрь 2010 06:29

@@ Возникло желание "выцарапать" код каждой функции из библиотеки.
Исследование показало, что в одной *.lib лежит один(!) *.obj. Вытаскиваю этот obj из lib, пытаюсь его преобразовать в asm. Перепробовал кучу конвертеров а-ля obj2asm. @@

После этого не понимаю текст - "То есть Вы предлагаете взлом?"
 
"мне нужно быстро, качественно и надёжно сделать свою работу" - это возможно, если:
Вы использовали данный код длительное время и "нашли" все или почти все баги в коде.(это 'быстро')
Вы имеете исходный код и можете свою программу подстраивать под используемый код (значит Вы разработчик этого кода!)
 
Иначе...
 
Обратная разработка (обратный инжиниринг, реверс-инжиниринг; англ. reverse engineering) — исследование некоторого устройства или программы, а также документации на него с целью понять принцип его работы и, чаще всего, воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового.
Применяется обычно в том случае, если создатель оригинального объекта не предоставил информации о структуре и способе создания (производства) объекта. Использование обратной разработки может противоречить закону об авторском праве и патентному законодательству.
 
А я только показываю путь!!!
Vel
Наверх
 Ответить Ответить Страница  123>

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz