Сейчас на форуме: asfa, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› .Net + HASP SL
Посл.ответ Сообщение

Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 марта 2013 14:19 · Поправил: ssliis
· Личное сообщение · #1

Имеется прога на дотнете защищенная HASP ( hasp_net_windows.dll )
Вроде хаспом ничего не зашифровано, обфускатор только на одной длл и тот легко снимается.
Внутри сборки явно читаются классы для работы с лицензиями, например:

Code:
  1. public bool IsLicensed()
  2. {
  3.     if (null == this.m_OpenLicense)
  4.     {
  5.         return false;
  6.     }
  7.     TimeSpan span = TimeSpan.FromMinutes((double) this.CachingTimeSpan);
  8.     if ((DateTime.Now - this.m_LastKeyPresenceCheck) > span)
  9.     {
  10.         return this.IsSessionValid();
  11.     }
  12.     return true;
  13. }


Сборка в MIXED mode и приходится патчить в hex editore, что несколько усложняет процесс но тоже не смертельно.
И вот я уже неделю ковыряю ее в reflektore и патчу, патчу, патчу.... Но результат один - no license found.

В общем перепробовав все что можно закралось подозрение что какие-то куски кода таки зашифрованы хаспом, а я их тупо не вижу. Такое может быть? Как проверить?
И может есть у кого статьи по теме .Net + Hasp?



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 19 марта 2013 14:45
· Личное сообщение · #2

прогони в http://portal.b-at-s.net/download.php?view.53 и смотри что там используется

так же посмотри где и когда используется m_OpenLicense, а лучше пропатч ее, чтоб возвращала что-то положительное, так же и IsSessionValid нужно пропатчить чтоб возвращала true.
Без жертвы трудно что-то сказать.



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 марта 2013 15:18
· Личное сообщение · #3

Трэйсеры вообще ничего не показывают. Пробовал разные.

m_OpenLicense это структура HASP из hasp_net_windows.dll причем если удалить эту дллку то прога запустится все с тем-же - no license found.
А всякие IsSessionValid(), ValidKeyFound(), AnyKeyFound() и прочие похожие функции уже давно возвращают TRUE


Жертва вот - --> Link <-- (157 МБ)
Буду признателен если посмотрите



Ранг: 38.1 (посетитель), 4thx
Активность: 0.030
Статус: Участник

Создано: 19 марта 2013 15:26 · Поправил: nevertime
· Личное сообщение · #4

нужно исходить от no license found

если это месседж то искать где он его вызывает, а там и ясно будет.. имхо

можно проследить по коду с самого старта, это ж не асм думаю не много кода придется полистать



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 марта 2013 15:29 · Поправил: ssliis
· Личное сообщение · #5

nevertime пишет:
если это месседж то искать где он его вызывает


Этим я и занимался всю неделю, но увы

