Сейчас на форуме: _MBK_ (+7 невидимых) |
![]() |
eXeL@B —› Основной форум —› Теперь у меня проблема при распаковке... (EXECryptor) |
Посл.ответ | Сообщение |
|
Создано: 08 июля 2007 01:23 · Поправил: ToBad · Личное сообщение · #1 Это моя первая попытка распаковки. Вдохновился недавним туториалом от RSI и решил учится на EXECryptor-e. Конечно не получилось в итоге, но очень хотел бы узнать свои ошибки. Импорт вроде правильно нашёл и снял… В общем всё мучения заснял и выкладываю: 1) Нахождение импорта (743 Кб): h..p://tobadko.narod.ru/getimp.htm http://tobadko.narod.ru/getimp.htm 2) Дамп и прикрутка импорта №1 (379 Кб): h..p://tobadko.narod.ru/fixdump.htm http://tobadko.narod.ru/fixdump.htm 3) Дамп и прикрутка импорта №2 (447 Кб): h..p://tobadko.narod.ru/fixdump2.htm http://tobadko.narod.ru/fixdump2.htm Всё в архиве (1.5 Мб): h..p://tobadko.narod.ru/all.rar http://tobadko.narod.ru/all.rar Это не туториал, прошу не судить строго, на Оле я ранее не работал и ручной распаковкой не занимался. Подскажите, что делал не так. ![]() |
|
Создано: 08 июля 2007 06:36 · Личное сообщение · #2 |
|
Создано: 08 июля 2007 06:40 · Личное сообщение · #3 |
|
Создано: 08 июля 2007 11:24 · Личное сообщение · #4 RSI пишет: А какая у тебя винда? я там небольшое примечание к ролику написал... Читал примечание. По твоему финальному ролику повторил всё до _lread... Винда XPSP2. Нахождение OEP делал по твоему первому ролику. Amok пишет: ИМХО ты ОЕР не правильно нашел. Выложи прогу, которую распаковываешь. А импорт нашёл и восстановил правильно ? Программу готовл. Размер большой, так что урезаю до минимума. Сейчас проверю на чистой винде и вышлю. Что касается OEP, то как я написал в ролике на этот адрес идёт первый переход из секции протектора в секцию кода, так же этот адрес выдавал oepfinder. Правда у последнего с разными опциями есть несколько вариантов... Кстати, а OEP может же быть изувечен протектором ? Как быть тогда ? ![]() |
|
Создано: 08 июля 2007 13:22 · Поправил: ToBad · Личное сообщение · #5 |
|
Создано: 08 июля 2007 14:15 · Личное сообщение · #6 ToBad Посмотрел твой ролик, ИМХО странно ты определял границы IAT - попробуй прокрути еще пониже может не все нашел... И OEP у тебя сперто, но когда ты на него поятвим бряк и потом перешел, там в стеке был адресс возврата 66BEB5 попробуй перейди туда мож там найдешь спертый код который выполнился ранее. ИМХО с таким OEP которое ты нашел - у тебя прога не запустится. Почитай как PE_Kill восстанавливал OEP, конечно там нет обоснований почему он так делал... З.Ы. слить твою прогу пока не могу, поэтому тока советую... ![]() |
|
Создано: 08 июля 2007 20:39 · Личное сообщение · #7 ToBad Как вариант, посмотри а хватило ли тебе места в старой секции импорта... потому что вчера ковырял прогу, тоже импорт записал на место а нифиги не работало, и тока потом увидел что импорт не влез пришлось в отдельную секцию. И OEP по-любому нужно будет поправить... ( ну типа там "push ebp" и т.д. ) ![]() |
|
Создано: 09 июля 2007 14:21 · Личное сообщение · #8 ToBad в теле распакованной проги есть такой текст - "Borland C++ - Copyright 1999 " поэтому я взял подобный экзешник чтоб посмотреть на oep что получилось в аттаче ![]() ![]() |
|
Создано: 09 июля 2007 15:16 · Личное сообщение · #9 |
|
Создано: 09 июля 2007 16:29 · Личное сообщение · #10 |
|
Создано: 09 июля 2007 19:39 · Личное сообщение · #11 |
|
Создано: 09 июля 2007 19:57 · Личное сообщение · #12 RSI Тогда сформулирую вопрос иначе. Где стоял когда делал дамп и как там оказался? После бряка на _lread, ставлю бряк-на-доступ на секцию кода 0040659D 8945 C0 MOV DWORD PTR SS:[EBP-40],EAX <-- брякаюсь тут 004065A0 FF4D E0 DEC DWORD PTR SS:[EBP-20] 004065A3 6A 02 PUSH 2 004065A5 8D4D F4 LEA ECX,DWORD PTR SS:[EBP-C] 004065A8 51 PUSH ECX 004065A9 E8 EA030000 CALL ZForever.00406998 004065AE 83C4 08 ADD ESP,8 004065B1 66:C745 D4 1400 MOV WORD PTR SS:[EBP-2C],14 Смотрю адрес 00401000 EB 10 JMP SHORT ZForever.00401012 RSI пишет: Оно там не лежало!!! А оно там лежит. ![]() |
|
Создано: 09 июля 2007 20:08 · Личное сообщение · #13 Первая команда OEP в Borland C++ 004015A2 > A1 8B704700 MOV EAX,DWORD PTR DS:[XXXXXXX] я делал так! сначала ищешь строку: 00477000 42 6F 72 6C 61 6E 64 20 43 2B 2B 20 Borland C++ После того как нашел эту строку , XXXXXXXX = смещение от нее + 0x8B. Просто перезапускал и ставил туда бряк на чтение - вываливался в таком месте 006B97FE 8B00 MOV EAX,DWORD PTR DS:[EAX] <- вот это и есть первая команда! 006B9800 E8 D441FCFF CALL ZForever.0067D9D9 006B9805 FD STD 006B9806 3300 XOR EAX,DWORD PTR DS:[EAX] Тут дампил, а потом восстанавливал импорт и TLS - затем открывал в оле и вписывал OEP ( которое восстановил ) Эт часть будет для всех одинакова.... (кроме адресов) 00401000 > EB 10 JMP SHORT unpacked.00401012 00401002 66:623A BOUND DI,DWORD PTR DS:[EDX] 00401005 43 INC EBX 00401006 2B2B SUB EBP,DWORD PTR DS:[EBX] 00401008 48 DEC EAX 00401009 4F DEC EDI 0040100A 4F DEC EDI 0040100B 4B DEC EBX 0040100C 90 NOP 0040100D -E9 94DC4D00 JMP thtml.008DECA6 А вот самое спертое OEP: 00401012 A1 87DC4D00 MOV EAX,DWORD PTR DS:[4DDC87] 00401017 C1E0 02 SHL EAX,2 0040101A A3 8BDC4D00 MOV DWORD PTR DS:[4DDC8B],EAX 0040101F 52 PUSH EDX 00401020 6A 00 PUSH 0 00401022 E8 0BB80D00 CALL <JMP.&kernel32.GetModuleHandleA> 00401027 8BD0 MOV EDX,EAX 00401029 E8 5A690C00 CALL unpacked.004C7988 0040102E 5A POP EDX 0040102F E8 40F10A00 CALL unpacked.004B0174 00401034 E8 57260B00 CALL unpacked.004B3690 00401039 6A 00 PUSH 0 0040103B E8 D86A0C00 CALL unpacked.004C7B18 00401040 59 POP ECX 00401041 68 30DC4D00 PUSH unpacked.004DDC30 00401046 6A 00 PUSH 0 00401048 E8 E5B70D00 CALL <JMP.&kernel32.GetModuleHandleA> 0040104D A3 8FDC4D00 MOV DWORD PTR DS:[4DDC8F],EAX 00401052 6A 00 PUSH 0 00401054 E9 F5BC0D00 JMP <JMP.&cc3250mt.__startup> ![]() |
|
Создано: 09 июля 2007 20:10 · Личное сообщение · #14 |
|
Создано: 09 июля 2007 20:59 · Личное сообщение · #15 RSI пишет: в теле распакованной проги есть такой текст - "Borland C++ - Copyright 1999 " поэтому я взял подобный экзешник чтоб посмотреть на oep что получилось в аттаче Твой аттач - отлично работает ! Насчёт С++ я не понял. Деде простой дамп без импорта и прочего разбирает на раз и по всему что внутри я был твёрдо уверен, что это дельфи. r99 перезалей пожалуйста или скинь мне на мыло: tobadko(сабака)mail.ru - Rar ошибку выдаёт, но zip распаковывает. Или у других всё нормально ? Там 3 файла ? Патчить нужно оригинальный exe или дамп ? Я в своём ролике IAT восстанавливал правильно ? Моя проблема была только в неправильно найденном ОЕП и спёртом коде ? Спасибо всем, что помогли разобраться, что потратили своё время !!! Буду теперь пытаться повторить это сам. Если всё получится, это будет хорошим началом для освоения ручной распаковки. ![]() |
|
Создано: 09 июля 2007 23:59 · Личное сообщение · #16 |
|
Создано: 10 июля 2007 11:35 · Личное сообщение · #17 ToBad Насчет цитаты - ты немного ошибся, это писал r99. Как я заметил DeDE - отлично работает со всеми продуктами Borland ( будь то Delphi или C++ ), поэтому тут особо не определишь разницу. Насчет IAT, там и в моем архиве( и в его тоже) лежит IAT - поэтому можешь сравнить... З.Ы. тока я не понял чей вариант ( мой или r99) у тебя не открывается??? ![]() |
|
Создано: 10 июля 2007 12:18 · Личное сообщение · #18 RSI - сорри за ошибку с цитатой... Твой вариант работает. Насчёт архива r99 я сперва не понял что там. Меня сбила твоя реплика: получилось в 2 раза больше чем у r99, плюс rar писал про ошибку, от того я и переспросил насчёт содержимого архива. В архиве импорт, оеп и патч для снятия антиотладки с exe (как я понял). То есть всё для того, что бы я без проблем сделал дамп. Пока что у меня проблема с Ольгой, мы с ней не работали ранее и я не знаю тонкостей... Сейчас ищу разные сборки и читаю про плаги которые вы то включаете в обсуждениях ExeCryptor-а, то выключаете. Так что пока поиск по форуму... Так же мне не понятен принцип нахождения спёртого кода. Он был в теле программы или его дописывали по аналогии с другими C++ программами ? Или заглянуть нужно было только для того, что бы знать что искать ? ![]() |
|
Создано: 10 июля 2007 12:53 · Личное сообщение · #19 |
|
Создано: 10 июля 2007 14:32 · Личное сообщение · #20 r99 пишет: патч не для борьбы с антиотладкой - а для борьбы с CRC-проверками плюс там и свой код можно вставить (где NOP-ы) Да, я не грамотно выразился... В принципе эту проверку и имел ввиду. Я делал это лоадером заменив: 00670908: 3B45F4 cmp eax, [ebp-0Ch]
Это позволяло мне делать вставки кода в местах типа About или в вызове калькулятора, в общем нужной цели достигал... Но, теперь всё-таки пришёл к выводу, что пора научиться распаковывать... ![]() |
|
Создано: 10 июля 2007 16:35 · Личное сообщение · #21 ToBad пишет: Твой вариант работает. Ну ясно! хорошо что хоть что-то работает... ToBad пишет: Меня сбила твоя реплика: получилось в 2 раза больше чем у r99 Ну просто я посмотрел какое OEP получилось у r99, у него оно обрезано, т.е. выполняется половина команд а дальше он идет в тело криптора где криптор выполнить все остальное, а я все OEP восстанавливал, т.к. хотел отрезать секции криптора, но не получилось... ![]() ToBad пишет: Так же мне не понятен принцип нахождения спёртого кода. Он был в теле программы или его дописывали по аналогии с другими C++ программами ? Я его дописывал по аналогии с прогой скомпиленной таким же компилятором ( почти все функции по сигнатурам совпали - чисто шара). ![]() |
![]() |
eXeL@B —› Основной форум —› Теперь у меня проблема при распаковке... (EXECryptor) |