![]() |
eXeL@B —› Вопросы новичков —› Asprotect 1.2: нужна помощь со stolen байтами |
Посл.ответ | Сообщение |
|
Создано: 19 августа 2007 16:05 · Личное сообщение · #1 Программа (1120 kb): www.criline.com/produkt/csrepl.exe Запакована: Asprotect 1.23RC4-1.3.08.24[1] Перечитал много туторов, вроде все понял. Пробую распаковать, все вроде получается, кроме stolen bytes ![]() Итак: TempOEP: RVA=53f7b1 OEP: RVA=53f7a3 Байты украдены с 53f7a3 по 53a7b1. IAT:RVA=5461b8 Size=8b0 Программа написана на Dephi. У меня мусорный код плучился таким(но этот код наполовину эмпирический, получил, сравнивая код программы запакованной, и моей, распакованной, а также мусорный код, где должны быть stolen bytes.Cкорее всего этот код не верный...): 0053F7A3 > $ 55 PUSH EBP 0053F7A4 . 8BEC MOV EBP,ESP 0053F7A6 53 PUSH EBX 0053F7A7 B8 3CF25300 MOV EAX,CSReplac.0053F23C 0053F7AC 90 NOP 0053F7AD 83EC 18 SUB ESP,18 С такими stolen bytes программа как-то пытается запустся, но виснет. По размеру, в stolen bytes еще должно быть что-то,но я не могу найти, что именно ![]() Если есть возможность, подскажите, как порешать проблему со stolen bytes. ![]() |
|
Создано: 19 августа 2007 17:26 · Личное сообщение · #2 tempread, один из ключей к успеху - это восстановление в распакованой программе значений регистров (и стека соотв.), соответственно запакованой программе на данной инструкции. Т.е. тебе надо пройти спертые байты и подумать, что нужно добавить чтобы в дампе к этой инструкции всё выглядело так же. ----- Я медленно снимаю с неё UPX... *FF_User* ![]() |
|
Создано: 19 августа 2007 19:18 · Личное сообщение · #3 |
|
Создано: 19 августа 2007 20:47 · Личное сообщение · #4 tempread Я особо не проверял,но попробуй вот этот код:
AlexZ пишет: это восстановление в распакованой программе значений регистров (и стека соотв.), соответственно запакованой программе на данной инструкции ...не надо пудрить человеку мозги.Гораздо проще просто просмотреть стартовый код в незащищённых файлах Delphi 6-7, чтобы сложилось некоторое представление,что там должно быть,а что -- нет. Спёртые байты в данном случае попадались все в начале мусорного кода.Первые три команды стоят вместе,и их можно отчётливо разглядеть в определённый момент.Только команда ADD заменена на SUB. Последнюю команду MOV надо проверить -- я мог ошибиться с адресом,который кладётся в EAX. ----- the Power of Reversing team ![]() |
|
Создано: 19 августа 2007 20:49 · Личное сообщение · #5 |
|
Создано: 19 августа 2007 21:05 · Личное сообщение · #6 |
|
Создано: 19 августа 2007 21:25 · Поправил: tempread · Личное сообщение · #7 Hellspawn Я нолики нопами забил ,чтобы удобнее было. А команды ручками вбивал. Я понимаю, что там все украденные байты должны быть восстановлены, ноя не мог понять, где мусор, а где краденные байты. DillerInc Проверил, тот eax=0040713Ch не подходит, а вот если ставлю eax=0053F23C - программа ведет себя, как и раньше - немножко запускается и вылетает. Причем,мне кажется программа не совсем проста - после того, как asprotect ее распаковывает, запускается окошко, где есь три кнопки - зарегистрировать,купить, продолжить. Если нажимаешь "продолжить" - возникает два ексепшена, и после второго запускается программа. В моей распакованной версии,подправив один cmp,я могу тоже окошко получить с кнопочкми купить,продолжить, зарегить. Но когда нажимаю "продолжить" после второго ексепшена возникает третий... А дальше прога вылетает. И я не знаю, виноваты хитрые програмисты. или мои кривые ручки ![]() P.S. Где лежат краденные байты, приведенные DillerInc'ком нашел,хотя для меня загадка, почему именно эти байты нужны, а похожие команды выше по коду,или ниже - нет ![]() P.P.S. После вставки украденных байт, остался один свободный байтик.... ![]() |
|
Создано: 19 августа 2007 21:52 · Личное сообщение · #8 |
|
Создано: 19 августа 2007 23:49 · Личное сообщение · #9 Вот, почитай. Может поможет. http://www.exelab.ru/f/action=vthread&topic=9048&forum=5&p age=-1 Мне помогло ![]() Твою прогу пока не смотрел. Просто информация по снятию Asprotect 1.23RC4. ![]() |
|
Создано: 20 августа 2007 10:49 · Личное сообщение · #10 |
|
Создано: 20 августа 2007 13:11 · Личное сообщение · #11 Итаг задача, сломать сей замечательный продухт: 1. Распаковка: дабы очередной раз позлить паффку распаковываем прогу с помощью stripper_v211rc2 2. Вписываем свое имя на веки: Смотрим лог стрипера и видим Difference at RVA: 00141564 (.data), unpacked - 00 00 00 Difference at RVA: 00141564 (.data), presented - 61 38 b6 То есть по этому адресу надо вбить имя. Прога смотрит, если по этому адресу (b66138) = 0 то прога не зарегана, иначе с регой все ок. Вбиваем туда ссыль на tempread и все, теперь прога перешла в рег. режим. 3. Убираем проверки на распакованность. Ну тут все просто, после наг.скрина идет 4 call: 0053F04A E8 D927F5FF CALL _CSRepla.00491828 0053F04F . E8 5428F5FF CALL _CSRepla.004918A8 0053F054 . E8 7728F5FF CALL _CSRepla.004918D0 0053F059 . E8 BA28F5FF CALL _CSRepla.00491918 Просто ставим RET по указанным адресам, и наслаждаемся отломанной прогой... ----- StarForce и Themida ацтой! ![]() |
|
Создано: 20 августа 2007 13:15 · Личное сообщение · #12 |
|
Создано: 20 августа 2007 15:16 · Поправил: tempread · Личное сообщение · #13 |
|
Создано: 20 августа 2007 17:37 · Личное сообщение · #14 Не могу разобраться, вроде как украденный код верный, создается тред,программа работает. Потом закрываю программу, тред завершается с кодом 0. А потом программа виснет ![]() Maximus А как нашел проверки на распакованость? По какой-то методике,или методом научного тыка? ![]() |
|
Создано: 20 августа 2007 18:17 · Личное сообщение · #15 |
|
Создано: 20 августа 2007 19:23 · Поправил: tempread · Личное сообщение · #16 |
|
Создано: 20 августа 2007 20:00 · Личное сообщение · #17 tempread берешь прот, и ставишь все проверки на дельфи прогу (или берешь готовый вариант в примерах). Потом в отладчике смотришь что куда. По проверкам: Одна пытается прописать в секцию импорта, если не пишется прога распакована. Вторая смотрит что бы ОЕП был кратен 1000, не кратен, прога распакована. Ну и первые две проверяют окружение, если нет определенных значений в ячейках, прога распакована. Стрипер находит проверки по сигнатурам, я не смотрел но может быть сигнатуры есть в чудо-китайском скрипте. Ну и точно сигнатурки есть в инструменте что юзается тут: http://www.exelab.ru/f/action=vthread&forum=1&topic=6315 ----- StarForce и Themida ацтой! ![]() |
|
Создано: 20 августа 2007 20:02 · Личное сообщение · #18 |
|
Создано: 20 августа 2007 23:31 · Поправил: tempread · Личное сообщение · #19 Порешал свою проблему с вылетом программы(после ее закрытия). Проблема была вот тут:
В eax у меня какой-то заоблачный адрес, я этот call занопил - и порядок,мой дамп нормально запускается, и нормально завершается! Всем кто помогал огромное спасибо! Чуток позже,если не появятся новые вопросы(стучу по дереву три раза), тему закрою. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Asprotect 1.2: нужна помощь со stolen байтами |
Эта тема закрыта. Ответы больше не принимаются. |