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

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

 Ответить Ответить Страница  <123
Автор
Сообщение
kuzulis Смотреть выпадающим
Участник
Участник


Присоединился: 04 Декабрь 2008
Категория: Russian Federation
Online Status: Offline
Публикации: 81
Свойства публикации Свойства публикации   Ответить, цитируя автора - kuzulis Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Декомпиляция библиотек для ADAM-5510
    Опубликовано: 10 Ноябрь 2010 08:24

Языков  Си - много разных, и на каком именно скомпилена прога - утеряно безвозвратно. Набитым взором можно отличить Борладские произведения от Вижуаловских, но не более ..

Ну так адвантеховские либки (а мы говорим про их декомпиляцию) то скомпилены BC 3.x из Си-шных исходников, если судить по тем зависимостям, которые проанализировал IDA :

DGROUP:0000 ; File Name   : COMM
DGROUP:0000 ; Format      : Object Module Format (OMF/Microsoft)
DGROUP:0000 ; Module name      : COMM
DGROUP:0000 ; Translator       : TC86 Borland C++ 3.1
DGROUP:0000 ; Borland debuginfo: version 3.0
DGROUP:0000 ; Dependency       : 20.12.07 11:46:04 COMM.C
DGROUP:0000 ; Dependency       : 10.06.92 03:10:00 D:\OFFICE\BORLANDC\INCLUDE\DOS.H
DGROUP:0000 ; Dependency       : 10.06.92 03:10:00 D:\OFFICE\BORLANDC\INCLUDE\_DEFS.H
DGROUP:0000 ; Dependency       : 21.12.07 15:24:58 ..\INC\5510DRV.H
DGROUP:0000 ; Dependency       : 10.06.92 03:10:00 D:\OFFICE\BORLANDC\INCLUDE\IO.H
DGROUP:0000 ; Dependency       : 10.06.92 03:10:00 D:\OFFICE\BORLANDC\INCLUDE\_NFILE.H
DGROUP:0000 ; Dependency       : 10.06.92 03:10:00 D:\OFFICE\BORLANDC\INCLUDE\DOS.H
DGROUP:0000 ; Dependency       : 10.06.92 03:10:00 D:\OFFICE\BORLANDC\INCLUDE\STDIO.H
DGROUP:0000 ; Dependency       : 10.06.92 03:10:00 D:\OFFICE\BORLANDC\INCLUDE\_NULL.H
DGROUP:0000 ; Dependency       : 10.06.92 03:10:00 D:\OFFICE\BORLANDC\INCLUDE\STDLIB.H
DGROUP:0000 ; Borland flags    : Optimization 00000000
DGROUP:0000 ; Language         : C small, with underscores


Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Ноябрь 2010 14:33
Ну чтож - IDA это вещь
Если фрагмент небольшой, можно ли его тут выложить, и посмотреть для примера ?
 
С уважением SAN
Наверх
kuzulis Смотреть выпадающим
Участник
Участник


Присоединился: 04 Декабрь 2008
Категория: Russian Federation
Online Status: Offline
Публикации: 81
Свойства публикации Свойства публикации   Ответить, цитируя автора - kuzulis Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Ноябрь 2010 19:47
2 tonyk, отправил тебе на почту

2 sanwork, попробую ASM для COMMS.LIB запостить.


....

        .386
        .model small

; ===========================================================================

; Segment type:    Group
DGROUP        group _DATA,_BSS

; ===========================================================================

; Segment type:    Externs
; extn01
        extrn N_SCOPY@:near    ; CODE XREF: sub_11124+18p
                    ; sub_11124+27p ...
; char *__cdecl    strcat(char *dest, const char *src)
        extrn _strcat:near    ; CODE XREF: _modem_dial+18p
; char *__cdecl    strcpy(char *dest, const char *src)
        extrn _strcpy:near    ; CODE XREF: _modem_dial+Bp
; void *__cdecl    memcpy(void *dest, const void *src, size_t n)
        extrn _memcpy:near    ; CODE XREF: _com_tx_multiple+5Ap
                    ; _com_tx_multiple+6Ep    ...
        extrn N_LUDIV@:near    ; CODE XREF: _com_set_speed+2Ep
                    ; _com_485_set_speed+2Ep ...
; void __cdecl setvect(int interruptno,    void (__interrupt far *isr)())
        extrn _setvect:near    ; CODE XREF: _com_general_install+1C7p
                    ; _com_general_install+1E5p ...
; void (__cdecl    __interrupt far    *__cdecl getvect(int interruptno))()
        extrn _getvect:near    ; CODE XREF: _com_general_install+132p
                    ; _com_general_install+142p ...

; ===========================================================================

; Segment type:    Pure code
_TEXT        segment    byte public 'CODE' use16
        assume cs:_TEXT
        ;org 10h
        assume es:nothing, ss:nothing, ds:DGROUP, fs:nothing, gs:nothing
; #line    403

; =============== S U B    R O U T    I N E =======================================

; Attributes: bp-based frame

        public _com_install
_com_install    proc near

arg_0        = word ptr  4

        push    bp
        mov    bp, sp
; #line    473
        cmp    [bp+arg_0], 1
        jnz    short loc_10038
; #line    476
        push    1
        call    _com_general_install
        pop    cx
        or    al, al
        jz    short loc_10038
; #line    477
        mov    ax, 0FFFFh

loc_10036:                ; CODE XREF: _com_install+1Aj
        jmp    short loc_1003C
; ---------------------------------------------------------------------------
; #line    480

loc_10038:                ; CODE XREF: _com_install+7j
                    ; _com_install+11j
        xor    ax, ax
        jmp    short loc_10036
; ---------------------------------------------------------------------------
; #line    481

loc_1003C:                ; CODE XREF: _com_install:loc_10036j
        pop    bp
        retn
_com_install    endp

; #line    482

; =============== S U B    R O U T    I N E =======================================

; Attributes: bp-based frame

        public _com_flush_all_tx
_com_flush_all_tx proc near        ; CODE XREF: _com_general_install+113p
        push    bp
        mov    bp, sp
; #line    484
        cli
; #line    485
        xor    ax, ax
        mov    _tx_out, ax
        mov    _tx_in,    ax
        mov    _tx_num, ax
; #line    487
        xor    ax, ax
        mov    _tx_out_232_485, ax
        mov    _tx_in_232_485,    ax
        mov    _tx_num_232_485, ax
; #line    488
        xor    ax, ax
        mov    _tx_out_485, ax
        mov    _tx_in_485, ax
        mov    _tx_num_485, ax
; #line    489
        sti
; #line    491
        pop    bp
        retn
_com_flush_all_tx endp

; #line    493

; =============== S U B    R O U T    I N E =======================================

; Attributes: bp-based frame

        public _com_flush_all_rx
_com_flush_all_rx proc near        ; CODE XREF: _com_general_install+116p
        push    bp
        mov    bp, sp
; #line    495
        cli
; #line    496
        xor    ax, ax
        mov    _rx_out, ax
        mov    _rx_in,    ax
        mov    _rx_num, ax
; #line    498
        xor    ax, ax
        mov    _rx_out_232_485, ax
        mov    _rx_in_232_485,    ax
        mov    _rx_num_232_485, ax
; #line    499
        xor    ax, ax
        mov    _rx_out_485, ax
        mov    _rx_in_485, ax
        mov    _rx_num_485, ax
; #line    500
        sti
; #line    501
        pop    bp
        retn
_com_flush_all_rx endp

; #line    503

; =============== S U B    R O U T    I N E =======================================

; Attributes: bp-based frame

        public _com_general_install
_com_general_install proc near        ; CODE XREF: _com_install+Bp
                    ; _com_485_install+5p ...

var_16        = word ptr -16h
interruptno    = word ptr -14h
var_12        = word ptr -12h
var_10        = word ptr -10h
var_E        = word ptr -0Eh
var_C        = word ptr -0Ch
var_A        = word ptr -0Ah
var_8        = word ptr -8
var_6        = word ptr -6
var_4        = word ptr -4
var_2        = word ptr -2
arg_0        = byte ptr  4

        enter    16h, 0
        push    si
        push    di
; #line    522
        cmp    [bp+arg_0], 3
        jnz    short loc_1009D
        jmp    loc_103AB
; ---------------------------------------------------------------------------
; #line    524

loc_1009D:                ; CODE XREF: _com_general_install+Aj
        mov    al, [bp+arg_0]
        mov    ah, 0
        mov    [bp+var_2], ax
; #line    525
        mov    al, [bp+arg_0]
        mov    ah, 0
        cmp    ax, 1
        jz    short loc_100BB
        cmp    ax, 2
        jz    short loc_100C9
        cmp    ax, 4
        jz    short loc_100D4
        jmp    short loc_100E4
; ---------------------------------------------------------------------------
; #line    527

loc_100BB:                ; CODE XREF: _com_general_install+1Fj
        cmp    _com_installed,    0
        jz    short loc_100C7
; #line    528

loc_100C2:                ; CODE XREF: _com_general_install+42j
                    ; _com_general_install+4Dj ...
        mov    al, 0FFh

loc_100C4:                ; CODE XREF: _com_general_install+58j
                    ; _com_general_install+FCj ...
        jmp    loc_103BA
; ---------------------------------------------------------------------------
; #line    529
....


Это небольшой кусочек.. А вообще в этом дисассемблерном файле около 13500 строк... не поместится всё.
Наверх
tonyk Смотреть выпадающим
Новичок
Новичок


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

Твою посылку получил. Ты сам пробовал ассемблировать то, что мне прислал? А запускать на реальном контроллере? "Живые" ADAM-4501 я возьму в руки, скорей всего, не раньше конца февраля. Но в любом случае попробую разобраться с твоими результатами.
Наверх
kuzulis Смотреть выпадающим
Участник
Участник


Присоединился: 04 Декабрь 2008
Категория: Russian Federation
Online Status: Offline
Публикации: 81
Свойства публикации Свойства публикации   Ответить, цитируя автора - kuzulis Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 11 Ноябрь 2010 08:21
[quote
Твою посылку получил. Ты сам пробовал ассемблировать то, что мне прислал? А запускать на реальном контроллере? "Живые" ADAM-4501 я возьму в руки, скорей всего, не раньше конца февраля. Но в любом случае попробую разобраться с твоими результатами.
[/quote]
Нет, не пробовал... Да и врядли оно заработает... По-любому нужно будет ручками править и разгребать.. :(
Наверх
Boroda55 Смотреть выпадающим
Новичок
Новичок


Присоединился: 17 Ноябрь 2008
Online Status: Offline
Публикации: 17
Свойства публикации Свойства публикации   Ответить, цитируя автора - Boroda55 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 24 Ноябрь 2010 19:21
[QUOTE=tonyk]Привет, kazulis!

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

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

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

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

Если будет интерес к вопросу о программировании АДАМов, то могу выложить свои наработки.

  [/QUOTE=Boroda55]

Я служил на ФЛОТЕ ещё в советские времена!!!

Нас приучали знать всё ПОЛИТБЮРО и начальство в лицо!!!

Так ВОТ...

UltraLogik 16 и UltraLogik32 создала не НЕМЕЦКАЯ ФИРМА а РУССКАЯ!!!

И зовут ея ФАСТВЕЛ - http://www.fastwel.ru/

К сожалению - она отошла от програмажа (ушла на железо)

И это правильно!!!

Железо ОНА делает лучше, чем SOFT.

Если мне не изменяет память, один из авторов ULogik - Александр Козлов (лично знаком)

Кстати, для информации, и для истории...

Фирма ПРОСОФТ - если перевести аббревиатуру, проффессиональный СОФТ.

Именно это было началом.

Они писали софт для программирования однокристалок...

Если кто занимался ЭТИМ:

i8748 и i8751

Потом (поймали струю) - ушли от этого.

И стали обычными "продавцами" железа

Кстати, хорошими продавцами!!!

Я с ними работаю с 1999 года.

У них отличные консультанты.

МОИ личные консультанты (к сожалению были)

Сергей Гусев (железо) - www.firstmile.ru

Анна Долгова (GENESIS32) - к сожалению не знаю где сейчас!!! ;-(((


Наверх
KozlovKS Смотреть выпадающим
Prosoft.ru
Prosoft.ru


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

Про Ultralogik, Фаствел, "кино и немцы", службу на флоте и пр. 

Вот так рождаются легенды Big smileBig smileBig smile.

На самом деле автор Ultralogic - российская фирма ЦЕНТРКОНТРОЛЬАВТОМАТИКА 

ПРОСОФТ/Фаствел поставлял одно время этот пакет. Но фирма в первую очередь развивала этот пакет под свои контроллеры и нужды, тогда как сообществу требовалась универсальность...  В итоге сейчас фирма поставляет его самостоятельно.
Наверх
 Ответить Ответить Страница  <123

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

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