eXeL@B —› Софт, инструменты —› Распаковка AsProtect на примерах |
<< 1 ... 9 . 10 . 11 . 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 с нуля. Реверсил даже в новогоднюю ночь. Для меня это очень важно(научиться распаковывать)! |
|
Создано: 04 августа 2007 22:25 · Личное сообщение · #2 Привет всем. Пока порадовать почти нечем. Была идея загрузить этот файл с вынесенной таблицей импорта в китайский скрипт, а затем подсмотреть как он будет разбираться с необходимостью такого количества свободного места и куда втискает таблицу, однако китаец прогу тоже не осилил. Пишет ещё что неизвестная версия 1.32-2х, хотя Вера говорила 2-2.3. Повозившись ещё с кодом, я начинаю подумывать, а не поступить ли по известной пословице:"Если гора не идет к Магомеду, то Магомед ищет динамит." Завтра попробую переписать всю секцию с таким подозрительным импортом в первую секцию Аспра, вплотную примыкающую к концу проги(благо размер её офигенный 103000, а мне нужно то всего С000, тоесть раз в 20 меньше). В этой секции пару тысяч сначала и несколько сотен в конце какого то кода. Если пустит обязательно там расположусь с комфортом. Затем поменяю все переменные в скрипте так как если бы это была последняя секция проги, а в заключении скрипта поменяю PE-заголовок и тем самым припаяю новую секцию. Я надеюсь дампер его схавает. Я правда не знаю, но думаю, что он PE читает и оттуда берет всю информацию о дампе. |
|
Создано: 10 августа 2007 12:56 · Личное сообщение · #3 Для всех читателей этого топика. Сегодня CrackL@b на http://www.exelab.ru/rar/dl/CRACKLAB.rU_76.rar выложил мою статью по распаковке Asprotect v2.2 SKE. В ней я постарался раскрыть кое-какие вопросы, которые могут быть полезны для юзеров, занимающихся распаковкой Asprotect. Буду признателен за замечания, предложения и пожелания. |
|
Создано: 10 августа 2007 14:12 · Личное сообщение · #4 |
|
Создано: 10 августа 2007 23:21 · Поправил: Small_S · Личное сообщение · #5 vnekrilov респект, как всегда молодчина! Именно этого я и хотел,- чтобы топик постепенно становился центром восстановления пробелов знаний в распаковке Аспров. Несколько уточнений : Поскольку сейчас все начнут изучать статью, то вот ссылка на рассматриваемую там прогу _http://gridinsoft.com/download.php?chmeditor (что то по ссылке которая в статье я ее не нашел, мож в шары долблюсь) Всё таки, по последним данным версия прота навешанного на прогу 1.35 build 04.25 Release (что совсем не умаляет достоинств автора статьи, да и самой статьи)об этом говорит новая, но видимо перспективная прога ASPrINFO v 1.4, берущая данные версии Аспра из самого навешанного прота(не по сигнатурам). Вот перекрёстная ссылка на скачивание последних версий. _http://tlg.1gb.ru/board/showtopic=549&pid=1777&st=0entry1777 Ах да ссылка на ветку, где обсуждается новая тулза: _http://exelab.ru/f/action=vthread&forum=5&topic=9415 Саму статью прочитал частично, из достоинств сразу бросается в глаза доступность языка которым она написана. Более подробно посмотрю завтра. |
|
Создано: 12 августа 2007 22:26 · Поправил: Small_S · Личное сообщение · #6 Привет всем! Применив вот такой незамысловатый код в скрипте я нарастил число секций на одну,общий размер образа, размеры последней секции проги (в заголовке всё это в заголовке) и затем добавил в описание секций, описание самой аспровой секции (виртуальный адрес 00390000, её собственный размер 103000 и попробовал две характеристики F00000E0 //F0000060, имя ей не давал). Дамп, то ещё можно Lord_PE снять(он видит и новую секцию, и новые размеры, и все характеристики), Оллидамп не видит изменений в заголовке и не дампирует. nachalo_sec: mov eip,00400000 find eip,#5045# //находим PE-заголовок cmp $RESULT,0 je no_PE mov addr_PE,$RESULT mov temp2,addr_PE + 6 mov temp3,[temp2] mov [temp2],temp3 + 1 //меняем число секций mov temp2,addr_PE + 50 mov temp3, sec_end + sec_IAT_size sub temp3, 00400000 mov [temp2], temp3 //меняем размер образа GMEMI prog_end -1000,MEMORYBASE mov temp5,sec_end - $RESULT mov temp4, $RESULT - 00400000// find addr_PE, temp4 mov temp2,$RESULT cmp temp4,FFFF jb small_size cmp temp4,FFFFFF jb norm_size sub temp2,2 jmp small_size norm_size: sub temp2,1 small_size: //mov [temp2],temp4 // sub temp2, 4 mov [temp2], temp5 //новый размер бывшей последней секции(была 1000, стала 10000 вплоть до Аспр секции) add temp2, 28 mov [temp2], sec_IAT_size //размер новой последней секции(как и была у Аспра 103000) add temp2, 4 mov temp3, sec_end - 00400000 mov [temp2], temp3 // виртуальный адрес новой последней секции. add temp2, 18 mov [temp2], F00000E0 //F0000060 характеристики новой последней секции взятой у Аспра jmp chistka no_PE: eval "Не могу найти PE-заголовок! Это не PE-файл." msg $RESULT jmp @halt Но вот главная - это попытаться восстановить импорт в импректе. Он как упёртый показывает старый размер образа 281000 вместо 393000 (281000- старые, F000-нарастили бывшую последнюю секцию, 103000-сама последняя бывшая Аспровая секция, а нынче наша последняя секция). Поэтому даже если принудить импрект распознать импорт, загнать OEP и всё такое, он начисто отказывается цеплять импорт к дампу полученному лордом. Пробовал перед этим не трогать нашу бывшую последнюю секцию, а только вносить изменения касающиеся Аспр секции. Дамп прокатывал у оллидампа, импрект восстанавливал и цеплял к дампу импорт, вместо последней секции размером 103000 по адресу 690000, получаем какого то микроба 1000 по адресу 681000(тоесть после окончания проги на 681000 ещё на штуку секция) при этом у дампа в заголовке красуются все требуемые размеры(хрень какая то :s10 Я понимаю, что выравнивание на 1000 стоит, ну дак я во втором варианте продлил последнюю секцию проги на F000 прям до начала Аспровой и аспровая оформлена как последняя родная. Почему Lord_PE дамп на ура снимает, а Оллидамп нет. Аналогично почему Импрект не читает новые данные из PE-заголовка и где он берёт старые если скрипт уже поменял все в PE-секции. |
|
Создано: 13 августа 2007 15:04 · Поправил: Maximus · Личное сообщение · #7 |
|
Создано: 14 августа 2007 03:55 · Личное сообщение · #8 Maximus спс, вот что значит невнимательность. Однако после проведенных превращений секции есть, т.е. в Оле я файл открываю, смотрю, а в новой (бывшей Аспр-секции) нули, вместо того, что там было. Ладно сейчас нет пока времени, ещё посмотрю позже. Наверно всё таки лорд почему то не дампит эту секцию, а только повинуясь PE-заголовку выделяет место с нулями(хотя фулл дамп должен быть). |
|
Создано: 16 августа 2007 04:11 · Личное сообщение · #9 Привет всем. Наконец вчера выпало немного времени посмотреть что там с дампом(просто смотрел в винхексе дампы до и после импректа). Оказалось, что действительно, лорд плохо снимал дамп приобретенных секций. Как только все манипуляции по снятию фуллдампа были проведены в PETools 1.5 я сразу увидел содержимое аспр-секции в дампе, как до, так и после импректа. Но ещё пока рано радоваться ибо секция аспра только на чтение, как будет время по мучаю её в скрипте чтоб открылась на запись. |
|
Создано: 16 августа 2007 17:29 · Личное сообщение · #10 Small_S пишет: mov eip,00400000 find eip,#5045# //находим PE-заголовок Все ИМХО. Small_S твой скрипт будет работать токо если ImageBase равен 00 40 00 00. Загрузи в ольку виндусовский блокнот и попробуй найти РЕ-заголовок своим скриптом. Кусок из скрипта PE_Kill'а. //================================================ // Получаем ImageBase брутом, т.к. оля иногда не // хочет дать его нормальным способом //================================================ mov addr,eip and addr,FFFFF000 add addr,1000 @get_base: sub addr,1000 mov temp,[addr] and temp,0000FFFF cmp temp,00005A4D jne @get_base |
|
Создано: 16 августа 2007 18:02 · Поправил: Small_S · Личное сообщение · #11 Amok ну конечно, можно и так. Потом универсализирую. Сейчас меня больше интересует где Аспр хранит данные о своих выделенных участках памяти? Ведь должен же у него быть аналог PE-заголовка(что то подобное), где размещаются данные о размерах, доступах на чтение или запись. Добавил: я правда ещё сам не искал, а что то сегодня на работе подумалось,- а взять ещё в OEP-фаиндере(скрипте) найти место, что отвечает за свойства секций, да там ее открыть на запись, да и не мучаться. |
|
Создано: 29 августа 2007 14:59 · Личное сообщение · #12 Привет всем. Вчера появилось немного времени и я попытался продолжить работу по переносу таблицы IAT хрен знает откуда в большую крайнюю секцию аспра. Вот тут приходиться вернуться к рассматривавшемуся ранее вопросу. А именно VirtualProtect (по крайней мере на этом выделенном участке памяти)не работает. По порядку. 1. Прописал в скрипте поиск этой секции(на некоторых прогах и машинах она не примыкает вплотную к проге). Это к делу относится мало. 2. Итак имеем на асме вставку: 00400D00====PUSH 0BF0100 //эта секция заведомо открыта поэтому олд и пишу сюда 00400D05====PUSH 4 00400D07====PUSH EBX 00400D08====PUSH EAX 00400D09====CALL kernel32.VirtualProtect 00400D0E====NOP 00400D0F====NOP 00400D10====ADD BYTE PTR DS:[EAX],AL В стеке по достижению кела имеем нормальную структуру этой апи 0012FF64 00760000 |Address = 00760000 0012FF68 00103000 |Size = 103000 (1060864.) 0012FF6C 00000004 |NewProtect = PAGE_READWRITE 0012FF70 00BF0100 \pOldProtect = 00BF0100 Идём по F7 в процедуру: 7C801AD0 > 8BFF MOV EDI,EDI 7C801AD2 55 PUSH EBP 7C801AD3 8BEC MOV EBP,ESP 7C801AD5 FF75 14 PUSH DWORD PTR SS:[EBP+14] 7C801AD8 FF75 10 PUSH DWORD PTR SS:[EBP+10] 7C801ADB FF75 0C PUSH DWORD PTR SS:[EBP+C] 7C801ADE FF75 08 PUSH DWORD PTR SS:[EBP+8] 7C801AE1 6A FF PUSH -1 7C801AE3 E8 75FFFFFF CALL kernel32.VirtualProtectEx 7C801AE8 5D POP EBP 7C801AE9 C2 1000 RETN 10 В стеке она формирует структуру похожую на предыдущую: 0012FF48 FFFFFFFF |hProcess = FFFFFFFF 0012FF4C 00760000 |Address = 00760000 0012FF50 00103000 |Size = 103000 (1060864.) 0012FF54 00000004 |NewProtect = PAGE_READWRITE 0012FF58 00BF0100 \pOldProtect = 00BF0100 и ныряет в CALL kernel32.VirtualProtectEx там нырок в ntdll.ZwProtectVirtualMemory в нём 7C90DEB6 > B8 89000000 MOV EAX,89 7C90DEBB BA 0003FE7F MOV EDX,7FFE0300 7C90DEC0 FF12 CALL DWORD PTR DS:[EDX] 7C90DEC2 C2 1400 RETN 14 нырок в ntdll.KiFastSystemCall а там вообще в нулевое кольцо 7C90EB8B = 8BD4 = MOV EDX,ESP 7C90EB8D = 0F34 = SYSENTER 7C90EB8F = 90 = NOP 7C90EB90 = 90 = NOP 7C90EB91 = 90 = NOP 7C90EB92 = 90 = NOP 7C90EB93 = 90 = NOP 7C90EB94 = C3 = RETN далее вызываются ещё CALL <JMP.&ntdll.RtlFlushSecureMemoryCache> и много ещё какой то жути, итог печален eax возвращает 0(должно быть не ноль) Причём олд(старые настройки или что то вместо них) в указанном месте пишутся: 00BF0100 80000004 ..Ђ 00BF0104 00000000 .... 00BF0108 00000000 .... в заключении карта памяти после проги: Address=00690000 Size=00003000 (12288.) Type=Map 00041020 Access=R E Initial access=R E Address=00750000 Size=00002000 (8192.) Type=Map 00041020 Access=R E Initial access=R E Address=00760000 Size=00103000 (1060864.)Type=Map 00041002 Access=R Initial access=R последняя секция как раз та, что нам нужна для записи. Из всего вышенаписанного возникает очень волнующий меня вопрос,- есть ли что нить круче VirtualProtect-а? Какая нить Апи, которая открывает доступ даже в этом случае(ведь какая то зараза понаписала в этом участке памяти кило полтора вначале и ближе к концу примерно столько же, значит можно). Или чего? Слишком много хочу? Что за этим прийдётся учиться лезть в ноль кольцо? И ещё этот участок висит в памяти с самого начала(тоесть оля как подгрузила прогу в себя так он уже там). Есть у Оли возможность посмотреть что происходит с момента нажатия кнопки открыть до остановки на EP? Или только смотреть одну ольку другой? |
|
Создано: 29 августа 2007 18:12 · Личное сообщение · #13 |
|
Создано: 29 августа 2007 20:50 · Личное сообщение · #14 NIKOLA тогда несколько встречных вопросов. Вариант первый предлагаемый тобой. Вот карта памяти хвоста проги и начала участка выделенных регионов памяти. Address=00680000 Size=0000D000 (53248.) .adata Type=Imag 01001002 Access=R Initial access=RWE Address=00690000 Size=00003000 (12288.) Type=Map 00041020 Access=R E Initial access=R E Address=00750000 Size=00002000 (8192.) Type=Map 00041020 Access=R E Initial access=R E Address=00760000 Size=00103000 (1060864.) Type=Map 00041002 Access=R Initial access=R В проге выравнивание 1000, в регионах 10000. Нам нужно прицепить существующую, создать новую или продлить последнюю существующую на С000(именно такой размер у участка выделенной памяти куда перемещён весь IAT). Хотелось бы ещё тысяч 10000 дополнительно чтобы гарантированно помещался результат работы любого скрипта над любой VM(тоесть хотя скрипт работает с импортом, но и о VM сразу позаботиться- максимальная автоматизация будущих действий). Может я ошибаюсь и несу чушь,но за последней секцией проги, что по адресу 680000(размер D000) может уместиться секция не более 690000-68D000= 3000h. Добавлять большую секцию, если я верно понял получится только в хрен знает какие высокие адреса. Вот аспр же вроде добавляет участки выделенки по всё более высоким адресам в хвост(наблюдал как по 1000h участков всё больше и больше и адреса всё выше и выше). Вроде не видел чтобы он отодвигал старые участки в более высокий адрес и вставлял на их место новые. Сразу два вопроса по этому варианту: a) Ну добавить в пе-заголовке новую секцию из скрипта пара пустяков(см выше), а вот как из скрипта или из асм-вставки заставить Олю перечитать PE и самое главное отобразить в карте памяти новую секцию? (я пока не умею и описания не встречал). б) Как поведут себя те секции аспра, которые мы таким созданием новой секции станем затирать(те что дышат в хвост проге)? Может это всё просто и кто то даже посмеётся над двумя этими вопросами, но я не профи и только учусь низкоуровневому кодингу. Вариант второй в начале у меня была мысль просто добавить из скрипта размер последней секции проги. Но в этом варианте всё также и снова читаем вопросы а) и б) Вариант три, то что я сейчас пытаюсь сделать,- изменить атрибуты нужной мне уже готовой секции аспра записать туда всё, что осталось от IAT, восстановить её в этой секции, изменить по проге вызовы IAT, на новое место, ну и дампить вместе с чужой секцией и новыми данными в PE(это я уже умею см выше). В последующем использовать кучу места там где потребуется работа над VM. Причём, дело уже не в этой проге(она просто удобный полигон для работы над импортом - импорт в выделенке, OEP без VM, всё видно, классический двиг от PE-kill-а не берёт, китаец тоже, распакованный вариант есть на случай буксования). Меня раздражает мысль, что я пока не умею делать со своими и чужими секциями, всё что нужно мне, а не Биллу или Жене. |
|
Создано: 29 августа 2007 21:52 · Поправил: NIKOLA · Личное сообщение · #15 Small_S По поводу VirtualProtect, почему у тебя не получается, смотри, параметры у тебя в VirtualProtectEx: hProcess = FFFFFFFF тобиш олькин, а тебе нужен хэндл отлаживаемого процесса. Попробуй на прямую через VirtualProtectEx, у казав конкретный хэндл. BOOL VirtualProtectEx( HANDLE hProcess, // handle of process LPVOID lpAddress, // address of region of committed pages DWORD dwSize, // size of region DWORD flNewProtect, // desired access protection PDWORD lpflOldProtect // address of variable to get old protection ); Так, на всякий случай. |
|
Создано: 30 августа 2007 09:59 · Личное сообщение · #16 Спс за дельный совет, я честно говоря, думал, что хендл будет браться автоматически поскольку код вызывается из тела проги. Вечером буду пробовать когда с работы приду. Кста, не знаешь как зовется Апи возвращающая хендл текущего процесса( по аналогии с "Функция GetCurrentDirectory получает текущую директорию для текущего процесса.") Это из одной статьи. Я сейчас на работе и с собой только русские небольшие справочники(по 500-800 фунок) Там только более менее близкая : GetProcessHeap возвращает идентификатор кучи вызывающего процесса Handle := HeapAlloc (GetProcessHeap(), 0, dwBytes); Но это видимо не то, что мне нужно. |
|
Создано: 30 августа 2007 11:49 · Личное сообщение · #17 |
|
Создано: 30 августа 2007 15:18 · Личное сообщение · #18 |
|
Создано: 30 августа 2007 20:25 · Личное сообщение · #19 К сожалению GetCurrentProcess возвращает олькин хендл, т.е. FFFFFFFF. Млинн, я уже все апишки, что упоминаются на странице с GetCurrentProcess в дельфовой справке по мелкософту перепробовал, а именно: DuplicateHandle -дает в EAX вообще ноль, GetCurrentProcessId - выдает Id проги 450, а у оли 70(я это увидел в импректе там в скобках пишется) тоесть ID разделяет правильно у текущего процесса, но по иду VirtualProtectEx работать не будет. GetCurrentThread - выдает FFFFFFFE, но и это также не то. Хелп! Как взять хендл процесса из под Ольки чтобы она своим не перекрывала? |
|
Создано: 30 августа 2007 20:31 · Личное сообщение · #20 Small_S пишет: GetCurrentProcess возвращает олькин хендл, т.е. FFFFFFFF не много не так))) он возвращает хендл текущего процесса, а так как твой скрипт работает от плагина для ольги, то соотв. процесс будет тоже ольгин... Вроде так -_- дальше, ид ты получил, открой процесс и всё OpenProcess(...) - где один из параметров ид функа вернёт хендл... ----- [nice coder and reverser] |
|
Создано: 30 августа 2007 20:55 · Поправил: Small_S · Личное сообщение · #21 Hellspawn респектище, на одних только твоих ответах в этом топе уже наверное несколько суток времени съэкономил. Ещё одно маленькое уточнение: HANDLE OpenProcess( DWORD dwDesiredAccess, // access flag <--------------------------- тут 11 флагов хотелось бы уточнить BOOL bInheritHandle, // handle inheritance flag<----------------------- тут единица или ноль можно его наследовать или нет, тоже понятно DWORD dwProcessId // process identifier <------------------------- про ид понятно ); DWORD dwDesiredAccess - мне будет нужен, как я понял флаг PROCESS_VM_OPERATION Так как написано: Enables using the process handle in the VirtualProtectEx and WriteProcessMemory functions to modify the virtual memory of the process. - это какая цифра будет в даблворде? |
|
Создано: 30 августа 2007 21:43 · Личное сообщение · #22 PROCESS_TERMINATE = $0001; PROCESS_CREATE_THREAD = $0002; PROCESS_VM_OPERATION = $0008; PROCESS_VM_READ = $0010; PROCESS_VM_WRITE = $0020; PROCESS_DUP_HANDLE = $0040; PROCESS_CREATE_PROCESS = $0080; PROCESS_SET_QUOTA = $0100; PROCESS_SET_INFORMATION = $0200; PROCESS_QUERY_INFORMATION = $0400; на всяк... BOOL bInheritHandle - тут false ----- [nice coder and reverser] |
|
Создано: 01 сентября 2007 18:56 · Поправил: Small_S · Личное сообщение · #23 Привет всем. Hellspawn ещё раз спс за константы. Привожу ниже код асм вставки. Всё стало канать почти везде, но VirtualProtect почемуто не берет участки выделенной памяти имеющие атрибуты Map. Ну всё остальное хоть где оно, меняет(пробовал в теле проги, выше проги, ниже проги). CALL kernel32.GetCurrentProcessId PUSH EAX PUSH 0 PUSH 8 CALL kernel32.OpenProcess PUSH 7A0100------------------------- токо начало и размер в ebx и ecx, соответственно надо задавать после PUSH 4---------------------------------бряка здесь иначе OpenProcess засунет в ecx какую нибудь лабуду и кина PUSH ECX----------------------------- не будет у VirtualProtectEx-а. PUSH EBX PUSH EAX CALL kernel32.VirtualProtectEx NOP NOP ADD BYTE PTR DS:[EAX],AL Чем можно менять эти атрибуты секций(я имею в виду какой АПИ) с Map, на скажем, Imag? Ну или чем кроме VirtualProtectEx меняют атрибуты файла даже несмотря на то, что он Map? Тот участок, что мне нужен как раз на несчастье Map. |
|
Создано: 02 сентября 2007 16:23 · Поправил: Small_S · Личное сообщение · #24 Всем привет. Участок выделенной памяти Map никак не поддается. Я искал все утро какую нить статью на Wasme на предмет всё таки либо заставить Map-секцию сменить атрибуты, либо как с Map сделать неMap и потом уже менять, единственное, что увидел "Инжект как метод обхода фаерволлов, жив или мертв? /28.04.06/" А там как писать с потока в другой поток приводится последовательность,-"Считается, что с этого момента инжект как метод обхода фаерволлов перестал существовать, так как уже недостаточно было сделать OpenProcess/WriteProcessMemory/CreateRemoteThread." Дак вот WriteProcessMemory тоже надо чтобы куда пишут уже была открыта возможность писать(если я верно перевёл из борландовой справки по Апи) "иначе функциональные сбои". Так знает кто нить способ, ну хоть самый хитромудрый? Может есть какой то способ сделать из Map - неMap или вписать в неё данные, или сменить атрибут защиты??? Добавил: предлагайте даже самую жуть, если простых способов нет. Нужно будет лезти в 0-кольцо, буду учиться. Назовите хотя бы последовательность Апишек 3-его кольца или 0-го которые должны пройти чтобы добиться смены прав доступа в Map-е или самого Мар на не-Мар. |
|
Создано: 02 сентября 2007 16:35 · Личное сообщение · #25 |
|
Создано: 02 сентября 2007 17:16 · Поправил: Small_S · Личное сообщение · #26 NIKOLA тут два момента психологический и интелектуальный. Меня всегда раздражало когда, механизм, код или другой человек(не имеет значения) не даёт мне сделать очевидную для меня и рациональную вещь. Есть почти пустая, примыкающая к проге, да ещё и огромная секция, почему это нельзя записать туда импорт вынесенный целиком хрен знает куда. И вторая часть психологического момента,- если уж меня это заинтересовало, то надо докопаться как это можно сделать(ибо если научиться писать в Map, то проблем со свободным местом и размещением чего то не будет совсем никогда). Второй момент недостаточные знания, я не знаю, но ты прав надо попробовать, пустит меня система создать свою секцию в хвосте проги, затерев таким образом несколько аспровых секций или нет? |
|
Создано: 03 сентября 2007 21:57 · Личное сообщение · #27 NIKOLA, ты прав, и не думал, что это так легко. Прошу прощения за упрямство. Единственное, что мне понадобилось найти кроме VirtualAlloc-а(я имею виду подробности в справке о параметрах) так это функцию UnmapViewOfFile(в ней ваще только один параметр- база мар - файла). В первом же испытательном коде не "поддающийся никому" мар как хреном сбрило, без проблем возникла новая секция в хвосте проги(на его месте) с максимальным доступом и в заключении, код записал туда даблворд единиц. Вот простое испытание: PUSH 690000 CALL kernel32.UnmapViewOfFile PUSH 40 PUSH 3000 PUSH 20000 PUSH 690000 CALL kernel32.VirtualAlloc MOV DWORD PTR DS:[EAX],11111111 ADD BYTE PTR DS:[EAX],AL |
|
Создано: 10 сентября 2007 14:37 · Личное сообщение · #28 Сегодня на webfile.ru/1522533 я выложил статью по распаковке ASProtect v1.35 build 06.26. К моему сожалению, я не смог ее залить на сайт CRACKL@B (все время идет обрыв соединения), и Ara пообещал ее перезалить на CRACKL@B. Статья, в качестве приложения, содержит подопытную программу, которую предложил Gideon Vi, набор скриптов, дампы программы, и дампы VM, INIT и IAT. Буду признателен за критику, пожелания и замечания. Готовлю статью по распаковке ASProtect v2.3 SKE build 06.26 Beta. |
|
Создано: 10 сентября 2007 14:40 · Личное сообщение · #29 |
|
Создано: 10 сентября 2007 18:27 · Личное сообщение · #30 |
|
Создано: 10 сентября 2007 19:12 · Личное сообщение · #31 vnekrilov 3000h это не 3000 байт - это раз, во вторых - VirtualAlloc невозможно использовать для определения адресов, в третьих - 00950000h - это не область вм, это размешанный полиморфом\метаморфом буфер, в котором есть вызовы вм 00B30000h с эмуляцией инструкций типа jmp,call,jcc,cmp+jcc. ЗЫ: смотрел навскидку, может еще что пропустил, хз ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
<< 1 ... 9 . 10 . 11 . 12 . 13 . >> |
eXeL@B —› Софт, инструменты —› Распаковка AsProtect на примерах |