Кейген для проги на VB6

Тема в разделе "WASM.RESEARCH", создана пользователем merad, 11 окт 2004.

  1. merad

    merad New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    8
    Господа! Кто может помочь? Есть прога ExpandIT Backup Utility(_http://www.expandit.com/products/backup_utility/downloads/def ault.htm_)

    Написана на VB6. Бит хаком лечить не хочу, хочу сделать кейген. Во взломе софта есть некоторый опыт. Пользую SmartCheck и WDasm32 (для Vb вполне достаточно, я думаю).

    В принципе я уже прорюхал практически весь алгоритм проверки лицензии, но в одном месте в коде я застрял - не могу разобраться что к чему.

    Вообщем че происходит при запуске проги - она выдает окно с сообщением о том, что лицензия не найдена и будет работать в демо режиме. Анализ кода вскрыл, что прога берет значения из реестра

    HKLM\SOFTWARE\ExpandIT\Backup Utility\2.0\LicenseInfo

    HKLM\SOFTWARE\ExpandIT\Backup Utility\2.0\LicenseSignature

    оба строковые. Причем в LicenseSignature пишется шестнадцатиричные значения. Далее в прогу вшит интересный ключ:

    "&\F:\Development\Projects\Catfish\Manager"(без кавычек)

    Далее начинается цикл. Берется asc значение первого символа ключа

    (&=38 вроде) и два хексовых символа LicenseSignature и делается xor.

    далее полученное значение переводится в hex и запоминается. Далее цикл продолжается для всех символов ключа(берется 2 символ ключа и 3-4 LicenseSignature...), но LicenseSignature длинее ключа(это я понял косвенно) поэтому далее когда ключ кончается, все начинается с 1-го символа и т.д. пока не будет достигнут конец LicenseSignature.

    В итоге после каждой такой операции накапливается строка хексовых значений(назовем ее xh_res). И вот собственно приближаюсь к тому месту в программе, где не могу понять почему делается переход. Там хешируются(вызов функции hash из библеотеки expandit.dll) 1-968 символы xh_res и запоминаются, а потом 969-1000 символы сравниваются с пустой строкой и происходит какое-то невыполнение условия, после которого прога уже перестает проверять дальше лицензию и начинает готовиться к показу демо-окна. Хеш оставим на потом, т.к. бодяга с ним будет дальше.



    Вот это место мне и непонятно, почему там что-то не выполняется.

    Это здесь

    47cd35 __vbaVarCmpEq

    47cd43 __vbaVarAnd

    47cd4a __vbaBoolVar



    И вследствии этого после сравнения

    47cd87 cmp di, si

    все идет не в то русло.
     
  2. merad

    merad New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    8
    неужели никто не поможет?!
     
  3. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Код, брат Горацио, код, а не твои измышлизмы!
     
  4. merad

    merad New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    8
  5. snatch

    snatch New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2003
    Сообщения:
    27
    Адрес:
    Belarus
    47cd35 __vbaVarCmpEq

    47cd43 __vbaVarAnd

    47cd4a __vbaBoolVar



    Это походу он типа смотрит true или false. :)



    If shit = true

    MsgBox("Ok!")

    End If
     
  6. merad

    merad New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    8
    Если смотреть Smartcheck-ом, то

    фигня какая-то получается, там идет сравнение моей строки с пустой, моя не пустая, а возвращается True...
     
  7. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Ты в айсе посмотри на аргументы vbaVarCmpEq.
     
  8. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Да, кроме того. Что интересно было бы попробовать. Если ты je на jne поменяешь - то как ведет себя прога? Запускается?
     
  9. merad

    merad New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    8
    Вообщем при изменении je на jne прога запускается как обычно,т.е. в демо-режиме.

    А как посмотреть аргументы в IDA, с учетом что это VB?



    __vbaVarCmpEq(VARIANT:String:"f3e6ac81...", VARIANT:Const String:"") returns DWORD:12F8E4

    __vbaVarAnd(VARIANT:Boolean:True, VARIANT:Boolean:False) returns DWORD:12F8D4

    __vbaBoolVar(VARIANT:Boolean:False) returns DWORD:0



    Вот вырезка из Smartcheck:

    Но непонятно почему первый аргумент __vbaVarAnd равен True, ведь строка не пустая!
     
  10. merad

    merad New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    8
    Наконец-то вспомнил, что имею дело с типом Variant, разобрался с аргументами. Теперь правда наоборот ситуация.

    В первый аргумент __vbaVarAnd заносится True в строке



    :0047CC8B mov word ptr [ebp+FFFFFF04], FFFF



    а второй аргумент как раз результат сравнения vbaVarCmpEq,

    но почему-то когда моя строка пустая, то все равно False.

    Может в Васике есть какой-то хитрый фокус - специальное обозначение пустой строки в виде последовательности байтов.
     
  11. merad

    merad New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    8
    Проблема разрешилась! С какого-то хрена SmartCheck иногда при работе с типом Variant содержащим строковое значение

    показывает что это дескать пустая константа(Const "").

    Поэтому-то меня и сбила с толку логика проги.

    Это че баг типа чтоли? у меня версия SmartCheck 6.20 RC2.

    Как лечить? Ща попробую в другой ОСи.



    ПЫСЫ Кейген вот-вот выйдет, теперь использую только ИДУ!
     
  12. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > ПЫСЫ Кейген вот-вот выйдет, теперь использую только ИДУ!



    Кажется для VB появился декомпилятор, вот только я не знаю что он умеет, можно почитать соответствующий топик на exetools..

    _http://www.exetools.com/forum/showthread.php?t=4912
     
  13. merad

    merad New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    8
    Все! Кейген готов кому надо - обращайтесь!

    Asterix

    Спасибо за сцыль. Посмотрел я. Да автор декомпилятора широко размахнулся, дай бог ему энтузиазма. В настоящий момент native код не поддерживается, только формы выдирает, да и с p-code с горем пополам, но это только пока :)