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

 eXeL@B —› Вопросы новичков —› Альтиус на .NET 2.0 с защитой HASP HL (HASP 5)
Посл.ответ Сообщение

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

Создано: 21 ноября 2009 13:49
· Личное сообщение · #1

Есть некая программа для бизнеса - Альтиус. Написан основной .ехе файл на .NET 2.0 но используется защита HASP5 HL.

Хотел бы узнать у умных людей что там взято от хаспа и реально ли взломать её?
Reflector открывает .ехе основной без проблем, весь код виден.

Помогите чем поправить код и как внести изменения или нужно перекомпилировать ?



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

Создано: 21 ноября 2009 13:52
· Личное сообщение · #2

Как мне сказали, ключ там вставляется один раз, после этого программа работает без ключа. Там 4 вида активации.




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 21 ноября 2009 16:33
· Личное сообщение · #3

romich666777 пишет:
Помогите чем поправить код и как внести изменения или нужно перекомпилировать ?

для рефлектора есть плагин Reflexil, или можно тупо хекс редактором, ну или перекомпилировать да.

-----
zzz




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

Создано: 21 ноября 2009 16:40
· Личное сообщение · #4

Так а к какому месту туда прикручен HASP5 ?
Это же



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

Создано: 21 ноября 2009 17:24
· Личное сообщение · #5

Поставил плагин Reflixir, додумался как подключить, как поправить код, но не пойму, сохранения сразу идут в файл или надо где-то найти кнопку сохранить.

Кто бы просвятил для чего программе нужен драйвер HASP, если ключ вставляется один раз, активирует нужную функцию и вынимается. Или может мне неправильно сказали. Может там куски кода шифрованы по ключу ?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 21 ноября 2009 21:20
· Личное сообщение · #6

Есть кнопка Правка, убедительная просьба ей пользоваться.



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

Создано: 24 ноября 2009 18:32
· Личное сообщение · #7

Кто-нибудь скажет мне, если там HASP HL есть ли смысл пытаться что-то копать ?



Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 28 ноября 2009 22:10 · Поправил: digger70
· Личное сообщение · #8

romich666777 А ты думаешь это можно определить телепатический, не видя самой программы



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

Создано: 29 ноября 2009 12:35
· Личное сообщение · #9

file.qip.ru/file/110055461/ec58e7db/part3.html
file.qip.ru/file/110055463/25686f7/part1.html
file.qip.ru/file/110055465/eb3523c2/part2.html



Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 29 ноября 2009 18:30
· Личное сообщение · #10

romich666777
Я так понимаю, что раз в запросы на взлом разместил, то самому не интересно копать стало.



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

Создано: 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 ( ДемоРежим())
расстроился. ))



Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 29 ноября 2009 20:14 · Поправил: digger70
· Личное сообщение · #12

Ну так уже направление верное, если Hasp эмулировать не хочешь. Одним this.o не отделаешся только - смотри код внимательнее.



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

Создано: 29 ноября 2009 20:49 · Поправил: romich666777
· Личное сообщение · #13

Открыл .ldf и .mdf файлы в Winhex,
if ( ДемоРежим() == true )
поправил на
if ( ДемоРежим() == 0 )

Прога ругнулась на отсутствие ключа HASP, запустилась и написала что мол я версия "Стандарт"

Докопался до того, что с любым логином в SQL базу не пускает )))))

Непонятно, код в рефлекторе нормально можно читать на Си, а править нужно в каком-то безумном IL. Почему прям сишный код нельзя поправить?

Непонятно как добраться до скриптов MS SQL



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

Создано: 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с чтоли ))))))



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

Создано: 01 декабря 2009 10:11 · Поправил: romich666777
· Личное сообщение · #15

Попытки поменять что-либо в какой-либо библиотеке приводят к падению в модуле HASP.OP_lnequality
Похоже он что-то с ключа в этом случае пытается прочитать и обламывается.

У меня прям блог получается тут, разговариваю сам с собой, никто помочь не хочет


Разорбал файл attaching.exe который подключает базу, узнал логин пароль на доступ к базе
builder.UserID = "sa";
builder.Password = "aLTiuS%2005";

Подключил MS SQL базу, открыл таблицы, там есть раздел XML в котором находятся скрипты русские, ясно теперь откуда они берутся. Копаем дальше...




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 01 декабря 2009 12:38
· Личное сообщение · #16

romich666777 пишет:
Попытки поменять что-либо в какой-либо библиотеке приводят к падению

библиотки тоже нетовские? может дело в Strong Name Signature. нужно после изменения убрать подпись с дллки, и со всего остального что эту длл использует.

-----
zzz




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

Создано: 01 декабря 2009 14:47 · Поправил: romich666777
· Личное сообщение · #17

Не, это не SN иначе вообще бы не запустилось.
Библиотеки тоже на дот-нет 2.0

Застопорился пока. Через правку altius.exe кроме режима "стандарт" ничего не могу добиться, активации "Проф" не найду. Правка библиотек приводит к куче ошибок, запуск происходит, но скрипты валятся.

Остается только правка XML скриптов внутри SQL файла, но это уже имхо слишком. Берутся XML скрипты и парсером выполняются. Это ж надо было до такого ивзрата додуматься.


 eXeL@B —› Вопросы новичков —› Альтиус на .NET 2.0 с защитой HASP HL (HASP 5)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати