Декомпиляция библиотек для ADAM-5510 |
Ответить | Страница 123> |
Автор | ||
Новичок Присоединился: 21 Август 2010 Online Status: Offline Публикации: 27 |
Опубликовано: 04 Ноябрь 2010 17:16 |
|
Приветствую всех, читающих мой вопрос!
Advantech поставляет со своими ADAM-5510 и ADAM-450х библиотеки функций для работы с этими девайсами. Размер пользовательских программ после линковки с этими библиотеками удручает. Кто работал с этими контроллерами, тот понимает последствия. Возникло желание "выцарапать" код каждой функции из библиотеки. Исследование показало, что в одной *.lib лежит один(!) *.obj. Вытаскиваю этот obj из lib, пытаюсь его преобразовать в asm. Перепробовал кучу конвертеров а-ля obj2asm. Не могу получить верный код: одна утилита выдаёт в листинге нераспознанные инструкции С8 и С9 (enter и leave), другая пытается строить из данных код, третья... Пробовал отладчики. Скомпилировал программу с опцией включения отладочной информации, но все отладчики по умолчанию не пытаются её использовать. Попытка по быстрому вразумить их у меня провалилась. Может кто из знатоков MS-DOS подскажет инструментик для решения моей задачки? |
||
Участник Присоединился: 04 Декабрь 2008 Категория: Russian Federation Online Status: Offline Публикации: 81 |
||
Ох, я тоже пытался также действовать, думал что всё получится, но неполучилось. :)
Как вариант, можно попытаться взять исходники у ПРОСОФТА, т.к. они (или не они) писали такую штуку как UltraLogic, и типо там размер (говорят, сам не пробовал) гораздо меньше выходит. Я тут бегло набросал библиотеку (еще не закончил) с набором ф-ций для работы с последовательным портом (на Си) и у меня её размер получился ~5КБ (против ~40КБ адвантеха).. Вот теперь после этого и думай, какой говнокод они туда себе напихали... Если у вас что, нибудь получится (хоть что то) или есть какие-то исходники, спецификации на адресное пространство и т.п. то сообщите пожалуйста... Кстати, предлагаю всем заинтересованным объединить усилия и попробовать создать Open Source аналог адвантеховских библиотек. |
||
Новичок Присоединился: 21 Август 2010 Online Status: Offline Публикации: 27 |
||
Привет, kazulis!
Причиной появления "говнокода" является, на мой взгляд, недостаточно продуманная декомпозиция библиотек. Взяли функции, имеющие отношения к последовательному порту, да запихали их в одну библиотеку. Если бы сначала разбили на модули, например, обработчик прерывания, принять/передать байт и так далее, а потом модули компоновали в библиотеку, то линковщик не цеплял бы лишнего. А так получается, что для передачи одного байта цепляется 40К ненужного кода, а из него идёт вызов единственной(!) функции из другой библиотеки, и пошло-поехало! Кстати, сейчас изучаю АДАМ-450х. "Железо" у 4501 и 5510, с очевидными оговорками, одинаковое, как и библиотеки, а вот описания несколько разнятся. Некоторые нюники 5510, до которых я дошёл сам, для 4501 прописаны явно. Имейте это в виду, вдруг пригодится. UltraLogic (УЛ) писал не "Прософт", какая-то немецкая фирма, название не помню. "Прософт" эксклюзивный дистрибьютор УЛ. Качнул УЛ, поковыряюсь, отчитаюсь. Насчёт использования коллективного разума идея хорошая. Давайте обмениваться результатами, а то каждый тратит время на повторения пути другого, а мог бы двигаться дальше. Главное, чтобы выложенные для общего пользования результаты были документированы, и с ними мог разобраться страждущий. В этой связи вопрос: кто-нибудь может внятно изложить архитектуру Модбас-сервера и проиллюстрировать примерами кода для чтения входных регистров, чтения/записи регистров состояния, чтения/записи состояния катушек реле? Имеется в виду тот набор функций, что идёт от Адвантека. Если будет интерес к вопросу о программировании АДАМов, то могу выложить свои наработки. |
||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
||
@@Исследование показало, что в одной *.lib лежит один(!) *.obj.@@
Попробуй
C:\Tasm\BIN\Tlib.exe 80x86.lib -+ADAM5017.obj, ADAM5510.lst
и в ADAM5510.lst получиш список!!!
UltraLogic писали наши и код у них сделан не ногами-, весь прикомпилированный код для передачи данных по протоколу PLCNet занимает 2.4 кБ. (проверяется просто - в UltraLogic компилиш пустой проект с передачей данных и без неё)
В библиотеке все функции распределены по своим задачам и вы можете их использовать напрямую, а есл хочеш исходный код, то изучай asm и используй IDA pro!
|
||
Vel
|
||
Участник Присоединился: 04 Декабрь 2008 Категория: Russian Federation Online Status: Offline Публикации: 81 |
||
Кстати, о птичках: а при помощи CoDeSys возможно программирование ADAM-ов или как? Мож кто в курсе?
|
||
Prosoft.ru Присоединился: 21 Июнь 2003 Online Status: Offline Публикации: 432 |
||
Это называется ADAM-5510KW
|
||
Новичок Присоединился: 15 Июнь 2004 Online Status: Offline Публикации: 27 |
||
Да, но только софтина другая KW-Multiprog а не CoDeSys. |
||
Новичок Присоединился: 21 Август 2010 Online Status: Offline Публикации: 27 |
||
Про список и ежу понятно, но не tlink, который тащит в ехе код не использованных функций.
Ещё не успел добраться до UltraLogic, поэтому сори за такой вопрос: а насколько хорошо документированы внутренние функции УЛ, которые Вы предлагаете использовать? Нужно ведь (хотя бы!) понимать не только ЧТО делает та или иная функция, но и то КАК она это делает, а также знать архитектуру всей библиотеки УЛ. Камни в огород Адвантека летят не зато, что у них чего-то нет, а за то, что не описано КАК реализован тот или иной механизм. А то что получается: пока читаешь доку, вроде всё понятно, но как только пытаешься отобразить её на свою задачу, то возникает куча вопросов, на которые указаний на ответы в доке нет. И приходится решать дилемму: методом проб и ошибок добиваться работы того, что даёт Адвантек, то ли писать самому. |
||
Новичок Присоединился: 21 Август 2010 Online Status: Offline Публикации: 27 |
||
...а есл хочеш исходный код, то изучай asm и используй IDA pro!...
То есть Вы предлагаете взлом? Я разработчик, а не взломщик. Asm мой второй язык, но с годами обрыдло расковыривать чужой код. Лет десять назад так бы и поступил, но сейчас мне нужно быстро, качественно и надёжно сделать свою работу, да и годы общения с Линукс отучили от такого подхода. Дело не в моей квалификации, а в подходе. "Деньги не пахнут!" заявил один из римских императоров, решивший брать с граждан деньги за пользование общественными туалетами. Расковырять в IDA чужой код, прикрутить его к своей программе... Ну не профессионально это! |
||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
||
@@ Возникло желание "выцарапать" код каждой функции из библиотеки. После этого не понимаю текст - "То есть Вы предлагаете взлом?"
"мне нужно быстро, качественно и надёжно сделать свою работу" - это возможно, если:
Вы использовали данный код длительное время и "нашли" все или почти все баги в коде.(это 'быстро')
Вы имеете исходный код и можете свою программу подстраивать под используемый код (значит Вы разработчик этого кода!)
Иначе...
Обратная разработка (обратный инжиниринг, реверс-инжиниринг; англ. reverse engineering) — исследование некоторого устройства или программы, а также документации на него с целью понять принцип его работы и, чаще всего, воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового.
Применяется обычно в том случае, если создатель оригинального объекта не предоставил информации о структуре и способе создания (производства) объекта. Использование обратной разработки может противоречить закону об авторском праве и патентному законодательству.
А я только показываю путь!!!
|
||
Vel
|
||
Ответить | Страница 123> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |