Вызов функции в ActiveX

Тема в разделе "WASM.RESEARCH", создана пользователем MoKC0DeR, 1 апр 2007.

  1. MoKC0DeR

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia
    Есть одна замечательная программа, которая для проверки корректности введенного в нее кода сама генерит правильный код и сравнивает его с введенным в окошко.
    Нет ни времени ни желания разбираться с алгоритмом работы генератора (не реально огромный код), но хочется сделать кейген. Данная функция (генерация кода) содержится в dll. Сначала я подумал что это обычная dll просто функция не экспортируется. Сделал самостоятельную загрузку и вызов функции - кейген стал падать. Как выяснил на вызовах некоторых функций. Присмотревшиь по внимательней понял что dll представляет собой ActiveX компонент.
    Собственно вопрос: как правильно подргузить dll, инициализировать ее и вызвать некий код ?
     
  2. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    MoKC0DeR
    В общем случае надо определить CLSID кокласса и IID интерфейса, "представляющего" нужную ф-цию.

    Лучше всего посмотреть(в отладчике), как это делает сама программа. Скорее всего будет вызов CoCreateInstance c получением нужного интерфейса, а потом косвенный вызов по определённому смещению в таблице методов интерфейса (как при вызове виртуальной ф-ции в С++).

    Также посмотри (в HKCR\Interfaces\{IID}) нет ли случайно для этого интерфейса библиотеки типов.
    Тогда можно (директива #import в VC++) сгенерировать С++-представление данного интерфейса в виде абстрактного класса (с оригинальными именами всех методов). :)
     
  3. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Сделай лучше internal keygen. И просто и быстро
     
  4. MoKC0DeR

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia
    green
    спс. попробую
    twgt
    как ?
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Проще редактором ресурсов заглянуть в TLB самой длл, обычно там всё и рассказано :) За редким исключением, tlb идёт рядом (как с вордом).
     
  6. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Там, где идет сравнение введённого кода с правильным можно поставить jmp на свой код, в котором будет происходить вывод на экран правильного кода (MessageBoxA например). Ток это для ленивых :)
     
  7. MoKC0DeR

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia
    IceStudent
    Какой редактор посоветуете для просмотра TLB ?
     
  8. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    MoKC0DeR
    IceStudent прав - скорее всего tlb находится в ресурсах самой длл. Только, по-моему, лучше её смотреть не в редакторе ресурсов, а в OleView (File->View Typelib) - он показывает содержимое в виде IDL.

    Хотя было бы большой беспечностью со стороны разработчиков оставлять tlb для такого интерфейса. :)
     
  9. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    green
    Оффтоп
    Разработчики иногда такую безалаберность (или безграмотность) проявляют - хоть падай (хотя для исследователя это большая удача наподобие "ошибки шифровальщика" в криптографии). Мне самому как-то попалась инсталляция одной программы... В общем, после инсталляции в одной из многочисленных созданных ею директорий я случайно обнаружил генератор лицензий. :)
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    MoKC0DeR
    PE Explorer.

    green
    Так PEX тоже показывает (только синтаксис Делфи), поэтому я и сказал о редакторе ресурсов, имея ввиду с поддержкой IDL.