Как программно определить на чем написана программа

Тема в разделе "WASM.BEGINNERS", создана пользователем kosfz, 25 июн 2006.

  1. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    kosfz

    А можно по-подробнее про System.Initialization?



    Идея в общих чертах такова: любая программа, написанная на Дельфи, содержит функции (может быть не все) из модуля system.pas. Я нашел две характерные функции, однозначно определяющие версию - HandleFinally и System.Initialization.

    Сканируешь программу (код модуля system идет в начале) на предмет нахождения ассемблерного текста HandleFinally и System.Initialization для разных версий Дельфи. По совпадению определишь версию. Только не забудь, что не все байты надо сравнивать!
     
  2. kosfz

    kosfz New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    45
    Адрес:
    Russia
    crypto

    Ну что не все байты сравнивать надо - это и ежу понятно. Обязательно попробую.

    valterg

    По поводу того, что PEiD работает, а PETools показывает unknown - это конечно неприятно, но я тут с помощью своего SignMan'а для 5 файлов получил 2 сигнатуры для Delphi 6-7 и проверил на 20 с лихом файлах и во всех все определилось правильно, причем мои сигнатуры совпадают с предложенными только в начале, а дальше совершенно все разное(между собой отличаются только в одном месте). Ну не может же быть такого, чтобы у меня здесь, а у него там все такое разное - это же невозможно. Должно быть какое-то разумное объяснение, как считаешь?

    Всем

    Может помимо сравнения сигнатур есть еще какой-то способ определить на чем написана программа? Откликнитесь, если кто знает! А может самому все сигнатурки получить и потом потестить, но автор пишет что программа-то протестина, видать фигово. В 1.txt сигны для Delphi 6-7 попробуйте проверить их, мне нужно знать результат(поставьте их самыми первими в Signs.txt).

    [​IMG] 651440380__1.txt
     
  3. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    kosfz

    Видимо, сигнатуры подобраны не очень корректно.
     
  4. win32_kernel

    win32_kernel New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2006
    Сообщения:
    23
    Адрес:
    Russia
    Можно ещё определять по сообщению, которое выводит DOS Stub. Способ не очень хороший, но производителя линкера определить можно (даже визуально, открыв в блокноте).

    Для Microsoft - это "This program cannot be run in DOS mode", для Borland - "This program must be run under Win32".

    Некоторые трояны вообще ничего не выводят :) .
     
  5. win32_kernel

    win32_kernel New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2006
    Сообщения:
    23
    Адрес:
    Russia
    Можно ещё определять по сообщению, которое выводит DOS Stub. Способ не очень хороший, но производителя линкера определить можно (даже визуально, открыв в блокноте).

    Для Microsoft - это "This program cannot be run in DOS mode", для Borland - "This program must be run under Win32".

    Некоторые трояны вообще ничего не выводят :) .
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Много информации дает анализ стартапного кода.
     
  7. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    версию delphi можно определить по ресурсам там есть подпись
    точнее не помню

    кроме того в зависимости от установок компилятора , например оптимизации и выравнивания сигнатуры могут быть разными - я не проверял , но это очевидно
     
  8. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    Сигнатуры это и есть байты с EP
     
  9. kosfz

    kosfz New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    45
    Адрес:
    Russia
    Вообщем пообщался я с вами, подсказали вы мне и т.д. Всем спасибо! Вот написал программку, конечно не PEiD и не PETools, но тоже не че так. Если кто качнет то напишите пожале что понравилось, что нет. Может у кого-нибудь будут предложения по далнейшему развитию(что добавить или еще что-нибудь). Если что пишите на kosfiz@mail.ru. Ссылка на PEiN:kosfiz.narod.ru/downloads/PEiN.rar и на прогу чтоб сигны стряпать kosfiz.narod.ru/downloads/SignManForPEiN.rar
     
  10. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    2staier
    Код, встраиваемый из vcl, остается без изменения.
     
  11. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    kosfz
    взгянул я мельком, ну что можно сказать, скорость сканирования маленькая...
    + я думаю, что в проге ты работал со строками, а от этого надо избавляться -
    надо работать с сигнами как с посл. байт, ну дизайн, конечно же не ахти =)
    а вообще (т.к. ты тоже пишешь на дельфи) посмотри мой анализатор (может что-нибудь почерпнёшь),
    Detect it Easy 0.57 и SCANiT! 1.85 от Guru.eXe ссылку давай не буду (чтобы не было рекламы), если надо
    сам найдёшь =) а я в свою очередь от помощи не откажусь, если конечно у тебя
    будет желание.
     
  12. 6aHguT

    6aHguT New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2005
    Сообщения:
    15
    _hxxp://treinerov.net/filearhiv/guru_files/tport/PE_Detector_0.1_Source_Guru.eXe_tPORt.zip
    Тут сорец опэнсорс анализатора от Guru.eXe (Дельфи)
     
  13. kosfz

    kosfz New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    45
    Адрес:
    Russia
    6aHguT
    за ссылочку спасибо!