Русский / Russian English / Английский

Сейчас на форуме: (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› Asprotect 1.2: нужна помощь со stolen байтами
Посл.ответ Сообщение

Ранг: 159.1 (ветеран)
Статус: Участник

Создано: 19 августа 2007 16:05 New!
Цитата · Личное сообщение · #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.



Ранг: 203.3 (наставник)
Статус: Участник
UPX Killer -d

Создано: 19 августа 2007 17:26 New!
Цитата · Личное сообщение · #2

tempread, один из ключей к успеху - это восстановление в распакованой программе значений регистров (и стека соотв.), соответственно запакованой программе на данной инструкции. Т.е. тебе надо пройти спертые байты и подумать, что нужно добавить чтобы в дампе к этой инструкции всё выглядело так же.



Ранг: 159.1 (ветеран)
Статус: Участник

Создано: 19 августа 2007 19:18 New!
Цитата · Личное сообщение · #3

Совпадения значений регистров я добился. А вот со стеком проблемы, он очень разный в запакованой программе, и распакованной. Стек должен один в один совпадать в запакованой и распакованной програме?




Ранг: 283.6 (наставник)
Статус: Участник
Author of GeTaOEP

Создано: 19 августа 2007 20:47 New!
Цитата · Личное сообщение · #4

tempread
Я особо не проверял,но попробуй вот этот код:


push ebp
mov ebp, esp
add esp, -10h
push ebx
push esi
push edi
mov eax, 0040713Ch ; <-- тут надо проверить


AlexZ пишет:
это восстановление в распакованой программе значений регистров (и стека соотв.), соответственно запакованой программе на данной инструкции

...не надо пудрить человеку мозги.Гораздо проще просто просмотреть стартовый код в незащищённых файлах Delphi 6-7, чтобы сложилось некоторое представление,что там должно быть,а что -- нет.

Спёртые байты в данном случае попадались все в начале мусорного кода.Первые три команды стоят вместе,и их можно отчётливо разглядеть в определённый момент.Только команда ADD заменена на SUB.
Последнюю команду MOV надо проверить -- я мог ошибиться с адресом,который кладётся в EAX.




Ранг: 990.2 (! ! !)
Статус: Модератор
Author of DiE

Создано: 19 августа 2007 20:49 New!
Цитата · Личное сообщение · #5

не качав прогу могу сказать тчо байты какие-то странные???

tempread пишет:
0053F7A7 B8 3CF25300 MOV EAX,CSReplac.0053F23C
0053F7AC 90 NOP


ноп? откуда он тут? посмотри внимательнее...




Ранг: 283.6 (наставник)
Статус: Участник
Author of GeTaOEP

Создано: 19 августа 2007 21:05 New!
Цитата · Личное сообщение · #6

Hellspawn пишет:
байты какие-то странные???

...я ж привёл нормальные байты.

tempread
Возможно,что твой адрес 0053F23C -- правильный.В любом случае проверяй.



Ранг: 159.1 (ветеран)
Статус: Участник

Создано: 19 августа 2007 21:25 · Поправил: tempread New!
Цитата · Личное сообщение · #7

Hellspawn
Я нолики нопами забил ,чтобы удобнее было. А команды ручками вбивал. Я понимаю, что там все украденные байты должны быть восстановлены, ноя не мог понять, где мусор, а где краденные байты.

DillerInc
Проверил, тот eax=0040713Ch не подходит, а вот если ставлю eax=0053F23C - программа ведет себя, как и раньше - немножко запускается и вылетает. Причем,мне кажется программа не совсем проста - после того, как asprotect ее распаковывает, запускается окошко, где есь три кнопки - зарегистрировать,купить, продолжить. Если нажимаешь "продолжить" - возникает два ексепшена, и после второго запускается программа.

В моей распакованной версии,подправив один cmp,я могу тоже окошко получить с кнопочкми купить,продолжить, зарегить. Но когда нажимаю "продолжить" после второго ексепшена возникает третий... А дальше прога вылетает. И я не знаю, виноваты хитрые програмисты. или мои кривые ручки

P.S. Где лежат краденные байты, приведенные DillerInc'ком нашел,хотя для меня загадка, почему именно эти байты нужны, а похожие команды выше по коду,или ниже - нет

P.P.S. После вставки украденных байт, остался один свободный байтик....




Ранг: 990.2 (! ! !)
Статус: Модератор
Author of DiE

Создано: 19 августа 2007 21:52 New!
Цитата · Личное сообщение · #8

DillerInc пишет:
...я ж привёл нормальные байты.


не тебе...

tempread пишет:
P.P.S. После вставки украденных байт, остался один свободный байтик....


насколько я помню, свободных байт быть не должно



Ранг: 105.9 (ветеран)
Статус: Участник

Создано: 19 августа 2007 23:49 New!
Цитата · Личное сообщение · #9

Вот, почитай. Может поможет.
http://www.exelab.ru/f/index.php?action=vthread&topic=9048&forum=5&p age=-1
Мне помогло
Твою прогу пока не смотрел. Просто информация по снятию Asprotect 1.23RC4.




Ранг: 392.8 (мудрец)
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 20 августа 2007 10:49 New!
Цитата · Личное сообщение · #10

tempread stripper_v211rc2 отлично распаковывает эту прогу ;)




Ранг: 392.8 (мудрец)
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 20 августа 2007 13:11 New!
Цитата · Личное сообщение · #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 по указанным адресам, и наслаждаемся отломанной прогой...




Ранг: 392.8 (мудрец)
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 20 августа 2007 13:15 New!
Цитата · Личное сообщение · #12

Итого имеем: Время слома 10 мин.
Результат: rapidshare.com/files/50113822/_CSReplacer1.rar.html



Ранг: 159.1 (ветеран)
Статус: Участник

Создано: 20 августа 2007 15:16 · Поправил: tempread New!
Цитата · Личное сообщение · #13

Попробовал в своем дампе отключить проверку на распакованность, как указал Maximus - программа запускается в Оле, но при закрытии вылетает ошибка. Хочу все таки добить ручную распаковку...



Ранг: 159.1 (ветеран)
Статус: Участник

Создано: 20 августа 2007 17:37 New!
Цитата · Личное сообщение · #14

Не могу разобраться, вроде как украденный код верный, создается тред,программа работает. Потом закрываю программу, тред завершается с кодом 0. А потом программа виснет - читается в eax адрес, потом длается переход по указателю в eax - а там пустота. А в запакованной программе вообще такой адрес в том месте программы не пробегает.

Maximus А как нашел проверки на распакованость? По какой-то методике,или методом научного тыка?




Ранг: 392.8 (мудрец)
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 20 августа 2007 18:17 New!
Цитата · Личное сообщение · #15

Нет, метод научного тыка не рулит.
Нашел где прога вылетает. И посомтрел код. Я уже много порубил аспровых прог, по этому проверки на запакованность узнаю в лицо))... Тем более они всегда рядом в коде находятся.



Ранг: 159.1 (ветеран)
Статус: Участник

Создано: 20 августа 2007 19:23 · Поправил: tempread New!
Цитата · Личное сообщение · #16

А где можно прочитать про типовые проверки на запакованность? Ведь програмисты же где-то этого набираются...

В общем,как я понял, все проблемы у меня из-за шалостей програмистов.

Если не сложно, укажите пожалуйста, что за методы детекта распаковки применяются в этих 4 -х calls.




Ранг: 392.8 (мудрец)
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 20 августа 2007 20:00 New!
Цитата · Личное сообщение · #17

tempread берешь прот, и ставишь все проверки на дельфи прогу (или берешь готовый вариант в примерах).
Потом в отладчике смотришь что куда.

По проверкам:
Одна пытается прописать в секцию импорта, если не пишется прога распакована.
Вторая смотрит что бы ОЕП был кратен 1000, не кратен, прога распакована.
Ну и первые две проверяют окружение, если нет определенных значений в ячейках, прога распакована.

Стрипер находит проверки по сигнатурам, я не смотрел но может быть сигнатуры есть в чудо-китайском скрипте.
Ну и точно сигнатурки есть в инструменте что юзается тут:
http://www.exelab.ru/f/index.php?action=vthread&forum=1&topic=6315




Ранг: 392.8 (мудрец)
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 20 августа 2007 20:02 New!
Цитата · Личное сообщение · #18

Да, еще, это не проделки программистов, проверки на распакованность это проделки самого аспра.



Ранг: 159.1 (ветеран)
Статус: Участник

Создано: 20 августа 2007 23:31 · Поправил: tempread New!
Цитата · Личное сообщение · #19

Порешал свою проблему с вылетом программы(после ее закрытия). Проблема была вот тут:

00404806 MOV EDI,Dumped_.00544634
0040480B MOV EAX,DWORD PTR DS:[EDI+8]
0040480E TEST EAX,EAX
00404810 JE SHORT Dumped_.0040485A
00404812 MOV EBX,DWORD PTR DS:[EDI+C]
00404815 MOV ESI,DWORD PTR DS:[EAX+4]
00404818 XOR EDX,EDX
0040481A PUSH EBP
0040481B PUSH Dumped_.00404846
00404820 PUSH DWORD PTR FS:[EDX]
00404823 MOV DWORD PTR FS:[EDX],ESP
00404826 TEST EBX,EBX
00404828 JLE SHORT Dumped_.0040483C
0040482A DEC EBX
0040482B MOV DWORD PTR DS:[EDI+C],EBX
0040482E MOV EAX,DWORD PTR DS:[ESI+EBX*8+4]
00404832 TEST EAX,EAX
00404834 JE SHORT Dumped_.00404838
00404836 CALL EAX ======================>Проблема!
00404838 TEST EBX,EBX


В eax у меня какой-то заоблачный адрес, я этот call занопил - и порядок,мой дамп нормально запускается, и нормально завершается!
Всем кто помогал огромное спасибо!

Чуток позже,если не появятся новые вопросы(стучу по дереву три раза), тему закрою.


 eXeL@B —› Вопросы новичков —› Asprotect 1.2: нужна помощь со stolen байтами
Эта тема закрыта. Ответы больше не принимаются.

Видеокурс ВЗЛОМ