Как поставить бряк

Тема в разделе "WASM.RESEARCH", создана пользователем elwood, 30 ноя 2008.

  1. elwood

    elwood New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    2
    Доброе время суток, товарищи.

    На днях нашел одну библиотеку для .NET, которая позволяет работать с Bluetooth. Но на сайте можно получить "лицензию", которая действует только 2 недели. В попытках изучения этой библиотеки я пришел к следующему:
    1. Библиотека представляет собой нативные win32-DLL + обертка для .NET Framework (доступны билды для разных версий фреймворка). Обертка вызывает нативную DLL стандартно, импортом [DllImport] + маршалинг данных через InteropServices.
    2. Проверка лицензии происходит как при инициализации лицензии, так и при последующих вызовах (код, отвечающий за корректность лицензии расположен внутри нативной DLL). Суть примерно такова. При инициализации либы программа должна создать свой LicenseInstance (получит хендл) функцией CreateLicence. Далее, необходимо загрузить туда свой код лицензии (текстовую строку) функцией License_LicenseKey(IntPtr licenseHandle, string code). После окончания работы необходимо вызывть ф-ю LicenseDestroy. Как я понял, для одного приложения необходим один валидный проинициализированный экземпляр лицензии. Иначе вызов какой-либо функции из DLL завершится ошибкой с кодом, сообщающем о невалидности выбранной лицензии.
    3. Исходя из этого, модификацию собственно .NET обертки я посчитал бессмысленным. А значит, нужно править DLL или искать способ написать кейген таким образом, чтобы программа работала столько, сколько захочется. Судя по тому, что при проверке лицензии не используется сетевых функций и/или сохранения в реестр (файлы) - правда, на 100% не могу утвеждать этого, но скорее всего именно так - строка лицензии предположительно соответствует дате окончания подписки.
    4. Возможно, на проверке валидности лицензии завязано много функционала библиотеки, поэтому мне кажется, что наименее бескровным способом будет все-таки отыскание алгоритма обработки кода лицензии, а точнее, его реверсинг.

    Собственно, задача уже была ясна, но у меня не вышло сделать одну очень простую вещь, а именно - поставить брейкпоинт на начало этой функции в олли. Под отладкой был дотнетовый пример из комлекта поставки этой же библиотеки. В начале отладки, эта DLL просто не загружена, а когда выполнение программы прерывается на внутреннем исключении (олли останавливается) и я пытаюсь поставить бряк на найденный в Memory адрес функции, ничего не происходит. Видимо, я упустил что-то простое ? Давно не занимался реверсингом, и хотел бы спросить совета, как поступить.

    Сама библиотека находится здесь: http://franson.com/bluetools/download.asp?platform=net

    Заранее спасибо за ответы.
     
  2. Diakon

    Diakon New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2008
    Сообщения:
    27
    Длл может загружаться выполнять функции и выгружаться. Не пробовал отловить момент загрузки длл, а потом уже функцию?
     
  3. elwood

    elwood New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    2
    Ага, спасибо, как раз получилось !
    Поставил в настройках olly - Break on new modules и после загрузки BlueTools.dll нашел и поставил туда брейкпоинты.
    После этого все как надо остановилось на License_Create и затем на License_LicenseKey.
     
  4. Ukrandruha

    Ukrandruha New Member

    Публикаций:
    0
    Регистрация:
    16 мар 2009
    Сообщения:
    1
    Удалось ли вам поломать эту библиотеку? может поделитесь? очень нужно!!!!!