<O| LSD - Новый портабельный дизасм для любых сред

Тема в разделе "WASM.ASSEMBLER", создана пользователем BlackParrot, 16 мар 2009.

  1. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    LSD - движок для дизасма 16/32-битных инструкций, в будущем также 64-битный. Поддерживаются все имеющиеся инструкции (по новейшим манулам Intel). Вес примерно 17кб, умеет генерить мнемоники, раскладывает инструкцию на смысловые части - в структуру. Не требует никаких RTL для своей работы, что означает может быть использован в любой среде. Сейчас выкладываю тестер для дизасма инструкций. Двиг находится на стадии бета-тестирования. Интересуют ошибки в дизассемблировании и общие замечания, может быть пожелания для функциональности и заточки хидеров. Спасибо.
     
  2. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Первый раз не прикрепилось :dntknw:
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Норм, только избавиться от апи(lstrcpy и пр.) и выложить сурцы(желательно код с адреса 0x4022D8).
     
  4. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    API в движке отсутствуют, там голый С-код. Это API от тестера. Сурцы выложу как только буду уверен, что большинство багов отстутствует. Планируется сделать варианты для многих сред, чтобы можно было использовать LSD легко где угодно. Также возможно в финал будут включены различные модификации (например, только разбор инструкции без создания мнемоники). От вас жду как раз советов или каких-нибудь требований, которые могли бы пригодиться тем, кто будет использовать дизасм. Сам движок построен на совмещении чисто табличной технологии, с технологией таблицы + перебор для тех случаев где структура таблиц кишит нулями - префиксные опкоды, трехбайтные окоды. Такие опкоды встречаются не так часто, поэтому сильного замедления быстродействия не будет наблюдаться. 1 и 2-х байтные опкоды дизасмятся напрямую поэтому скорость их дизасма предельная. LSD - LaSt Disassembler.
     
  5. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Не думал о смене названия?
     
  6. temp1807

    temp1807 New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2009
    Сообщения:
    61
    K10
    во-во ! Лучше Last Disassembler( LD ) - сигареты такие есть бггг уж лучше чем наркотеги стайл - ЛСД !
    И сорцы пришли на temp1807ВАШАРЕКЛАМАyandex.ru. плзплпзлзплз
     
  7. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Давайте уже посерьезней. Я просил только обсуждение технических свойств. Флудить можно в HEAP. Хотя и там нельзя уже, топы кроют без объяснений.
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Сделай его шелкодом(это неюзабельный недостаток), перекомпиль, закриптуй и выложи. Сурцы не нужны, хидеры не помешают. Спасибо.
     
  9. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Clerk
    Отлично, как раз изначально планировал сделать его независимым от положения. Сурцы выложу, скрывать все равно тут нечего. Пока работаю над какое-какими мелочами. Как будет готово выложу на осмотр.
     
  10. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    нене, было сообщение :
    а вобще какое то дебильное название, в самом деле. ну не мог автор не знать о свпадании имён его продукта со списочным веществом.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Да без разницы название, увидели тут знакомые буквы.
     
  12. Demon666

    Demon666 New Member

    Публикаций:
    0
    Регистрация:
    19 май 2006
    Сообщения:
    99
    Тут лучше просто структуру возвращать с распарсеными частями, короче как у ollydbg сделано

    Еще не успел посмотреть, но реально надо dll уже собранную, еще нужен от нее статик lib, его на асме есть гуд подключать и хедеры нужны с описанием структур и параметров, что-то типа комментариев
    Хотя бы чтобы просто гуи на скорую руку набросать для юзабельности, чтобы потестить/поюзать
    Еще где-то, походу ты где-то создавал тему про неправильный дизасм команд
    Че думаешь вот про этот движок?
    http://beatrix2004.free.fr/BeaEngine/BeaEngineSources.rar
    (размер там большой, ну относительно) вроде сЪел правильно те команды, вот жаль темы не помню название..
    В нем тоже структура на выходе, но как у ollydbg сделано лучше - ИМХО
     
  13. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Demon666
    Так в общем и сейчас сделано.

    Имхо он слишком большой. Для каждой команды по процедуре разбора это явно слишком. Я старался в своем минимизировать размер и максимизировать скорость. Ну и конечно набор команд должен быть максимально полным.

    Я скинул тестер, DLL/LIB/OBJ/H/INC сделаю чуть позже, хочу чтобы не было багов в финальной версии. Сейчас нашел пару и тестирую дальше.
     
  14. Demon666

    Demon666 New Member

    Публикаций:
    0
    Регистрация:
    19 май 2006
    Сообщения:
    99
    BlackParrot
    Да это все скажут, что реально большой размер - годен только для наружного применения ;)

    Да нет, я про другое гуи.. вот как-то так:
    http://beatrix2004.free.fr/BeaEngine/images/lookinside32bits.png
    там у него типа все подконтрольно, короче.. мне нравится
    лучшее решение что можно придумать, чтобы показать полный набор возможностей дизасма - ИМХО

    Да это понятно что структура, ее сейчас бы увидеть до релиза, чтобы хоть какое-то представление иметь и вообще название полей структуры, констант должны быть интуитивно понятны

    P. S.
    А вообще, в принципе тебе все-таки лучше, должно видится реальное положение вещей.. сталобыть тебе и решать как делать!
     
  15. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Код (Text):
    1. typedef struct _tdasm_struct
    2. {
    3.     unsigned char   opcode;             // 1 байт опкода
    4.     unsigned char   opcode2;           // 2 байт опкода
    5.     unsigned char   opcode3;           // 3 байт опкода
    6.     unsigned long   imm;                 // imm
    7.     unsigned long      second_imm;      // for enter instruction
    8.     unsigned char   modrm;             // modrm байт
    9.     unsigned short  pref;                // префиксы
    10.     unsigned char   length;             // длина инструкции
    11.     unsigned long   flags;               // флаги для 1 байта
    12.     unsigned long      flags2;             // флаги для 2 байта
    13.     unsigned long   flags3;             // флаги для 3 байта
    14.     signed    long      disp;                // относительный переход
    15.     signed    long      offset;             // смещение адреса
    16.     unsigned short     seg;                // код сегмента, если есть
    17.     bool            def_addr_size32; // по умолчанию 32-х битный размер адреса
    18.     bool            def_op_size32;  // по умолчанию 32-х битный размер операнда
    19.     char            sib;                 // байт sib
    20.     unsigned long      opcode_x;        // код опкода
    21.     char            mnemonic[50];  // строка имнемоники
    22.     table           s_table;           // для базовой независимости
    23. } tdasm_struct, *tpdasm_struct;
    Ок, понял. Тоже сделаю такое. Хоть у меня и не так все подробно, но имхо тип команд (арифметик и т.д.) для практической работы не нужно, это скорее академический подход. Если надо это можно будет сделать по анализу опкода, и будет короче в итоге.

    Это правда, но всегда есть какие-то требования других специалистов. Я думал о многом, но не обо всем наверняка, поэтому и жду возможно полезных советов, и уже получил. Спасибо.
     
  16. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Новая версия тестера, большинство ошибок движка (а может и все) устранены. Сам тестер может представлять большой интерес в плане автоматического разбора инструкций, там же присутствует генератор инструкций - я решил объединить его с LSDDT. Если интересно жду пожеланий, баг репортов, etc.

    [​IMG]
     
  17. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    BlackParrot
    перезалей, хостинг какойнить, архив битый
     
  18. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Зеркало
    http://www.sendspace.com/file/rj7gk1
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Не работает почемуто, окно не обновляется XPSP3.
     
  20. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    хрюша не входит в число "любых сред", а какие "среды" входят?