eXeL@B —› Софт, инструменты —› Распаковка AsProtect на примерах |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 12 . 13 . >> |
Посл.ответ | Сообщение |
|
Создано: 17 января 2007 12:10 · Поправил: Модератор · Личное сообщение · #1 Здравствуйте! Очень прошу, помогите найти или выдайте пжалста из запасов прогу Advanced Archive Password Recovery v.3.00 кто может, очень хочется научиться распаковке, а проги нормальной нет. Далее повтор моего вчерашнего письма(лежит в чужой теме, найти можно в поиске введите: Распаковка ASProtecta - моё сообщение самое свежее) ---------------------------------------------------------------------- ------------------------------------------------------------------ Здравствуйте. Понимаю, что лезу немного не туда, но обсуждения статьи "Распаковка нового ASProtect на примере Advanced Archive Password Recovery v.3.00" автора SergSh на форуме и в поисковике вроде бы не видно(может статья просто древняя), а тут вроде бы тоже у ASR-ра 2-я версия. Суть проблемы: 1 Сам по вашим статьям научился распаковывать ASProtect 1.22-1.23 ,1.23 RC4, 1.24(проги типа Electra, Куриная месть.Первая разборка, скринсейвер и т.д. с затиранием репой краденого начала проги и без). 2 Нужно двигаться дальше и тут с удивлением обнаруживаю, что статей по распаковке версий 1.3-2.0 нет вааще(может я в шары долблюсь, незнаю). Плиз, если можно, то ссылку на подобную статью, а то руководство как починить велосипед есть(1.21-1.22), как починить мопед-есть(1.23 RC4), как починить боинг747 и космический челнок-есть(2.0x-2.12xx и выше). А вот как отремонтировать просто машину нет. 3 Из всех имеющихся статей более всего понятно было у SergSh в "Распаковка нового ASProtect на примере Advanced Archive Password Recovery v.3.00", но тут такой казус. Проискав в инете подопытную прогу версии 3.0 нашел две ссылки, скачал, инсталятор обещал версия 3.0 (как в статье),- в итоге версия 3.01, чем забиты все ссылки на эту прогу в инете и PEID говорит не ASProtect 1.2-1.3 registered(2.0x по словам SergSh),а ASProtect 2.1x SKE. Ну ладно: а)34раз Shift+F9 ставим бряк на ближайший переход внизу, ещё раз Shift+F9, снимаем бряк,ставим на Alt+M на секцию кода(401000), но не снова Shift+F9, как в статье, а trace into(а то EOP будет на две команды ниже и затруться два Push-а). Останавливаемся на EOP 42A910. Ctrl+A и всё видится чинно и благородно. б)Читаем статейку дальше и пробуем запустить его скрипт(в папку его,в Script , в Олю, в виде txt предварительно). И оля повисает пробовал подождать 1,5 часа думал это скрипт так долго на более свежей версии ASp-ра трудится(хрен то там:s14. Запущено как положено без бряков и с OEP после trace into и я в plugin->IsDebuggerPresent ->Hide, с полным игнором исключений. в) Руками по его совету IAT пока не пробовал, всё так пока трудно для понимания и непривычно и завтра на работу а уже 2ночи. Граждане, слезно молю дайте ссылку на настоящий Advanced Archive Password Recovery v.3.00, а то шатл починить не могу пока, дайте хоть чертежи к боингу. А если почти серьезно, то научиться распаковывать ASPr до второй версии включительно руками хочется так, что аж эти руки зудят. P.S. Не пинайте сильно за дурацкие просьбы самого маленького. Это первый выход в свет. Начал реверсить 18.12.06 с нуля. Реверсил даже в новогоднюю ночь. Для меня это очень важно(научиться распаковывать)! |
|
Создано: 18 февраля 2007 07:47 · Личное сообщение · #2 Hellspawn фенкс конечно, но я в этом режиме и смотрю(Address with ASCII dump) и только для редактирования дампа перехожу в HEX/ASCII(8bytes). Так что с определением начала у меня всё о'кей. Я в другом попутался, позже сообразил,- я определил начало IAT в дампе как 006E1220 соответственно если за базу брать 00200000, то 00200000+000E1220=002E1220 ,а SergSh взял на один DWORD раньше уж не знаю из каких соображений(может туда нулей хотел понаставить 1 DWORD типа должна IAT либо с одного, либо с двух нулевых DWORD начинаться или ещё чего незнаю). Ну а я неопытный дурень не вижу что всего 4 байта отличие. 006E121C D15B1781 Ѓ[С 006E1220 7C91188A Љ‘| ntdll.RtlDeleteCriticalSection Но вот к тебе или другим старичкам вопрос: а вообще как OllyDump эту базу выбирает(00200000) когда дамп снимает, почему например не 00330000 или не 01000000 там тоже вроде свободное место(если как я думаю из за того, что свободное место нужно в момент снятия). Поясните пожалста физический смысл этой величины 00200000. |
|
Создано: 19 февраля 2007 00:40 · Личное сообщение · #3 Млин, огромное сорри перед всеми за давнешний мой просчёт! Если кто следил за топиком с самого начала, то помнит, что у меня не шёл скрипт для восстановления IAT от SergSh, так вот причина вот в чём. Я тогда ещё зеленее чем счас был и смотреть то скрипт смотрел, данные подставлять то свои об начале там и конце там и т. п. подставлял а вот догадаться проверить кол-во байт от начала функи VirtualAlloc до её RETN не догадался и принял вбитое там 17 за данность, а вчера в похожем скрипте от этой проги, которая сейчас догадался проверил и вбил реальное 19. А вечером вчера думаю как это так волшебным образом скрипт похожий пошёл иотработал на ура. А сейчас глянул на старый, а там 17 и мне всё стало ясно. Сейчас проверю, но уже уверен. Сорри, сорри |
|
Создано: 19 февраля 2007 12:23 · Личное сообщение · #4 Барахтался весь вечер и столько, что сейчас не опишу. По порядку. 1 Ну открыть в лорд-пе вчерашний дамп и впарить туда нью секшен с теми характиристиками как у Сержа не составило труда, аналогично не забыл переправить OEP под будущую новую секцию(003B628F). 2 Прошёлся под руководством Сержа с VOEP по процедуру(виртуальной машины) и по необходимое место где выясняется переходник, который вместо этой процедуры будет. Соответствующий txt см. в аттаче поста 3 Создал сам txt скрипт и поменял исходя из своих данных его переменные. Соответствующий txt см. в аттаче поста. 4 Перегрузил в Оле исходный файл и вчерашним скриптом(с моими данными см аттач на стр4 топика) вышел к VOEP не забыл снять бряк на ней(так как писано скрипт запускать без бряков). Каспер отключен 5 Самое интересное- попробовал запустить скрипт. 9раз полюбовался на ошибку "Unable to read memory of debugged process. Breakpoint at 00000000 is deleted" . Затем вообще на "передайте макрософт сведения об этой ошибке(см. в аттаче скрин где эта ошибка на фоне лога)После чего оля рунинг уже час причём не хило рунинг в диспетчере видно пашут два процесса процентов по 48-50 каждый оля и иконлове. Причем окно оли не виснет, всё доступно. Чо за хрень в аттаче мой вариант скрипта где начальные данные правильны(исследование их приведено в аттаче я уже писал) Единственное число которое я косвенно догадываюсь , но не уверен полностью 007B6000. И то я думаю так будущая секция которую в лорд-пе создали начинается по адресу 003B6000 ну видимо и плюс сюда нормальная база большинства файлов 00400000 и всё нормалёк. С той частью про которую писано, что и без неё работать будет я ещё не разбирался, может я ошибаюсь, но вроде там ничего с моей стороны задавать не надо. SergSh и другие старики может на вскидку видно в чём ошибка или кто аттач не поленится и посмотрит. Bronco прога то поинтересней предыдущей(с VM) может загрузишь тоже и дашь какие нить советы! 2536_19.02.2007_CRACKLAB.rU.tgz - начинаем мусолить VM.rar |
|
Создано: 20 февраля 2007 02:58 · Личное сообщение · #5 |
|
Создано: 20 февраля 2007 06:33 · Личное сообщение · #6 SergSh на Секцию то ты нарисовал, а физически с помощью НЕХ-редактора ты её создал? для меня как для трудного обьясни что ты имел ввиду и как это делается(это тоже как то в лорд пе надо делать??? или иначе) Пока не понимаю так как в других статьях не попадалось мне этого действия - "физически спомощью HEX-редактора создать секцию." |
|
Создано: 20 февраля 2007 08:49 · Личное сообщение · #7 |
|
Создано: 20 февраля 2007 09:00 · Личное сообщение · #8 |
|
Создано: 20 февраля 2007 09:12 · Личное сообщение · #9 |
|
Создано: 20 февраля 2007 09:49 · Личное сообщение · #10 SergSh,gegter фенкс мужики как раз вовремя написали. Мне как раз нужно сейчас куда то девать то, что восстановилось после работы скрипта по восстановлению JMP и Call в секции 010C0000, того, что вчера не получался. Млинн и опять я опростоволосился вчера. Представляете вся причина неработы была в том, что забыл отключить монитор касперыча. НЕТ этож нада бряк на VOEP не забыл снять после работы скрипта, по прохождению туда, учёл все адреса в самом скрипте по восстановлению, всё переправил как нада, ну всё и такую мелочь зеванул Счас со свежей головой сел всё снова проверил не успел даже мяу сказать как Восстановление call и JMP завершено успешно. Проверил ручками, точно адреса переходов скрипт восстановил верно!(ну я не много 3 штуки проверил всего их вчера было 39 я аттачил в папке во вчерашнем посту вызовы всех процедур в секции 010С0000) gegter SergSh Очень важный для меня вопрос общего плана: нет у вас ссылок на какие нить туторы типа учимся писать скрипты или там проходим язык скриптов, или синтаксис языка скриптов и т.д. и т.п. Я так то вижу что это типа асма(я его немного знаю и книжек пара тройка дома, но многие команды, ликсемы или как там их звать явно не из асма,- по крайней мере их нет в моих асм книгах) Я так понимаю, что писать скрипт можно только понимая все команды, а не понимая половину и половине догадываясь. |
|
Создано: 20 февраля 2007 09:53 · Личное сообщение · #11 |
|
Создано: 20 февраля 2007 10:15 · Личное сообщение · #12 |
|
Создано: 20 февраля 2007 11:49 · Личное сообщение · #13 Млинннн! В винхексе по адресу 003B6000 висят какие то апи функи и нулей туда ставить пока в этом варианте себе дороже(это гдето до адреса 003B6300). А причина стала ясна как божий день в лорде видно при добавлении секции NewSec 12кило заполненной нулями(создана в винхексе), что секция перед присоединяемой - .mackt не 00004000 как у Сержа, а 00005000. Короче секция лезет одна на другую Это вот то самое что вызвало у меня недоумение когда я в импректе увидел большую длину IAT чем у Сержа см. аттач "по вопросу.rar" От млиинннннннн !!!!!!! Завтра по новой попробую импорт восстановить, а то всё сместить и в скриптах, и в вычисленных адресах, как я понимаю не прабл, но вдруг ещё позже какой нить косяк ещё вылезет связанный с этим. |
|
Создано: 21 февраля 2007 11:34 · Личное сообщение · #14 Вот мляддьь, никак не удаётся привести импотр к размерам SergSh ну и соответственно секцию с импортом к 4000(у него она в импректе на выходе 39DA у меня в районе 4400-44A5,- млять поэтому на выходе и 5000 становится(видимо он автоматически резервирует до полной тысячи шестнадцатеричной). Причем млядина чем цивильней секцию вдампе делаешь тем меньше функций определяет в импректе(на несколько штук) уже попробовал отдельно и как писано Сержем 1.22 обработать и 1.23 плагами один хер размера секции 39DA не добиться. Придётся все последующее менять на штуку больше и надеяться, что это никаким боком дальше не вылезет! |
|
Создано: 22 февраля 2007 13:12 · Личное сообщение · #15 Всем в офтоп меня не нускают нужно 20 пунктов. Я знаю что счас меня вздрючат модераторы. Но не могу не поздравить всех с днём Российской армии и военно морского флота! С праздником! Все кто служил поймут меня. P.S. после профсоюзного вечера пробовал ещё раз править импорт ни хера всё также под таким газомь(0,5 на рыло) править IAT не по приколу). Всем сорри такой день, как отрезвею всё отработаю сполнаю. |
|
Создано: 24 февраля 2007 02:41 · Личное сообщение · #16 Всем привет! Продолжим. Наконец я воткнулся так, что и незнаю как правильно. В идеале было бы хорошо чтобы SergSh прочитал это сообщение, так как у него есть готовый файл этой версии и он может посмотреть как должно быть. Ну если кто-то из стариков присоединился к этой распаковке и даст совет буду только рад. По порядку. 1. При своих попытках привести размер импорта к размеру SergSh были созданы 3 базовых файла а) В точности как делал b]SergSh[/b] с скриптом до VOEP и скриптом восстановления IAT. Но не восстанавливал нули между слипшимися функами с разных библ, далее в импректе как делал он. б) С скриптом до VOEP и скриптом восстановления IAT, а затем полностью и очень тчательно поправил IAT после скрипта(нули между функами из разных библ, по два даблворда нулей в начале и в конце IAT, убрал 2 функции якобы из системных библ но к которым из тела проги нет ни одного вызова). В импректе как у него + прогон через все плаги по Аспру. в) Промежуточный вариант с скриптом до VOEP и скриптом восстановления IAT. Правил ручками только слипание разных библ. В импректе как он. Дальнейшую работу попытался провести для чистоты с файлом а). В скрипте по восст. каллов и джеемпе виртуальной машины помимо того что вы видели из аттача исправил также начало создаваемой секции с 007B6000 на 007B7000(причину я уже объяснял из за большего чем у сержа импорта 4420 вместо 39FC,-не помню точно где тотак, у меня секция импорта тянется до 003B7000 и налазит на новую если пытаться всунуть в лорд-пе по адресу как у сержа). Дальше по писанному создал в хеквьюве секцию 12 кило(3000б) с нулями, зарезирвировал в лорд-пе нью секшен на адрес 003B7000, переправил точку входа 003B728F. Впарил секцию с нулями на резервированное место. После работы скрипта по восст калл и джеемпе сделал дамп региона и через вьювер впарил его на место нулей в дамп нашей проги. Внимание! Для таких, как я не забудте в хексвьювере сменить режим реад онли, а то будете довольно долго думать почему это вьвер не хочет код вставить из сдампленного региона в прогу и какого ещё хера ему надо. А вот теперь самое интересное. Грузим в олю наш дамп и падаем, но не на 00403ВВ0 как писал SergSh , а судя по стеку 00405C7A |. 53 PUSH EBX 00405C7B |. E8 BCB6FFFF CALL damp_ico.0040133C 00405C80 |. 8945 F4 MOV [LOCAL.3],EAX =================вот здесь мы упёрлись 00405C83 |. 837D F4 00 CMP [LOCAL.3],0 Смотрим что было в оригинале 00405C7A 53 PUSH EBX 00405C7B E8 BCB6FFFF CALL icolover.0040133C 00405C80 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX ===вот так это выглядит в исходном если 00405C83 837D F4 00 CMP DWORD PTR SS:[EBP-C],0 дойти до VOEP Пробуем вбить что надо ни хрена идём по 0040133C и видим там 00401334 $- FF25 30287B00 JMP DWORD PTR DS:[<&kernel32.GetModuleHandleA>] ; kernel32.GetModuleHandleA 0040133A 8BC0 MOV EAX,EAX 0040133C $- FF25 74126E00 JMP DWORD PTR DS:[6E1274] ----------ВОТ ЭТО МЕСТО! 00401342 8BC0 MOV EAX,EAX 00401344 $- FF25 38287B00 JMP DWORD PTR DS:[<&kernel32.GetStartupInfoA>] ; kernel32.GetStartupInfoA 0040134A 8BC0 MOV EAX,EAX Пробуем из исходного в ручную добыть адрес(с бряками на VirtualAlloc и на секции кода, с нью оригинал хеа) нихрена вылетает . по $+40 и $+2c нет адреса. Грузим базовый файл по варианту б)(см. выше) И видим там идилическую картину 00401334 $- FF25 48287B00 JMP DWORD PTR DS:[<&kernel32.GetModuleHandleA>] ; kernel32.GetModuleHandleA 0040133A 8BC0 MOV EAX,EAX 0040133C $- FF25 4C207B00 JMP DWORD PTR DS:[<&kernel32.GetProcAddress>] -----ВОТ-; kernel32.GetProcAddress 00401342 8BC0 MOV EAX,EAX 00401344 $- FF25 50287B00 JMP DWORD PTR DS:[<&kernel32.GetStartupInfoA>] ; kernel32.GetStartupInfoA Заходим снова в наш экспериментальный дамп с восстановленными виртуальными калл и джеемпе и бьём в ручную по 0040133C------------------> JMP DWORD PTR DS:[7B204C] И что бы вы думали мы наконец по F9 падаем в обещанном SergSh 00403ВВ0 и видим, что всё там так, но (это уже нервное) проходим по 0040133C и видим(я сократил листинг Оли для удобочитаемости) 00401334 $- FF25 30287B00 JMP DWORD PTR DS:[<&kernel32.GetModuleHandleA>] ; 0040133A 8BC0 MOV EAX,EAX 0040133C $- FF25 4C207B00 JMP DWORD PTR DS:[<&kernel32.GetLastError>] -----?????????? ; 00401342 8BC0 MOV EAX,EAX 00401344 $- FF25 38287B00 JMP DWORD PTR DS:[<&kernel32.GetStartupInfoA>] ; 0040134A 8BC0 MOV EAX,EAX ПРИ ЧЁМ ЗДЕСЬ ntdll.RtlGetLastWin32Error КОГДА [7B204C] - &kernel32.GetProcAddress и как такое может быть чтоб по одному адресу определялось 2 функции Затевать целое исследование по этому поводу неохота поэтомуSergSh скажи что там у тебя по этому адресу. Ну можетHellspawn или кто другой знает в чём дело? Зы касперыч во всех случаях отключен был и ничего подозрительного(скрипты работают). |
|
Создано: 24 февраля 2007 02:51 · Личное сообщение · #17 |
|
Создано: 24 февраля 2007 05:07 · Личное сообщение · #18 Не скорее всего kernel32.GetProcAddress. Потому как сейчас прицепил секцию к базовому файлу по варианту б) (см. выше) мало того, что сразу всё падает там где показывал маэстро(SergSh) так ещё и строки, что выше самого вызова процедуры смотрятся куда как более органично(т.е. готовят параметры для передаче функции): 00405C75 |. 68 E45D4000 PUSH damp2_ic.00405DE4 ; /ProcNameOrOrdinal = "GetLongPathNameA" 00405C7A |. 53 PUSH EBX ; |hModule 00405C7B |. E8 BCB6FFFF CALL <JMP.&kernel32.GetProcAddress> ; GetProcAddress 00405C80 |. 8945 F4 MOV [LOCAL.3],EAX 00405C83 |. 837D F4 00 CMP [LOCAL.3],0 00405C87 |. 74 2C JE SHORT damp2_ic.00405CB5 Если сейчас ещё и Серж подтвердит, то напрашивается вывод: Крайне желательно, если не сказать обязательно, нужно после работы скрипта поправить всю IAT ручками от всяческих слипаний, не доверяя это импректу, после чего потерпеть и подождать работу всех плагинов импректа по восстановлению аспротектовых фокусов с функциями. Видимо всё таки один из плагинов каким то неведомым мне способом определил таки GetProcAddress, так как в IAT ни до ни после скрипта нет намека на её адрес. А ручным методом вроде не определяется. |
|
Создано: 25 февраля 2007 12:58 · Личное сообщение · #19 Млинн! SergSh cбрось пожалуйста хоть в виде txt-шки что у тебя получилось после расшифровки скриптом в 2х криптованных секций начиная с адреса 007B1000 по 007B2000 Плииз, да просто плииизище!!!!!!!!!!!!!!!!! Я мягко говоря уже зае..ся в попытке отладить Call EAX. А выглядело это так: 1 как учил Серж меняем количество сработок по адресу 006В64Е8 на 0B01, меняем по адресу 006В6910 на адрес нашей первой восстановленной таблицы 00107B00 2 Сначала пытался как серж поставить 2 бряка, потом как пишет Лучше всего установить F2 на адрес 00403ВАЕ и нажимая F9 следить за счётчиком в ЕВХ. Однако видя вылеты не там стал по бряку до ходить до 00403ВАЕ Call EAX а уж затем по F7. Далее привожу, что я записал в txt -типа дневника ПОСЛЕ ЧЕГО НА КАЛЛЕ EAX Я УХОЖУ В ТАБЛИЦУ ПО 007B1000 ДОХОЖУ ДО 007B100F И УЛЕТАЮ СЮДА пускает по Shift+F7,F8,F9 7C90EAF0 8B1C24 MOV EBX,DWORD PTR SS:[ESP] 7C90EAF3 51 PUSH ECX 7C90EAF4 53 PUSH EBX 7C90EAF5 E8 C78C0200 CALL ntdll.7C9377C1 ---------------ПОСЛЕ ЧЕГО ПО F8 СРАЗУ ПРЁТ ОШИБКА МАЙКРОСОФТА, ПОСЛЕ ЧЕГО ПО SHIFT+F8 ПИШЕТ НЕИЗВЕСТНЫЙ ШАГ ПО 010C0675 Добавлю ниже как выглядит с 007B1000 по 007B100F когда иду по F7 007B1000 24 73 AND AL,73 007B1002 40 INC EAX 007B1003 00C0 ADD AL,AL 007B1005 70 40 JO SHORT damp2_ic.007B1047 007B1007 0050 85 ADD BYTE PTR DS:[EAX-7B],DL 007B100A 40 INC EAX 007B100B 0050 82 ADD BYTE PTR DS:[EAX-7E],DL 007B100E 40 INC EAX 007B100F 0004EF ADD BYTE PTR DS:[EDI+EBP*8],AL------ВОТ отсюда и летим 007B1012 40 INC EAX 007B1013 00B8 4E4200B4 ADD BYTE PTR DS:[EAX+B400424E],BH 007B1019 EF OUT DX,EAX ; I/O command 007B101A 40 INC EAX Причём в стеке ничего интересного (падаем вообще не там где по статье надо) Вот весь стек 0012FF88 00403BB0 RETURN to damp2_ic.00403BB0 0012FF8C 0012FFB4 Pointer to next SEH record 0012FF90 00403BBE SE handler 0012FF94 0012FFA4 0012FF98 7C910738 ntdll.7C910738 0012FF9C FFFFFFFF 0012FFA0 7FFDE000 0012FFA4 0012FFC0 0012FFA8 007B7ECB damp2_ic.007B7ECB 0012FFAC 007B7FB4 damp2_ic.007B7FB4 0012FFB0 007B7822 damp2_ic.007B7822 0012FFB4 0012FFE0 Pointer to next SEH record 0012FFB8 00403A34 SE handler 0012FFBC 0012FFC0 0012FFC0 0012FFF0 0012FFC4 7C816D4F RETURN to kernel32.7C816D4F 0012FFC8 7C910738 ntdll.7C910738 0012FFCC FFFFFFFF 0012FFD0 7FFDE000 0012FFD4 805522FA 0012FFD8 0012FFC8 0012FFDC 8647C7A0 0012FFE0 FFFFFFFF End of SEH chain 0012FFE4 7C8399F3 SE handler 0012FFE8 7C816D58 kernel32.7C816D58 0012FFEC 00000000 0012FFF0 00000000 0012FFF4 00000000 0012FFF8 007B728F OFFSET damp2_ic.<ModuleEntryPoint> 0012FFFC 00000000 Всем может кто подербанит прогу из опытных за компанию, сверить бы таблицу 1-ю расшифрованную скриптом, где тож есть ошибка или глюк скрипта, оли, или винды моей. В аттаче папка со скриптом в моих условиях , изучение данных для скрипта с моими адресами, и тхт-шник где я пытался преодолеть проблемму. Млинн, хелп, помогите, ну хоть табличку расшифрованную 1-ю кто нибудь. Таким как я промежуток между предыдущим постом и этим опишу, когда разберусь в чём дело здесь. 5087_25.02.2007_CRACKLAB.rU.tgz - начинаем мучать криптованные куски.rar |
|
Создано: 25 февраля 2007 17:54 · Личное сообщение · #20 |
|
Создано: 26 февраля 2007 11:27 · Личное сообщение · #21 SergSh Респектище, небеса и сообщество обучающихся распаковке Аспра тебя не забудет никогда! Долго был на работе, поэтому только сел и скачал его файл. 1 На основе анализа файла SergSh установлен точный ответ на вопрос ПРИ ЧЁМ ЗДЕСЬ ntdll.RtlGetLastWin32Error КОГДА [7B204C] - &kernel32.GetProcAddress и как такое может быть чтоб по одному адресу определялось 2 функции? Не может быть и нет там действительно 0040133C $- FF25 4C207B00 JMP DWORD PTR DS:[<&kernel32.GetProcAddress>] видимо баг оли(или что ещё скорее импректа) при восстановлении импорта. 2 Опять же на основе просмотра его файла установлено, что по крайней мере начало первой восстановленной таблицы каллов EAX правильно(вот например сверка от 007B1000 до 007B1018) 007B1000 00407324 $s@. damp2_ic.00407324 [МОЁ] 007B1000 00407324 $s@. icolover.00407324[Его] + 007B1004 004070C0 Аp@. damp2_ic.004070C0 ====007B1004 004070C0 Аp@. icolover.004070C0====+ 007B1008 00408550 P…@. damp2_ic.00408550 ====007B1008 00408550 P…@. icolover.00408550====+ 007B100C 00408250 P‚@. damp2_ic.00408250 ====007B100C 00408250 P‚@. icolover.00408250 ====+ 007B1010 0040EF04 п@. damp2_ic.0040EF04 ====007B1010 0040EF04 п@. icolover.0040EF04 ====+ 007B1014 00424EB8 ёNB. damp2_ic.00424EB8 ====007B1014 00424EB8 ёNB. icolover.00424EB8 ====+ 007B1018 0040EFB4 ґп@. damp2_ic.0040EFB4 ====007B1018 0040EFB4 ґп@. icolover.0040EFB4 ====+ Отсюда следует, что рыть надо по прохождению(ибо таблица верна) что то не так интерпретирует эти адреса. |
|
Создано: 26 февраля 2007 11:32 · Личное сообщение · #22 |
|
Создано: 28 февраля 2007 12:04 · Личное сообщение · #23 Всем привет! Времени всё меньше становится даже не поковыряешь. Респект ещё раз SergSh за предоставленный файл. Удалось всё быстро проверить. Была и невнимательность и небольшой сюрприз. Привожу свою запись из типа девника: Точно не так, мало того, что я по невнимательности вбил адрес начала раскриптованной таблицы не по адресу 006B64EC 007B1000 .{. damp2_ic.007B1000 - как надо а по адресу (оттуда первоначально была ссылка на 006В6910) 006В6910 007B1000 .{. damp2_ic.007B1000 - так не надо. Дак ещё пронаблюдал одну очень интересную весч(так и не пойму, кто баги даёт) Вот строка в которой адресуется EAX в моём дампе(на втором круге работы цикла калла EAX) 00403BA0 > /8B04DF MOV EAX,DWORD PTR DS:[EDI+EBX*8] ; damp2_ic.00408550 а вот как должно быть(у SergSh) 00403BA0 > /8B049F MOV EAX,DWORD PTR DS:[EDI+EBX*4] ; icolover.004070C0 Таким образом видим, что даже если я задаю адрес правильно прога у меня прыгает через одну ссылку по адресу. Могу поклясться что никогда в жизни не трогал этой строки. Всё перечисленное исправляем, сохраняем изменения в нашем дампе и наконец-то видим как всё заработало После 12h кругов по Call EAX(с бряком на 00403BAE по F9) наконец плюхаемся по обещанному Сержем 0040A763. Как и советует Серж заходим по F7 в процедуру 0040A75E и видим там вызов куска мяса иначе это не назовёшь из 01130000. Всё от туда сдампил регионом(пе-тулсом) и в WINHEX-се вставил в наш дамп по 007B1880 (благо всего 9С нужно ). Всё, завтра поищу остальные 5 мест прыжков в небо обещанных Сержем. |
|
Создано: 01 марта 2007 11:52 · Личное сообщение · #24 Всем привет! Привожу в аттаче все шесть мест "прыжков в неизвестность". Не думаю, что у кого то их поиск вызовет трудности, но всё же. Лишь два из шести вызвали интерес,- один тем, что его по началу из-за слепленного кода не было видно, другой почему-то без retn в конце. Итак первый(я имею ввиду из интересных): 0040A012 /31906800 DD damp2_ic.00689031 0040A016 |00 DB 00 0040A017 |14 DB 14 0040A018 |01 DB 01 0040A019 . |C3 RETN ===== А вот так запутанно выглядит место вызова на 01140000 или 0040A014 ? 68 00001401 PUSH 1140000 0040A019 . C3 RETN ====этот кусок в оригинале длиной 7Bh в нашем дампе поместил его по 003B1920 после изменения и сохранения выглядит так: 0040A013 90 NOP 0040A014 /$ 68 20197B00 PUSH damp2_ic.007B1920 0040A019 . C3 RETN Второй 0040A028 $- E9 D35FD400 JMP 01150000 ---Вот как без ретурна? В оригинале кусок длиной 91h 0040A02D BE 3229C147 MOV ESI,47C12932 в своём дампе я поместил его по 003B19A0 и рискнул добавить retn, получилось- 0040A028 - E9 73793A00 JMP damp2_ic.007B19A0 0040A02D C3 RETN После чего Все каллы EAX действительно пройдены и у нас то место о котором говорил Серж(где выясняется, что в скрипте нужно изменять флаги) выглядит так: 007B7EB9 84C0 TEST AL,AL 007B7EBB ^ E9 D9FEFFFF JMP damp2_ic.007B7D99 ------------сюда он обращает внимание 007B7EC0 ^ 0F85 99FFFFFF JNZ damp2_ic.007B7E5F 007B7EC6 E9 82020000 JMP damp2_ic.007B814D 007B7ECB C3 RETN Всё спать хочу, как медведь бороться, продолжу завтра. c07d_01.03.2007_CRACKLAB.rU.tgz - находим прыжки в неизвестность.rar |
|
Создано: 02 марта 2007 13:35 · Личное сообщение · #25 Всем привет! Сегодня важный, думаю переломный день в расковыривании аспра подопытной проги! Удалось окончательно поправить JMP и Call-ы в секции VM (у меня это секция 010С0000), применив последнее по статье дополнение SergSh к скрипту по их восстановлению. 1 Проверил как всё это (я имею ввиду флаги влияет на изменения в переходах). Очень подробно смотрите в аттаче(Разбираемся со сменой флагов2.txt) соответствующую часть дневника. 2 Между делом пока ходил по оригиналу туда и сюда манипулируя, как Серж с бряками и флагами, высмотрел все необходимые адреса для последнего куска скрипта. 3 Видоизменил адреса, добавил небольшие коментарии и поставил кусок в нужное место скрипта по восстановлению каллов и джеемпе.(см. в аттаче сам скрипт). 4 После работы скрипта обнаружилось, что из секции 010С0000 он не восстановил 5 JMP(см. в аттаче сравнение под названием Список всех вызовов процедур в секции 010С0000 после работы скрипта.txt) Приведу здесь эти пять сравнительных строк: 010C0FBA CALL 011C0000=====отличие 10C0FBA-10C0000+7B7000=7B7FBA 010C1659 CALL 011C0000=====отличие 10C1659-10C0000+7B7000=7B8659 010C1B14 CALL 011C0000=====отличие 10C1B14-10C0000+7B7000=7B8B14 010C1B40 CALL 011C0000=====отличие 10C1B40-10C0000+7B7000=7B8B40 010C1B4A CALL 011C0000=====отличие 10C1B4A-10C0000+7B7000=7B8B4A После этого видя, что именно по этим адресам дамп падает и что все они лежат задолго до Call EAX, который у нас давно и успешно был пройден в неисправленном дампе, просто взял и по вычисленным адресам надергал нужные адреса из неисправленного(в смысле снеучтёнными изменениями флагов) дампа используя две загруженные ОЛи. Про то, что предварительно я пересохранил винхексом эту исправленную секцию в дамп после работы скрипта- это само собой. Итог радует при дальнейшей трассировке мы падаем как указывал маэстро по 0040405F ------------- CMP CL,BYTE PTR DS:[EDX] Чо то мне нехорошо, глазки повылазили, наверно на сёдня хватит. 5027_02.03.2007_CRACKLAB.rU.tgz - окончательно исправляем Call-ы и JMP.rar |
|
Создано: 03 марта 2007 10:34 · Поправил: Small_S · Личное сообщение · #26 Всем привет! Наконец могу торжественно написать, что мне удалось распаковать IconLover v3.0( под версией ASPra-2.13, да и ещё видимо со всеми прелестями и наворотами присущими этой версии ASPra, написана на Delphi 5 судя по DIE, так как у PEID она не имеет вида после распаковки). Отдельный респект Hellspawn так как DIE работает, а PEID почемуто нет,- то что это делфи нет сомнения её бы EMS Source Rescuer не открывал, ну и SergSh в статье писал. Прога теперь полностью рабоча и открывается, и закрывается, и не виснет! Что интересно, у SergSh распакованный файл оказался немного покрупнее (3,73метра против моих 3,72) Особую радость у меня вызывает то, что китайцем мне не удалось получить работоспособный дамп, а ручками да(ну может я ещё неумею как следует пользоваться китайцем). Ну оставлю восторги. К делу. Как всегда цепляю дневник произведённых действий в виде аттача. Были особенности: 1Не паникуйте при трассировке сначала вылазит окно с триальными днями и только после него найдёте место где происходит первая проверка 006B5FBC /$ 55 ---------------- PUSH EBP Всего же, по крайней мере у меня так, можно поставив как советует Серж бряк на 0046636C по F9 пройти и исправить только 2 проверки(прога запустится), остальные 2 ищем через бинарный поиск(я предпочёл всё исправить, да и Серж об этом пишет). 2Прога и так будет завершаться(не как у Сержа), но я сделал нормальный экзитпроцесс как Серж. А вот просто отследить куда падает при закрытии не удастся, адрес другой, так что идём сразу по адресу 007B736C FFD5 CALL EBP 007B736E - E9 EDA9FFFF JMP damp2_ic.007B1D60 ------------вот делаем наш адрес ссылки на эксит а там адрес в IAT( у меня в IAT kernel32.ExitProcess была) Теперь вопрос общего характера. Меня волнует устойчивость полученного дампа в разных системах, так полученный от Сержа файл у меня не запускается(хотя он видимо тоже судя по адресам изготовлен в XP может, правда c SP1). Я конечно со временем проверю на разных машинах, но у нас на работе у всех XP SP2. |
|
Создано: 04 марта 2007 02:30 · Личное сообщение · #27 |
|
Создано: 04 марта 2007 07:08 · Личное сообщение · #28 Isaev фенкс за то что посмотрел. Слушай, а какие перепутаны местами? У меня всё о'кей вроде, изображения соответствуют назначению. Единственное, что я заметил вчера и с чего немного стал подозревать так это то, что на триальном окне кнопки ок и регистрация периодически меняются местами. Больше никто не пробовал, а то у него то XP SP2(в личке писал), а то пока я найду машину с 2000 или 98 виндой ещё времени пройдёт(на работе тоже только XP)? |
|
Создано: 04 марта 2007 07:54 · Личное сообщение · #29 Da woobsche wse... screen w attache izobrazhenija odni, a hinty wsplywajut sowsem s drugim smyslom... fd43_04.03.2007_CRACKLAB.rU.tgz - quatsch.JPG ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 04 марта 2007 09:51 · Поправил: Small_S · Личное сообщение · #30 Странно у меня, всё вроде нормально! Кто нить из стариков сталкивался с этим раньше, из-за чего это может быть? При распаковке что ли часть адресов в проге привязывается к системе, к конкретному билду, дак не понятно, прога бы просто не работала. Она ж у него работает. Да ещё Isaev, вопрос, ты мой файл файл врубал в папке с его родной версией 3.0, которую Серж в своё время давал или проинсталил последнюю 4.12, которая сейчас на сайте висит? |
|
Создано: 04 марта 2007 10:42 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 12 . 13 . >> |
eXeL@B —› Софт, инструменты —› Распаковка AsProtect на примерах |