![]() |
eXeL@B —› Вопросы новичков —› Альтиус на .NET 2.0 с защитой HASP HL (HASP 5) |
Посл.ответ | Сообщение |
|
Создано: 21 ноября 2009 13:49 · Личное сообщение · #1 Есть некая программа для бизнеса - Альтиус. Написан основной .ехе файл на .NET 2.0 но используется защита HASP5 HL. Хотел бы узнать у умных людей что там взято от хаспа и реально ли взломать её? Reflector открывает .ехе основной без проблем, весь код виден. Помогите чем поправить код и как внести изменения или нужно перекомпилировать ? ![]() |
|
Создано: 21 ноября 2009 13:52 · Личное сообщение · #2 |
|
Создано: 21 ноября 2009 16:33 · Личное сообщение · #3 |
|
Создано: 21 ноября 2009 16:40 · Личное сообщение · #4 |
|
Создано: 21 ноября 2009 17:24 · Личное сообщение · #5 Поставил плагин Reflixir, додумался как подключить, как поправить код, но не пойму, сохранения сразу идут в файл или надо где-то найти кнопку сохранить. Кто бы просвятил для чего программе нужен драйвер HASP, если ключ вставляется один раз, активирует нужную функцию и вынимается. Или может мне неправильно сказали. Может там куски кода шифрованы по ключу ? ![]() |
|
Создано: 21 ноября 2009 21:20 · Личное сообщение · #6 |
|
Создано: 24 ноября 2009 18:32 · Личное сообщение · #7 |
|
Создано: 28 ноября 2009 22:10 · Поправил: digger70 · Личное сообщение · #8 |
|
Создано: 29 ноября 2009 12:35 · Личное сообщение · #9 |
|
Создано: 29 ноября 2009 18:30 · Личное сообщение · #10 |
|
Создано: 29 ноября 2009 18:54 · Поправил: romich666777 · Личное сообщение · #11 Эта функция внутри altius.exe public void ProcessHaspCheck() { this.n.Change(-1, -1); if (HaspHelper.HaspHelperInstance != null) { HaspHelper.HaspHelperInstance.Logout(); } else { HaspHelper.HaspHelperInstance = new HaspHelper(); } bool flag = HaspHelper.HaspHelperInstance.Login(Context.CurrentWorkplace.Task); if (!flag) { HaspHelper.HaspHelperInstance.Logout(); } this.o = flag ? 0 : (this.o + 1); Context.IsDemo = this.o > 3; if (flag) { SubVersion.Initialize(Context.CurrentWorkplace.Task); int dBVersion = DbFunc.GetDBVersion(Context.CurrentWorkplace.Task); int taskDatabaseVersion = HaspHelper.HaspHelperInstance.GetTaskDatabaseVersion(Context.CurrentWo rkplace.Task); if (dBVersion > taskDatabaseVersion) { MessageBox.Show(string.Format("Несоответствие версий базы данных ({0,2:00}.{1,3:000}) и ключа HASP ({2,2:00}.{3,3:000}).\nПрограмма работает в ДЕМО режиме.", new object[] { Context.CurrentWorkplace.Task, dBVersion, Context.CurrentWorkplace.Task, taskDatabaseVersion }), "Ошибка ключа HASP", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); HaspHelper.HaspHelperInstance.Logout(); Context.IsDemo = true; return; } } switch (this.o) { case 2: case 3: MessageBox.Show(string.Format("{0}\n{1} через {2} минуты.\nСохраните все несохраненные документы или подключите ключ HASP.", "Ключ HASP не найден или превышено число лицензий.", "Программа будет переведена в ДЕМО режим.", 4 - this.o), "Ошибка ключа HASP", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); break; case 4: MessageBox.Show(string.Format("{0}\n{1}", "Ключ HASP не найден или превышено число лицензий.", "Программа работает в ДЕМО режиме."), "Ошибка ключа HASP", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); break; } if (Context.IsDemo) { SubVersion.ClearState(); } this.n.Change(0xea60, 0xea60); } Что если я пункт THIS.O сделаю = 2 ? В файле altius_data.mdf нашел if ( ДемоРежим()) Сообщение( 'Эта функция доступна только в версии "Проф" (при наличии модуля "Документооборот")') Декомпилировал .ехе, скомпилировал. Запускается без проблем. Осталось понять как этот бредовый IL код править. Через VS2005 открыл SQL базу данных, вижу функции. Пытаюсь что-то найти. Пробежался бегло по функциям, не нашел никаких if ( ДемоРежим()) расстроился. )) ![]() |
|
Создано: 29 ноября 2009 20:14 · Поправил: digger70 · Личное сообщение · #12 |
|
Создано: 29 ноября 2009 20:49 · Поправил: romich666777 · Личное сообщение · #13 Открыл .ldf и .mdf файлы в Winhex, if ( ДемоРежим() == true ) поправил на if ( ДемоРежим() == 0 ) Прога ругнулась на отсутствие ключа HASP, запустилась и написала что мол я версия "Стандарт" Докопался до того, что с любым логином в SQL базу не пускает ))))) Непонятно, код в рефлекторе нормально можно читать на Си, а править нужно в каком-то безумном IL. Почему прям сишный код нельзя поправить? Непонятно как добраться до скриптов MS SQL ![]() |
|
Создано: 30 ноября 2009 16:49 · Поправил: romich666777 · Личное сообщение · #14 Если в функции ProcessHASPcheck вместо this.o = flag ? 0 : (this.o + 1); -------- ldc.i4.1 sub -------- пропатчить чтобы было this.o = flag ? 0 : (this.o - 2); -------- ldc.i4.2 sub -------- тогда проверка switch (this.o) { case 2: Выполнится нормально и пропустит наги раздражающие. То программа запускается молча в режиме "Стандарт" и нигде не чертыхается что оно демо, даже HASP драйвера не ставил я. Ща буду искать где версию поменять, чтобы она стала думать, что она "Проф" Слабо верится что HASP5 там для того, чтобы пару бит менять и запускать прогу по нужному направлению. В MS SQL базе миллион скриптов натыкано, где проверяется версия. Буду думать как до них добраться. Никак не пойму что за язык такой внутри sql баз используется (файлы .ldf и .mdf) вот несколько вырезок 1. if ( GetProgFlags( 9) > 0 ) { ПерГлобЗап( 'ВерсияПрограммы', _Версия_ДокументоОборота + Вер); ДокНаГлавнойФорме('ЗаставкаДокументоОборота'); } // Вешаем таймер на сообщения, высылаемые пользователями ТаймерСтоп('СообщПоВрем'); 2. if ( ДемоРежим() == true ) Вер = 'Демо' else Вер = 'стандарт'; Че за скрипты такие, которые можно по-русски в SQL базе писать? 1с чтоли )))))) ![]() |
|
Создано: 01 декабря 2009 10:11 · Поправил: romich666777 · Личное сообщение · #15 Попытки поменять что-либо в какой-либо библиотеке приводят к падению в модуле HASP.OP_lnequality Похоже он что-то с ключа в этом случае пытается прочитать и обламывается. У меня прям блог получается тут, разговариваю сам с собой, никто помочь не хочет ![]() Разорбал файл attaching.exe который подключает базу, узнал логин пароль на доступ к базе builder.UserID = "sa"; builder.Password = "aLTiuS%2005"; Подключил MS SQL базу, открыл таблицы, там есть раздел XML в котором находятся скрипты русские, ясно теперь откуда они берутся. Копаем дальше... ![]() |
|
Создано: 01 декабря 2009 12:38 · Личное сообщение · #16 |
|
Создано: 01 декабря 2009 14:47 · Поправил: romich666777 · Личное сообщение · #17 Не, это не SN иначе вообще бы не запустилось. Библиотеки тоже на дот-нет 2.0 Застопорился пока. Через правку altius.exe кроме режима "стандарт" ничего не могу добиться, активации "Проф" не найду. Правка библиотек приводит к куче ошибок, запуск происходит, но скрипты валятся. Остается только правка XML скриптов внутри SQL файла, но это уже имхо слишком. Берутся XML скрипты и парсером выполняются. Это ж надо было до такого ивзрата додуматься. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Альтиус на .NET 2.0 с защитой HASP HL (HASP 5) |