![]() |
eXeL@B —› Вопросы новичков —› Программа с привязкой к железу |
Посл.ответ | Сообщение |
|
Создано: 23 ноября 2009 02:56 · Поправил: Модератор · Личное сообщение · #1 Доброго всем времени суток. Как говориться сразу к делу. Вообщем данная программа по идее привязывается либо к железу либо к cd носителю либо к флеш. Если раскроете архив увидите 2 ini файла Norm.ini и Norm2.ini первый очевидно для флеша второй для железа судя по строчкам [SET] и [COMPUTE] и NormaKey.ini куда заносятся сведения о регистрации. Запустив программу можно поковырять раздел регистрации находящийся во вкладке Помощь. Для регистрации необходимо ввести Номер договора : Pin-код: (начинается с букв NP для этой версии программы) Код: (будет автоматически сгенерирован по Pinу) и Ключ: При нажатии на ОК программа перезапуститься и новые данные впишутся в NormaKey.ini Прежде чем лезть в отладчик откроем программу в Restorator 2007. Т.к. программа написана на Delphi и ничем не упакована в разделе RCData мы можем увидеть интригующие формочики TCODEGENERATEFRM, TEDITPROFUCTFRM, TKEYGENERATEFRM, TKEYMAINTFRM, TFRMREGISTER. С последней кстати нам и придется работать. Открывая в Olly программу сразу смотрим все доступные Text Strings где мы можем обнаружить весьма интригующие записи Code:
Поставим брекпоинт на 2 строчке для NormaKey.ini , т.к. если пройти по 1 адрессу там недалеко начинается некая загадочная функция связанная с TFrmRegister но весьма туманно. Копание в близлежащих к строчке содержащей NormaKey.ini мало что дало....если подняться выше и поставить брекпоинт на саму корневую функцию по адресу Code:
и пошагово пытаться отследить что произойдёт то особого явного эффекта это не даёт, но если дойти до момента когда программа выдаёт сообщение об отсутствии регистрации то можно наткнуть на интересную фукнцию Code:
на которую ссылаются два Local calls from 004A9B3B, 004A9B74 И содержащей строки Code:
и 3 джампа.... Code:
которые управляют выдаваемыми сообщениями noNNRegister noRegister noFoundDoc Если поставить брекпоинт и на 004A93F4 и потом пошагово смотреть что произойдёт то можно наткнуться на Code:
и при дохождения до этой строчки мы будем отправленны на Code:
который достаточно часто используется программой. Непомню на каком шаге и где именно но я откопал что программа оперирует с адресом 009D1F14 в Dump'e , там она хранит сведения из NormaKey.ini при запуске и работы программы можно увидеть что там будет введёный нами ключ. Вот вроде и всё что я умудрился нарыть.....только вот всё равно непонятно что делать дальше =( Посдкажите где зарыта собака! Премного благодарен заранее! P.S. ссылка на саму программку : ПАРОЛЬ: 1 ![]() ![]() |
|
Создано: 23 ноября 2009 17:32 · Личное сообщение · #2 |
|
Создано: 24 ноября 2009 02:49 · Личное сообщение · #3 |
|
Создано: 29 ноября 2009 11:14 · Поправил: Модератор · Личное сообщение · #4 Для начала Большое Спасибо откликнувшимся за помощь! А теперь собственно к делу. Гм....покопался я в этих функциях, но ситуация ещё сильнее усложнилась=( (для мозга). Да там есть процедура генерации ключа по адресу # 0047AC9B CALL 0047AB6C Но изменение значения ESP чтобы # 0047ACA6 JNZ SHORT 0047ACAF сработал ничего не давало...так же как собственно и вообще отключение это функции...конечно наверно многие сейчас посоветуют написать кейген, но на это у меня крайне маловато опыта.... Если я правильно понял то это и есть та функция генерации ключа которую нужно как то оформить....??? Code:
Но вряд-ли всё так просто....проверка не заканчивается только проверкой ключа.....где-то там ещё сидит проверка железа на котором запускается программка 004C36F4 |. FF13 CALL DWORD PTR DS:[EBX] по этому адресу за первым прогоном при запуске запускается функция 00479584 /. 55 PUSH EBP которая обслуживает 004795C3 |. 50 PUSH EAX ; |Section 004795C4 |. E8 FFD5F8FF CALL <JMP.&kernel32.GetPrivateProfileStr>; \GetPrivateProfileStringA поставим бряк и можем видеть все значения которые он будет получать из наших файлов настроек....и следовательно он должен их кому то передать на проверку... Был замечен некий ключ Otl 004C3708 |. B9 883A4C00 MOV ECX,NormaF.004C3A88 ; ASCII "Otl" 004C370D |. BA 783A4C00 MOV EDX,NormaF.004C3A78 ; ASCII "SETUP" Именно этому значению предшествует вытаскивание из Normakey.ini ключа а затем идёт получение информации о носителе 004C3747 |. 50 PUSH EAX ; |RootPathName 004C3748 |. E8 C334F4FF CALL <JMP.&kernel32.GetVolumeInformation>; \GetVolumeInformationA В стеке можно увидеть Code:
Не помню точно по какому адресу но IDA выдавала мне структуру в которой велось сравнения этих значений и затем редирект на функцию содержащей 004A93F4 /$ 55 PUSH EBP ( функция выдающая ASCII "noNNRegister" и тд ) А да... так же вызвала подозрения функция по этому адресу.....При трейсинге Otl выходил сюда.... 00402BAC /$ 53 PUSH EBX P.S. кстати версия что это версия программы которую я тут выложил для flash носителя оказалась верной! Мне попалась в руки версия для ПК, так там только NormaKey.ini генерируется на диск C:\ и оставляется в C:\Norma\Norma\NormaKey.ini Есть у кого соображения куда двигаться дальше? ![]() |
|
Создано: 01 декабря 2009 11:48 · Личное сообщение · #5 ImpulsEG пишет: Есть у кого соображения куда двигаться дальше? ImpulsEG пишет: Но изменение значения ESP чтобы # 0047ACA6 JNZ SHORT 0047ACAF сработал ничего не давало. Судя по последней фразе стоит сначала изучить матчасть для новичков. Изменение ESP может привести к нарушению функционирования. Нужно научится или пачить проги правильно, либо делать "JUMP" в отладчике в "правильное" место. Про кейген ты на 150% прав, а вот алгоритм генерации за тебя вряд ли кто будет разбирать, а сам ты еще "мало обучен". Как говорил Никулин : "тренируйтесь на кошечках". ![]() |
|
Создано: 01 декабря 2009 12:31 · Поправил: Valemox · Личное сообщение · #6 ImpulsEG пишет: Есть у кого соображения куда двигаться дальше? Судя по тому, чо - если нет перехода по 0047ACA6 JNZ 0047ACAF то надпись "Ключ не соответствует коду" боле не появляетЦа - то ты на правильном пути. Vovan666 же уже подсказал все Vovan666 пишет: 83C4F8 ADD ESP,-8 <- начало процедуры проверки кода Code:
Ну а дальше копай сам ибо tundra37 пишет: а вот алгоритм генерации за тебя вряд ли кто будет разбирать +адын ![]() |
|
Создано: 04 декабря 2009 00:21 · Поправил: ImpulsEG · Личное сообщение · #7 Ну в том то и загвоздка собственно что эта процедура проверки кода ничего не даёт! Там не надпись должна пропасть, а открываться документы должны. Даже если это процедура проверки кода...то код генерируется по Pin-коду и Ключу и должна как то опираться на информацию о железе. И лишь потом ещё где-то проверятся. Т.к. программа перестает работать при копировании её с исходного носителя. Но даже если её удалить с исходного носителя(Флешка) и записать обратно то всё будет работать. Пока мне ни разу не удалось добиться "нормальной" (зарегистрированной) работы программы. ![]() |
|
Создано: 04 декабря 2009 09:53 · Личное сообщение · #8 |
|
Создано: 04 декабря 2009 14:33 · Личное сообщение · #9 |
|
Создано: 04 декабря 2009 16:15 · Личное сообщение · #10 ImpulsEG пишет: Ну в том то и загвоздка собственно что эта процедура проверки кода ничего не даёт! Там не надпись должна пропасть, а открываться документы должны. Так тебе про это и говорят. Замена jump или ESP ![]() ![]() |
|
Создано: 04 декабря 2009 18:09 · Личное сообщение · #11 |
![]() |
eXeL@B —› Вопросы новичков —› Программа с привязкой к железу |