Насколько я понимаю прога стартует с функции wWinMainCRTStartup(); но в reflektore эта функция вообще пустая, а куда дальше смотреть я не знаю ((



Ранг: 38.1 (посетитель), 4thx
Активность: 0.030
Статус: Участник

Создано: 19 марта 2013 23:21
· Личное сообщение · #6

заатачте ехешку отдельно а то 157 мегов не смогу качнуть



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 08:48
· Личное сообщение · #7

nevertime пишет:
заатачте ехешку отдельно


--> Link <-- (1.1 Мб)



Ранг: 4.3 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 09:28
· Личное сообщение · #8

Раз шифрование не используется - не проще ли сделать муль HASP SRM с нужными фичами?



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 09:39
· Личное сообщение · #9

Я не уверен что нет шифрования

IsNull пишет:
муль HASP SRM

А разве это возможно без рабочего ключа?



Ранг: 38.1 (посетитель), 4thx
Активность: 0.030
Статус: Участник

Создано: 20 марта 2013 10:25 · Поправил: nevertime
· Личное сообщение · #10

пока могу предложить открыть ее в ida x64 там можно найти sub_1400056A0 думаю что все что надо в нем.
также по строкам видно что где.

в дот нете я не силен, но походу там на старте _CorExeMain
и она как то по хитрому запускает прогу.. надо разбираться но у меня пока времени нет.

ssliis пишет:
hasp_net_windows.dll причем если удалить эту дллку то прога запустится все с тем-же - no license found.

думаю что длл эта еще в windows есть поэтому и не ругается.

ключик сетевой?



Ранг: 4.3 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 11:00
· Личное сообщение · #11

Возможно. Надо знать правильные номера Products и Features.



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 11:05
· Личное сообщение · #12

nevertime пишет:
sub_1400056A0


Ее я тоже патчил но безрезультатно. Поправьте ели я не прав:
Для проверки я просто делаю безусловным переход но адресу 140005735 после чего при запуске проги я должен увидеть сообщение - "Error reading configuration", но вместо этого я вижу все то же - no license found


nevertime пишет:
думаю что длл эта еще в windows


Нет она только в папке с прогой



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 11:08 · Поправил: ssliis
· Личное сообщение · #13

IsNull пишет:
Надо знать правильные номера Products и Features.


Это вроде этого?
Code:
  1. public enum HaspSRMFeatureId
  2. {
  3.     adv = 0x12,
  4.     advmd = 0x13,
  5.     advpl = 0x15,
  6.     @base = 0x11,
  7.     def = 0,
  8.     EiffelAdvanced = 0x12,
  9.     EiffelAutoCAD = 0x13,
  10.     EiffelMicroStation = 0x15,
  11.     EiffelTRW = 20,
  12.     EiffelViewer = 0x11,
  13.     plant = 20
  14. }


Можно подробнее



Ранг: 4.3 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 11:32
· Личное сообщение · #14

Прога ищет Product 13 , Feature 16 и на выбор 17 - 20 (Base - Advanced).
Еще в RO/RW памяти ключа понадобится прописать правильные значения.



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 11:39
· Личное сообщение · #15

IsNull пишет:
Еще в RO/RW памяти ключа понадобится прописать правильные значения.


Как это сделать без ключа?



Ранг: 4.3 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 11:46
· Личное сообщение · #16

Имелось в виду, прописать не в памяти ключа SL, а в эмуляторе.
Какие значения должны быть в памяти - будет видно после анализа .net кода.

Размер блока данных виден сразу:
Code:
  1.     this.ROMemorySize = 0x12;
  2.     this.RWMemorySize = 8;




Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 11:55 · Поправил: ssliis
· Личное сообщение · #17

IsNull пишет:
будет видно после анализа .net кода.


Только проблема в том, что я не могу найти от куда вылазит гребаный messagebox с no license found, а уж о том, чтобы глядя на код без отладчика понять какие там значения должны быть я и не мечтаю




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 20 марта 2013 13:11 · Поправил: ZaZa
· Личное сообщение · #18

ssliis
А, как вариант, найти описание HASP SDK для разработчика и пойти от нее? Ведь многие разработчики просто используют наработанные и рекомендованные варианты от производителя...
Поэтому так, наверное, проще найти...
Что-то, типа такого: --> Подключение защиты HASP <--
или такого: --> Sentinel HASP Activation API <--

Может в сеть ломится?

-----
One death is a tragedy, one million is a statistic.




Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 марта 2013 15:58
· Личное сообщение · #19

SDK я уже смотрел и даже статью эту на SQL.ru

Мне нужно знать зашифрован он хаспом или нет, может я зря время трачу



Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 21 марта 2013 08:50
· Личное сообщение · #20

почему вы не идете в запросы к специалистам, особенно учитывая явную коммерческую составляющую сабжа?



Ранг: 123.0 (ветеран), 10thx
Активность: 0.060
Статус: Участник

Создано: 21 марта 2013 10:43
· Личное сообщение · #21

Ключ есть к программе? Без него не получится ничего.

-----
.[ rE! p0w4 ].




Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 марта 2013 10:53
· Личное сообщение · #22

Ultras пишет:
Без него не получится ничего.


С чего Вы это взяли?



Ранг: 123.0 (ветеран), 10thx
Активность: 0.060
Статус: Участник

Создано: 21 марта 2013 11:27 · Поправил: Ultras
· Личное сообщение · #23

Потому что сталкивался с HASP .Net Envelope: --> Топик <--

-----
.[ rE! p0w4 ].




Ранг: 4.3 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 21 марта 2013 12:00
· Личное сообщение · #24

В данном случае .net конверты не используются.



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 марта 2013 17:13 · Поправил: ssliis
· Личное сообщение · #25

У меня некоторый прогресс:
Путем долгого патчания удалось победить меседж с no license found, прога при загрузке показывает свой сплэш скрин, несколько секунд грузится, а затем падает

Code:
  1. Сигнатура проблемы:
  2.   Имя события проблемы:    APPCRASH
  3.   Имя приложения: 1111111111.exe
  4.   Версия приложения:       7.2.2.532
  5.   Отметка времени приложения:       512bfa36
  6.   Имя модуля с ошибкой:    MSVCR100.dll
  7.   Версия модуля с ошибкой: 10.0.40219.1
  8.   Отметка времени модуля с ошибкой: 4d5f034a
  9.   Код исключения: c000041d
  10.   Смещение исключения:     000000000003c1c6
  11.   Версия ОС:      6.1.7600.2.0.0.256.1
  12.   Код языка:      1049
  13.   Дополнительные сведения 1:        5845
  14.   Дополнительные сведения 2:        584535d75a6e7b70faa6a95064aed922
  15.   Дополнительные сведения 3:        2984
  16.   Дополнительные сведения 4:        2984a47f223c3fc5a8a8a9824fa21112


Я думаю что это происходит потому, что я много чего занопил и теперь не создаются классы с информацией о лицензии. Соответственно прога пытается к ним обратится за информацией о том какие фичи активированы и на этом падает.

Вот есть некое "Смещение исключения: 000000000003c1c6" можно по нему как то определить в каком классе или методе возникло исключение?



Ранг: 9.2 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 25 марта 2013 15:06
· Личное сообщение · #26

А не проще вернуться к оригиналу и его аккуратно пропатчить только тем что надо.


 eXeL@B —› Вопросы новичков —› .Net + HASP SL
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати