Сейчас на форуме: Magister Yoda, vasilevradislav (+5 невидимых) |
eXeL@B —› Крэки, обсуждения —› Первая боевая вылазка и фейл... |
Посл.ответ | Сообщение |
|
Создано: 14 марта 2016 23:39 · Личное сообщение · #1 Добрых суток Вам, Начал я по-тихоньку увлекаться крэкерством, всмысле не крэкеры кушать, а софтину лечить, и вот какая штука, смотрю смотрю я все гайды, читаю статьи, по крэкингу, ассемблеру (хотя в целом по нему знания есть), снятию защит и все вроде понятно и получается справляться с крэкми различными и я решил попробывать себя на боевом так сказать фронте. Выбрал я один видео-конвертер, он не запакован, да и исследуется не сложно. И так сама софтина Вот что я расскавырял: Защита находится в модуле - imfc0.dll. Проверка ключа начинается вот по этому адресу - 1008D570 (Offset - 8C970). Условный переход который идет после проверки находится по адресу - 1008D5BE (Offset - 8C9BE). Я как новичок конечно же заюзал битхак, и получил долгожданное сообщение о том что все хорошо и программа зарегистрирована...но, если перезагрузить программу, то все встает на круги своя, а в реестре (HKEY_CURRENT_USER\Software\Xilisoft\Video Converter Ultimate\RegInfo) в ключе Serial - null. Ок, думаю я, наверное функция проверки регистрационных данных (1008D5B7) которая находится в функции проверки ключа (1008D570) используется еще где-нибудь. И да, точно,таких мест много, однако не одно из них не вызывается при старте программы, а соотвественно не влиет на то что программа не излечилась. И тут, я решил разобраться в алгоритме генерации ключа, да что там, хотя бы найти ключ для своего имени, основываясь на том что во-первых во всех статьях говорят что битхак для нубов, а во-вторых это сулит безаговорочную победу над данной защитой. Шли дни...и я понял что без чьей либо помощи мне не обойтись. Поэтому я тут. У меня огромный стаж в разработке программ и игр, удовлетворительные знания ассемблера. Но с реверс инженерингом не все так просто как я думал. Друзья, объясните, можно сухо ткнуть в адрес и сказать что я нуб раз не увидел этого, ибо я не вижу. Однако если есть желание написать статью, что ж, нижайший поклон до земли, буду читать взахлеб. Использую x32dbg. Да на всякий случай, подчеркну, что кряк уже есть для этой софтины, но мне он не интересен, я даже его не качал чтобы не спойлерить, тут чисто спортивный интерес Думаю Вы понимаете ;) Хорошего настроения! ЗЫ сори если промахнулся веткой, не ругайте, я тут еще не освоился пока что. |
|
Создано: 14 марта 2016 23:55 · Личное сообщение · #2 |
|
Создано: 15 марта 2016 00:28 · Личное сообщение · #3 Пару хинтов: 1. Возьмите ИДУ и сразу станет легче. 2. Анализировать проверки гораздо легче при наличии валидной пары. Выделяем ключевые точки. 1. При наличии ключа в вашем примере сразу бы стали понятны параметры [ASM].text:1008D68F call ?ReadEncryptString@regLib@@QAE_NABVQString@@AAV2@@Z ; regLib::ReadEncryptString(QString const &,QString &)[/ASM] а значит, скорее всего, можно было бы использовать ее дополнение "WriteEncryptString" для генератора других пар. 2. Анализируем с конца и смотрим кто формирует ответ ?verifySN@regLib@@QAEHABVQString@@00@Z. Это [ASM].text:1008D6BF call ?olsVerifyAndCollect@regLib@@QAEH_N@Z ; regLib::olsVerifyAndCollect(bool)[/ASM] причем она же используется и в отложенной проверке [ASM].text:1008D6F3 push offset a1on_timerout_v ; "1on_timerout_verify()" ... [ASM].text:100809A7 call ?olsVerifyAndCollect@regLib@@QAEH_N@Z ; regLib::olsVerifyAndCollect(bool)[/ASM][/ASM] которая в свою очередь формирует ответ в [ASM].text:1007EDED call ?on_olsVerifyAndCollect_end@regLib@@IAEHJ@Z ; regLib::on_olsVerifyAndCollect_end(long)[/ASM] которая использует все ту же [ASM].text:1007E4F1 call ?WriteEncryptString@regLib@@QAE_NABVQString@@0@Z ; regLib::WriteEncryptString(QString const &,QString const &)[/ASM] Ну и если уж идти до конца, то видно что основа в [ASM].text:10074EF3 call ?__CS@regLib@@IAE?AVQString@@ABV2@@Z ; regLib::__CS(QString const &)[/ASM] что в свою очередь основано на каком-то симметрике [ASM].text:10072E87 call ??0CARACrypt@@QAE@XZ ; CARACrypt::CARACrypt(void) ... .rdata:100CC018 ; const CARACrypt::`vftable' .rdata:100CC018 ??_7CARACrypt@@6B@ dd offset sub_10001C90 .rdata:100CC018 ; DATA XREF: CARACrypt::CARACrypt(CARACrypt const &)+6o .rdata:100CC018 ; CARACrypt::CARACrypt(void)+2o ... .rdata:100CC01C dd offset ?TransformString@CARACrypt@@UAEXPBDPAD@Z ; CARACrypt::TransformString(char const *,char *) .rdata:100CC020 dd offset ?SetKey@CARACrypt@@MAEXPBD@Z ; CARACrypt::SetKey(char const *) .rdata:100CC024 dd offset ?GetKey@CARACrypt@@MAEPBDXZ ; CARACrypt::GetKey(void) .rdata:100CC028 dd offset ?TransformChar@CARACrypt@@MAEXAAD@Z ; CARACrypt::TransformChar(char &) [/ASM] Ну а собрать это все в кучу уже задача разработчика ))) Добавлено спустя 3 минуты dosprog А где там вторая? Влом было отладкой заниматься.. посмотрел только статикой. ----- старый пень | Сообщение посчитали полезным: vore |
|
Создано: 15 марта 2016 00:44 · Поправил: dosprog · Личное сообщение · #4 r_e пишет: А где там вторая? Влом было отладкой заниматься.. посмотрел только статикой. ..Не запускал вообще - не на чем.. Обычное ж дело - ковыряется проверка введённого ключа на предмет вывода позитивного сообщения. А это совсем не то, что надо. vore пишет: во всех статьях говорят что битхак для нубов ) - Тогда ведь это самое то, что надо? Разве не так? Если можно поправить пару байтов, то зачем лишние сложности? --Добавлено-- Интересно, зачем анонсировано "для Win7"? - Работает под WinXP.. |
|
Создано: 17 марта 2016 00:19 · Личное сообщение · #5 Многоуважаемые r_e и dosprog, спасибо за помощь, особенно r_e, +врепу так сказать. Все получилось. а по поводу битхаков, если честно я думаю именно так же но тут наверное имеется ввиду что чище и приятней для конечного пользователя (если можно так выразится) именно ключ или кейген, чтобы исключить вмешательство в саму программу, ну и спортивный интерес не стоит исключать) хотя вот с этой софтиной явно кейген не напишешь, очень сурово все замудрено, сомневаюсь что кто-то сможет написать... Спасибо! Удачи. |
|
Создано: 17 марта 2016 02:21 · Поправил: dosprog · Личное сообщение · #6 |
eXeL@B —› Крэки, обсуждения —› Первая боевая вылазка и фейл... |