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

Discussion in 'WASM.RESEARCH' started by MoKC0DeR, Apr 1, 2007.

  1. MoKC0DeR

    MoKC0DeR New Member

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

    green New Member

    Blog Posts:
    0
    Joined:
    Jul 15, 2003
    Messages:
    1,217
    Location:
    Ukraine
    MoKC0DeR
    В общем случае надо определить CLSID кокласса и IID интерфейса, "представляющего" нужную ф-цию.

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

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

    twgt New Member

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    1,494
    Сделай лучше internal keygen. И просто и быстро
     
  4. MoKC0DeR

    MoKC0DeR New Member

    Blog Posts:
    0
    Joined:
    Nov 13, 2003
    Messages:
    136
    Location:
    Russia
    green
    спс. попробую
    twgt
    как ?
     
  5. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    Проще редактором ресурсов заглянуть в TLB самой длл, обычно там всё и рассказано :) За редким исключением, tlb идёт рядом (как с вордом).
     
  6. twgt

    twgt New Member

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    1,494
    Там, где идет сравнение введённого кода с правильным можно поставить jmp на свой код, в котором будет происходить вывод на экран правильного кода (MessageBoxA например). Ток это для ленивых :)
     
  7. MoKC0DeR

    MoKC0DeR New Member

    Blog Posts:
    0
    Joined:
    Nov 13, 2003
    Messages:
    136
    Location:
    Russia
    IceStudent
    Какой редактор посоветуете для просмотра TLB ?
     
  8. green

    green New Member

    Blog Posts:
    0
    Joined:
    Jul 15, 2003
    Messages:
    1,217
    Location:
    Ukraine
    MoKC0DeR
    IceStudent прав - скорее всего tlb находится в ресурсах самой длл. Только, по-моему, лучше её смотреть не в редакторе ресурсов, а в OleView (File->View Typelib) - он показывает содержимое в виде IDL.

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

    crypto Active Member

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

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    MoKC0DeR
    PE Explorer.

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