![]() |
eXeL@B —› Вопросы новичков —› вопрос о кряке Restorator'а (2006), патч+кейген, и пару смежных вопросов |
Посл.ответ | Сообщение |
|
Создано: 12 мая 2007 01:30 · Поправил: slackhead · Личное сообщение · #1 Хотелось бы сразу извениться за ламерские вопросы, но в правилах написано что можно задавать любые вопросы в этом разделе :-P Сегодня пол дня просидел пытаясь крякнуть Restorator 2006 так ничего и не сделал. Локализировать защитный код получилось (по крайней мере частично), но что-то сделать больше - нет: утонул в большой куче вложенных функций, работы с сериалом и именем, реверсить все подряд не представляется реальным, и как дальше двинуться не знаю ![]() Если можно я опишу что я делал, а вы говорите что я делал не так, что можно сделать лучше, где об этом прочить, вообщем пенайте\помогайте все кому не лень. Итак поехали. Играюсь с Restorator 2006 v 3.6.0.1534, если у кого нет, вытянуть можно здесь: http://rapidshare.com/files/30795318/Restorator_2006_3.60.1535.rar.htm l http://rapidshare.com/files/30795318/Restorator_2006_3.60.1535.rar.html кста сейчас на этом сайте версия уже новее. Не пакован, написан на делфи. При первом запуске софтина показывает окошко, в котором предлагается ввести name и license key. Бряки на MessageBox который ругаетя неправильной информацией, GetDlgItemText, SendMessage c WM_GETTEXT не дали никаких результатов, тут собсно вопрос как лучше поступить в такой ситуации?(вопрос №0)(кстати интересно как сие действо огранизовать в своей программе(№1)) ваще-то прога написана на делфи, и я знаю что есть декомпилер DeDe но это часный случай, а что если бы прога была написана на чём-то другом.. единственное что пришло в голову(или где-то прочитал не помню) это отыскать в памяти саму строку NAME/KEY и отследить все обращения к ней. Далее.. если в ольке это сделать (поставить бряк на найденную строку в памяти) то во время прорисовки окна обращение к этой переменной произойдёт десяток раз, а до нужного кода мы так и не доберёмся потому что он будет аж после нажатия кнопки, вопрос стостоит в том чтобы активировать бряк после прорисовки но до нажатия на кнопку в приложении. Как это сделать в ольке?(№2) у меня получается замкнутый круг потому что когда я ставлю бряк то естественно активно в этот момент окно отладчика, а чтобы нажать на пимпу в окне приложения нужно активировать окно приложения, а во время активирования опять всплывает отладчик и так по кругу. В прочем проблема решаема если прибегнуть к айсу.. но решаема она опять-же только частично. Дело в том что если ставить бряк на паттерн имени найденый в памяти то отладчик вовсе не всплывёт, т.е. обращение к имени не происходит после нажания на пимпу регистрации. Как такое возможно?(хотелось бы уточнить, комманда сайса s 0 L -1 'NAMENAMENAME', где 'NAMENAMENAME' это именно то слово которое было введено как имя, возвращает всего 1 паттерн, вообще-то он находит 2, но один в самой памяти сайса %), и к нему не происходит обращения, это же как такое ваще возможно???(№3) ) в прочем если проделать ту-же методику с ключем, то можно найти обращение и уже кое за что уцепиться. Теперь ближе к телу. Уцепиться получается за код глубоко внутри user32 по адресу: 77e36157 REPZ MOVSD EDI = 00F3AAA4 в edi в это время адрес на куче, так что он каждый раз разный. Этот movsd копирует в буфер (на кучу) ключь, и делее уже обращается в нему. Т.е. ставим бряк на этот адрес отпускаем отладчик, в следующий раз уже приземляемся в коде программы: 004C19DF |> 8B07 /MOV EAX,DWORD PTR DS:[EDI] 004C19E1 |. 0FB65C30 FF |MOVZX EBX,BYTE PTR DS:[EAX+ESI-1] <<<===--- приземлились тут 004C19E6 |. 80FB 20 |CMP BL,20 004C19E9 |. 76 05 |JBE SHORT Restorat.004C19F0 004C19EB |. 80FB 2C |CMP BL,2C 004C19EE |. 75 10 |JNZ SHORT Restorat.004C1A00 004C19F0 |> 8BC7 |MOV EAX,EDI 004C19F2 |. B9 01000000 |MOV ECX,1 004C19F7 |. 8BD6 |MOV EDX,ESI 004C19F9 |. E8 4E2FF4FF |CALL Restorat.0040494C 004C19FE |. EB 01 |JMP SHORT Restorat.004C1A01 004C1A00 |> 46 |INC ESI 004C1A01 |> 8B07 MOV EAX,DWORD PTR DS:[EDI] 004C1A03 |. E8 A42CF4FF |CALL Restorat.004046AC 004C1A08 |. 3BF0 |CMP ESI,EAX 004C1A0A |.^7E D3 \JLE SHORT Restorat.004C19DF цель этого кода насколько мне удалось выяснить это, вырезать из ключа запятые "," (2ch), пробелы (20h) и символы меньше 20h хотя нафига я так и не понял всё равно в эдит их не введёшь, хотя можно скопипастить, и считается длина нового ключа, потом мы выходим в вызывающую функцию 004C1A4F . E8 0041F9FF CALL Restorat.00455B54 004C1A54 . 55 PUSH EBP ; /Arg1 004C1A55 . E8 72FFFFFF CALL Restorat.004C19CC ; \Restorat.004C19CC <<<===--- отсуда мы вышли 004C1A5A . 59 POP ECX 004C1A5B . 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C] 004C1A5E . E8 492CF4FF CALL Restorat.004046AC ; GET LEN 004C1A63 . 3D AA000000 CMP EAX,0AA ; if < GOTO INCORRECT 004C1A68 . 0F8E 3B020000 JLE Restorat.004C1CA9 тут вот сразу проверяется длина ключа, если она меньше 0хAA то почти сразу выводится мессаджбокс (который кстати не вызывает MessageBoxA\W вовсе) о неправильной информации. Если ключ больше то затем идёт длинные вложенные подсчёты, в которых я совсем потерялся. Вот тут то я и застраял, что дальше делать не знаю, может кто-то подскажет. Ато блин столько провозился уже нехочется останавливаться на пол пути. И вот ещё.. строки которые выводятся мессаджбоксом находятся в ресурсах, функция котрая загружает из ресурсов эти строки распологается по адресу 406530, я конечно могу её пропатчить что-бы она всегда выводила правельный результат, но вот только на этом все мои старания пока и останавливаются, те флаги по которым программа определяет что ключ валидный найти не могу ![]() Такое. Пасиба всем откликнувшимся и не откликнувшимся ![]() другие вопросы: 4) Почему в кряке к софтине используется кейген + патч. Почему именно так? только для того чтобы лицезреть свой ник в владельцах? но зачем тогда патч? с чем связана проблема использования чего-то одного, и если можно дайте плиз линки на статьи по этому вопросу. 5) Существует ли возможность где-то попросить о туториале? ![]() |
|
Создано: 12 мая 2007 03:56 · Личное сообщение · #2 |
|
Создано: 12 мая 2007 20:18 · Личное сообщение · #3 |
|
Создано: 13 мая 2007 04:06 · Личное сообщение · #4 |
|
Создано: 13 мая 2007 15:57 · Личное сообщение · #5 pavka пишет: Какие ты ответы хочешь что бы я тебе показал где патчить? Прости за наглый вопрос, но ты мой первый пост читал? Больше всего интересуют ответы на вопросы №0,2,3 Показывать где падчить мне не нужно. pavka пишет: Там делов сделать универсальный патч пять секунд! Не трогай саму проверку ключа ;) а найди флаг регистрации и запиши туда 1 в принципе патч не есть сама цель, но это лучше чем ничего, потому что на данный момент у меня нет и этого. Раз уж дело пяти секунд, то помоги уж (я наааамного больше времени потратил ![]() Спасибо ![]() |
|
Создано: 13 мая 2007 16:39 · Поправил: AlexZ · Личное сообщение · #6 Господа, а чем так хорош ресторатор, что о нем столько шуму? Или всё только из-за маньяческой защиты? slackhead пишет: комманда сайса s 0 L -1 'NAMENAMENAME', где 'NAMENAMENAME' это именно то слово которое было введено как имя, возвращает всего 1 паттерн, ss вместо s для поиска более чем одного паттерна, если память не подводит (в TWR так точно было). ----- Я медленно снимаю с неё UPX... *FF_User* ![]() |
|
Создано: 13 мая 2007 16:59 · Личное сообщение · #7 |
|
Создано: 13 мая 2007 20:23 · Личное сообщение · #8 ё маё мне кто-нить что-то скажет по теме или нет ![]() AlexZ пишет: Господа, а чем так хорош ресторатор, что о нем столько шуму? Или всё только из-за маньяческой защиты? не знаю, его выбор абсолютно случаен у меня AlexZ пишет: ss вместо s для поиска более чем одного паттерна, если память не подводит (в TWR так точно было). что такое TWR я не в курсе, в айсе ss - работает с символами, s - возвращает первый попавшийся а при следющем вызове s ьез параметров следующтй , s -a .. - все, паттерны, в любом случае к делу это не иммет никакого отношения. pavka пожалуйста перестань говорить теоретически pavka пишет: Можешь цеплятся за что угодно за Наг, если триалка за надписи не имеет значения нага нет пока, просто диалог ввода, как я уже говорил, за надписи зацепиться не получается так как они в ресурсах, т.е. прямых ссылок на надписи в коде нет, процедура ретрайвта строки из ресурсов одна, переменная исходя из котороый ретрайвится ресурс изначально инициализируется ошибкой, поэтому бряк на нё тоже ничего не даёт, за что уцепиться ещё я не знаю, только по этому здесь и пишу pavka пишет: Могу дать тебе генерик патч разберешь сам если хочешь Патчер-кейген у меня есть чем он мне пожет помочь не вижу(кроме алго генерации серийника, но это позже) а что он патчит мне не интересно, интернсно самому найти пожалуйста, если кто-то может, ответьте врозумительно на вопросы №0, №2, №3, теории не нужно спасибо ![]() |
|
Создано: 13 мая 2007 21:09 · Личное сообщение · #9 Патчишь экспоненту на свою и кейгенишь.. все легкоslackhead пишет: 4) Почему в кряке к софтине используется кейген + патч. Почему именно так? только для того чтобы лицезреть свой ник в владельцах? но зачем тогда патч? с чем связана проблема использования чего-то одного, и если можно дайте плиз линки на статьи по этому вопросу. если разложишь мне 1024 бита - я тебе просто кейген сделаю, без патча ----- Тут не могла быть ваша реклама ![]() |
|
Создано: 13 мая 2007 21:42 · Личное сообщение · #10 |
|
Создано: 13 мая 2007 21:43 · Личное сообщение · #11 |
|
Создано: 14 мая 2007 00:48 · Личное сообщение · #12 |
|
Создано: 14 мая 2007 03:46 · Личное сообщение · #13 Sturgeon пишет: Патчится действительно правкой пары байт. Только потом вылазять праблы с с КРК. Пока не знаю как обойти. Там нет ни какой проверки КРК? А траблы вылазят потому что патчишь переходы.... slackhead пишет: нага нет пока, просто диалог ввода, как я уже говорил, за надписи зацепиться не получается так как они в ресурсах, т.е. прямых ссылок на надписи в коде нет Чем тебе помочь? Нага ты не видишь строки в ресурсах! ;) Там уровень сложности как в кракми для начинающих ... slackhead пишет: Патчер-кейген у меня есть чем он мне пожет помочь не вижу(кроме алго генерации серийника, но это позже) а что он патчит мне не интересно, интернсно самому найти Читай внимательней я не говорил о кейгене .. ![]() |
|
Создано: 14 мая 2007 11:19 · Личное сообщение · #14 |
|
Создано: 14 мая 2007 12:40 · Личное сообщение · #15 |
|
Создано: 14 мая 2007 14:20 · Личное сообщение · #16 |
|
Создано: 18 мая 2007 05:35 · Поправил: slackhead · Личное сообщение · #17 |
![]() |
eXeL@B —› Вопросы новичков —› вопрос о кряке Restorator'а (2006), патч+кейген, и пару смежных вопросов |