![]() |
eXeL@B —› Вопросы новичков —› Неизвестный код текстовых строк. |
Посл.ответ | Сообщение |
|
Создано: 27 декабря 2012 18:25 · Поправил: KARRAT · Личное сообщение · #1 |
|
Создано: 27 декабря 2012 18:51 · Поправил: Konstantin · Личное сообщение · #2 |
|
Создано: 27 декабря 2012 18:52 · Личное сообщение · #3 |
|
Создано: 27 декабря 2012 19:53 · Личное сообщение · #4 KARRAT Шутник, посмотрел строки в софте и типа справился, молодец. ![]() Для примера, есть строка: Code:
Сможешь угадать что там? А алгоритм, прост, как пять копеек, причем из реальной программы: Code:
Вот и смотри, что делается с текстом, потом пили скрипт который приведет строки к человеческому виду, больше тут советовать нечего или выложи программу и жди доброго человека. ![]() |
|
Создано: 27 декабря 2012 20:07 · Поправил: sivorog · Личное сообщение · #5 а может, это вообще не текстовая строка, а массив (пошифрованных) данных, используемых для проверки на правильность файла лицензии? т.е., текстовые строки, которые есть в теле EXE/DLL, не всегда появляются обязательно именно на экране, в окошках и диалогах. опять же, я гадаю, как боря. Без файла проги невозможно решить проблему. ![]() |
|
Создано: 31 декабря 2012 22:12 · Личное сообщение · #6 |
|
Создано: 10 января 2013 23:47 · Поправил: KARRAT · Личное сообщение · #7 |
|
Создано: 11 января 2013 01:00 · Поправил: tomac · Личное сообщение · #8 KARRAT Во-первых, где софт? Во-вторых, заставить прогу расшифровать все строки можно, но объяснить, как это сделать - сложно, иногда - невозможно. Тем не менее, я попытаюсь. Надо ставить бряки на чтение зашифрованных строк, смотреть, какой код с ними работает, и как расшифровывает. Повторять код со всеми зашифрованными строками. Да, кстати, зачем вам эти строки? Если цель - взлом, совсем не обязательно читать строки. Можно посмотреть, например, какое действие происходит при нажатии Activate, или где происходит вызов CreateFile/OpenFile с именем gat.lic (раз уж вы знаете теперь, что такой файл бывает). ![]() |
|
Создано: 11 января 2013 03:53 · Личное сообщение · #9 |
|
Создано: 12 января 2013 12:30 · Поправил: KARRAT · Личное сообщение · #10 |
|
Создано: 12 января 2013 13:55 · Поправил: gazlan · Личное сообщение · #11 KARRAT пишет: www.mediafire.com Не нашел, как скачать без регистрации - спасибо. Прочтение зашифрованных строк в разделах активации/регистрации подсказало бы В эташе все ваши строки. Процедура дешифрования находится по адресу .4A78F0 - вызывается 41 раз. Встаньте в этом месте отладчиком и смотрите, что получается. Можно подменять адрес строки, чтобы просмотреть их все,. но, обычно, удобнее написать декриптор (на вашем любимом языке - рипнув код из программы), заменить в программе все строки на дешифрованные, а вызов декриптора похерить - будет быстрее работать ![]() целый комплекс создаваемых классов Судя по названию, за лицензирование отвечает всего один. Не хватайтесь за все сразу - дешифруйте строки, все станет намного яснее. ![]() ![]() |
|
Создано: 12 января 2013 13:59 · Личное сообщение · #12 KARRAT пишет: Пробовал найти в программе место выведения таблицы Забыл сразу прицепить - вот еще карты памяти в помощь. ![]() ![]() |
|
Создано: 12 января 2013 15:38 · Поправил: DimitarSerg · Личное сообщение · #13 KARRAT Я вот вообще не понял, зачем зацикливаться на строках Code:
Создаешь файл gat.lic стартуешь прогу - появляется окно с окошком активации, вводишь что-нибудь, исследуешь колл CALL 004C6A14 А там есть что исследовать. Делать это за тебя никто не будет. Как правильно заметил gazlan, класс всего один для лицухи: TLicenceClass ----- ds ![]() |
|
Создано: 12 января 2013 16:46 · Личное сообщение · #14 DimitarSerg пишет: не понял, зачем зацикливаться на строках Очень просто: зашифровав их, автор уже проделал большую часть работы по взлому, отметив флажками участки кода, относящиеся к защите. Остальное уже можно не проверять, положившись на его добросовестность ![]() Что касается файлов лицензий, серийных номеров и проч, то, IMHO, это last resort. Большинство защит подобно брезентовой палатке со стальной дверью. Зачем биться о лобовую броню и ломать защиту в самом укрепленном месте, если, осмотревшись, можно зайти сбоку и проткнуть пальцем брезент? Для примера, распаковщик Ebook Edit Pro (https://ssl.exelab.ru/f/action=vthread&forum=13&topic=16988&page=0) сделан именно так: я вообще не интересовался (и до сих пор не знаю), как там устроена защита паролем, привязка к диску и проч. Ничего из этого не потребовалось - просто обошел кругом "стальную дверь" регистрации и пинком вынес остатки защиты. ![]() |
|
Создано: 12 января 2013 16:57 · Поправил: DimitarSerg · Личное сообщение · #15 Процедура дешифрования находится по адресу .4A78F0 Как-то так: Code:
В основном вызывается decipher(Text,$3D5,$3182,$8C33); А при реге, как я понял, для декрипта содержимого gat.lic уже вот так (Text, 7цифр из поля SERIAL CODE ,$3182,$8C33); Проверил - работает вроде ![]() ----- ds ![]() |
|
Создано: 12 января 2013 17:51 · Поправил: KARRAT · Личное сообщение · #16 |
|
Создано: 13 января 2013 03:18 · Поправил: gazlan · Личное сообщение · #17 На первой картинке обведены 4 параметра, передаваемые при дешифровке первого слова (Activate). У меня под рукой оказалась IDA, но вы можете использовать любой другой отладчик. 8C33, 3182 и 3D5 - это параметры для дешифровки, 4C9020 - адрес зашифрованной строки. Вы можете заменить этот адрес на адрес любой другой зашифрованной строки, но, возможно, при этом потребуется изменить и три первых параметра (смотрим значения в том месте, откуда должна была быть вызвана эта строка). Дешифрованная строка помещается по адресу [ebp+Dst_8] (я переименовал переменные для большей наглядности). На второй картинке видно, что вы можете следить за участком памяти по адресу [ebp+Decrypted_0] (сразу после вызова @LStrCat) и наглядно видеть процесс расшифроки в окне данных внизу. Но, поскольку этих строк много (40+), то лучше написать автономный дешифровщик, взяв за основу код процедуры Decrypt_4A78F0 и выкинув из нее все лишнее. Update: Добавил комментированный листинг IDA и референсный код на С (MSVC/MFC). К сожалению, GUI-аппликация оказалась почти бесполезной, потому что при копировании зашифрованных строк автоматически выполняется конверсия кодировки и результат ничему не соответствует.. Используйте этот код просто как заготовку для декриптора, работающего с HEX-строками. Лучшим вариантом может быть IDA-скрипт или плагин, но есть еще строки, загружаемые из ресурсов или по косвенным адресам, так что без отладчика вам, наверное, все равно не обойтись. http://www.multiupload.nl/2DW9BG2005 Psw: www.exelab.ru ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Неизвестный код текстовых строк. |
Эта тема закрыта. Ответы больше не принимаются. |