Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

АРХИВ ФОРУМА eXeL@B
https://exelab.ru/f/

   

Gloomy Xtreme-Protector кто-нибудь изучал? Нашел на wasm’e тему про этот


Gloomy Xtreme-Protector кто-нибудь изучал? Нашел на wasm’e тему про этот протектор - похоже его еще никто не ломал, а лицензионный файл в выложенной на сайте полной версии просто cп@женный (сорри если я ошибся). Решил испытать протектор в деле, подсунул ей свою программу весом в 183 Кб, да еще сдуру поставил в настройках защиты все по максимуму - в результате через час получил файл размером 5,78 Мб (!) который при запуске грузит мой бедный Celeron 1100 на все 100% секунд на 10. Что этот протектор туда накатал аж на 5 мегов?! Что это вообще за зверюга такая? Был на официальном сайте - там его конечно расхваливают на все лады - хотелось бы услышать мнение людей которые его изучали.
Кто-нибудь пробовал его снимать? Как успехи?
Runtime_err0r :: Я ломал Feuer’s NFO File Maker v2.2 - PEiD говорит:
Xtreme-Protector 1.00 - 1.05 -› Rafael Ahucha & Sergio Lara
хотя может и не он ... может, автор подскажет ?

+Spark :: Да ну его к чертовой матери...кому он такой нужен? 183 Кб ---› 5,78 Мб да еще через час? этож мазохизм какой-то...засмеют =)

volodya :: а лицензионный файл в выложенной на сайте полной версии просто cп@женный

Как это понимать?

Madness :: Runtime_err0r
Говорил же - то было не оно.

volodya
Он имел ввиду скарденный.

MoonShiner :: У меня по странному делу этот протектор при установке некоторых параметров защиты ребутит систему нахрен... А о количестве создаваемых тредов при запуске защищенной проги лучше умолчу:)

Gloomy :: Runtime_err0r
У меня более новая версия 1.07 - интересно изменилось ли в ней что-нибудь?

+Spark
›› 183 Кб ---› 5,78 Мб да еще через час?
То что долго так и подождать можно, а вот такой размер никак не катит, тем более что потом ничем не сжимается, даже RARом

volodya
›› Как это понимать?
Извини, не знал как правильно сказать Я имел в виду «скопированный у зарегистрированного юзера».

MoonShiner
›› ребутит систему нахрен...
the_laser тут пишет что вообще не может снять протектор - постоянные ребуты.

И все-таки кто-нибудь снимал этот протектор версии 1.07? Или это еще один плохо распаковываемый протектор типа Obsidium? Статью про Obsidium видел только у Hex’a и еще в паре мест в Инете.

-= ALEX =- :: я вот как раз недавно его попробывал, ребутит систему по страшному, изучать не стал, задолбало :( насчет большого размера, это можно выбрать, он строит большущий полиморфный код с мусором. А вообще мое мнение, что это полный изврат, уж слишком долго прога загружается...

FEUERRADER :: Runtime_err0r
А ты веришь PEiD? :)

MozgC [TSRh] :: Runtime_err0r
Ты же должен был помнить что FEUERRADER делал прогу для подмены сигнатур =)

-= ALEX =-
Ну не так уж и долго загружается, время 166 MMX прошло уже =) В любом случае, изврат не изврат, а ты сломай =)))

-= ALEX =- :: MozgC [TSRh] да все равно на моем athlon xp 2000 это заметно на глаз :) да и зачем паковать, вернее защищать, таким протеткором большие проги

MozgC [TSRh] :: На моем Athlon XP 2200+ тоже заметно но оно того стоит. 1-2 секунды погоды не сделают, а автора от крэков избавят.

Gloomy :: Цитата с wasm.ru:
цитата:
Пакер представляет собой драйвер. Т.е. кольцо-0. Человек, его писавший, маленько поехал на антиотладке, поэтому, если хотите экспериментировать, быть может, имеет смысл завести виртуальную машину для таких экспериментов, т.к. чуть что не так - и ребут.


Самое интересное как он умудряется под работающей Виндой выйти на 0-е кольцо? Сколько видел примеров без использования отдельного файла драйвера - ни один не работал Если кто займется изучать этот криптор советую почитать интересную статью про то как вырубается Винда.

З.Ы. Решил сам поковырять пакер - только запустил отладчик и сразу ребут, причем насколько мощный что комп стал нормально работать только после выключения и включения питания системного блока

MoonShiner :: Gloomy пишет:
цитата:
Самое интересное как он умудряется под работающей Виндой выйти на 0-е кольцо?


Xprotect.sys ;)

Dragon :: Не Xprotect.sys, а Xprotector.sys.

MoonShiner :: Да, да, описался:) главное смысл ясен...

test :: Gloomy пишет:
цитата:
советую почитать интересную статью про то как вырубается Винда.


в этой статье не упоминается функция «RtlDllShutdownInProgress»,а в xtream она и используется.

.::D.e.M.o.N.i.X::. :: Dragon пишет:
цитата:
Не Xprotect.sys, а Xprotector.sys.


Ну и не стоит забывать и про Xprotector.vxd под под win9x :) А вообще я знаю 3 человека, которые его сняли и долго не мучались (жаль я к ним не отношусь, но распаковка не моя стихия:)

-= ALEX =- :: а как тогда сделать так, чтобы не ребутилась система ?

бара :: Приветствую друзей из Alien Hack Team.....

Меня вот интересует, друзья мои, как сей протектор (точнее его VxD) отучить от вырубания открытия защищённого им процесса.

я статью перед атакой успел перенести на www.team-x.ru в раздел реверсинга.

Dragon мне подсказал дельные ходы. Но я вот на асме хотел бы увидеть алгоритм инъёкции ибо в C++ не волоку вовсе. А у меня метода имеется в виде рабочего исходника, написанная на VC++ 7.0 как раз - там только патчер писануть осталось в саму DLL. А так байда рабочая - проверял....

бара :: размер всегда более метра - это да из защищённых файлов протектор плодит

Gloomy :: .::D.e.M.o.N.i.X::.
›› вообще я знаю 3 человека
А нельзя ли попросить кого-нибудь из этих трех человек написать хотя бы маленький тутор, можно даже на английском оставить (если они по-русски не спикают) и в стиле «меняем тут байт 75 на EB»? Очень уж криптор любопытный...

бара :: ну ты смешной.... меняем 75 на EB
там до 50 циклов криптовки
думаешь почему он грузится так долго

тут DZA patcher нужен
и то если успеешь до загрузки VxD пропатчить или придётся свой VxD писать

у меня трезвая идея - инжектор - это будет проще
так как там защита от OpenProcess и сканят постоянно процедуры внутренние
мой инжектор выкинуло сразу как только я в процесс вошёл
но в процесс вошёл - это первая маленькая победа...

Gloomy :: бара
›› ну ты смешной.... меняем 75 на EB
Я имел в виду тип статьи. Как известно статьи делятся на 2 основных типа:
1) Очень подробные, с отступлениями и пояснениями (например by MozgC [TSRh]);
2) Сухие и краткие, в которых дается только инструкции какой байт на какой нужно заменить и никаких объяснений почему именно так а не иначе (например by Hex, no offens);
Я имел в виду что сойдет любая статья - главное чтобы была какая-то точка опоры

›› загрузки VxD
Сорри за тупизну, но где находится этот vxd (и sys)? Нигде найти не могу - ни во время работы защищенной программы ни во время работы самого криптора

бара :: он в самом теле зашит защищённой программы. И запускается оттуда. Короче этот драфвер всё дело и поганит...
а найти его ты как хотел ? Ты видал как дрова работали с VxD под SiftIce - ты их в Task Manager там видел хочешь сказать ?

Dragon :: Драйвер находиться в каталоге %SystemRoot%\System32\drivers. Его в первую очередь надо полностью раскопать, т.к. вся основная защита в нём.

бара :: я видел треды какие-то к основному процессу - дальше не копал
увидел в теле защищённой программы VxD - там тоже защита.
короче полный эскорт вырисовывается

ты хоть укажи все имена - я посмотрю... а то там знаешь в этой папке у меня сколько етих дров...

Dragon :: У тебя наверное Win98, я говорю про XP, в Win98 он в папке windows\system. Называется он xprotector.sys в NT, а в 9x - xprotector.vxd.

бара :: У меня, мил человек, Windows 2003 Server, а не W98
так что именно второе... но в теле защищённой проги. А в самом драйвере я не смотрел так как криптован он здорово...

Dragon :: Он не криптован, там scrambled код. Его легко обходить, по равенству esp. Допустим если есть scrabmled-команда push eax, то сначала обязательно будет pop eax(или другой регистр), а только потом нормальный код.

бара :: dragon, ты бы помог - объясни мне как сдампить эту программу под NT/XP и как доступ к процессу получить... Мне надо патчить защищённую им программу. Версия 1.7 - ну последняя, в общем.
А код там какой это всё интересно, но размотать его я вряд ли смогу - терпения не хватит :)
Есть ли у тебя способ получить доступ к процессу на запись в его память ? Если есть - опиши прямо тут или скинь мне на мыло плиз. А то я перепробовал уже много чего и пока слабо продвинулся...

MoonShiner :: Свой драйвер?

Dragon :: Да, только свой драйвер, других способов не вижу.

бара :: Ладно. Всё понял. Поднимаю якоря...

test :: В принципе я дошел до кода который вырубает проц.Только вопрос остался«Каким образом?»
Там должен сработать Exceiption, но не срабатывает.Это маленький цикл с ecx=1 и кода он
выполняется второй раз то на MOV DWORD PTR DS:[EAX-4],DI ребут.Это что?Попытка записи
в таблицу дескриптора?Генерация двойного исключения?
DS=0023,EAX=8003F40C, EDI=006FE203.В принципе есть скрины там все наглядней.
А скрыть отладку очень трудно,там RDTSC разбросаны по коду очень много.Интересно в новой
версии я использовал драйвер от демо-версии ,он по размеру меньше.Только изменил размер файла драйвера.Хотя код отличается, это никак не повлияло на работу нового протектора.И еще.Подскажите можно ли в sice с IceExt использовать loader?.А то он Sice не видит.

бара :: скрины выложи мне тоже на форум сюда:
http://www.team-x.ru/xfor...m/index.php?showtopic=523
или опиши подробнее ситуацию. Заодно прочтёшь про наши «мытарства»

старый драйвер много занимает ? если нет - тоже закачай туда или скинь на мыло.
И самое главное не сказал - как область памяти процесса разлочить и открыть сам процесс на запись...

Dragon :: Кстати кто тут писал, я попробывал DLL подгружать, всё работает, и API перехватывается. Я делал лог вызовов GetProcAddress, их слишком мало, значит в протекторе есть свой аналог GetProcAddress. Чтобы распокоавть, первым делом надо импорт восстановить, потом уже OEP и дамп.

test
rdtsc там не используется - это scrambled, такой же как и sidt [esp - 2]

test Re: Dragon :: Да я понял! ошибка вышла.Просто драйвер наверно перехватывает там где исключение и
ребутит он конечно.И с подменой драйвера.Он просто перезаписывал.А сейчас пробовал
поменять атрибуты read only так сразу «CreateFileA API Error while extraction the driver».
А насчет RDTSC я несовсем понял.Значит тот код который выполняется в отладчике это
scrambled?.В том то и дело что я и до создания тредов проходил если быстро пропустить код.Толку мало было, так как прога висла в процессе.Но не ребутило.Так что антиотладка в коде явна.И вот это MOV DR0,EAX(eax=0) итд по всем регистрам.Или я ошибаюсь?

бара :: я пробовал на W2003 - (!) и дампер by Asterix не работает как и дамп из ProcDump, LordPE 1.4, PETools 1.5 и вообще если у вас вышло - скидывайте описание и скрины как я это делаю у себя на форуме. А то одни слухи и сплетни плодятся только пока - один говорит, что протектор этот давно сломали (D.e.m.o.n.i.X.), второй говорит (Dragon), что он все API умудрился перехватить и дампит код. Я не сомневаюсь в ваших умениях, но давайте какие-то факты выкладывать. Иначе зачем на форума ходить - сплетничать что-ли ?
Так что прошу открывать карты, как говорится... Так как не видел я примеров пока реальных...

Dragon :: Ну API перехватить умудрился, и код могу сдампить, только какой в этом смысл, если дампить не на OEP, а во время работы? Вот я и пытаюсь найти сначала создание импорта, а потом OEP. Тогда если всё заработает, то выложу и статью напишу может.

бара :: смысл в том, что мне нужно знать как можно процесс патчер написать - мне сам протектор ломать и снимать не нужно - мне по барабану на него - мне нужно знать как патчить программно этот код из проги своей и как дампить защищённую этим протектором прогу. Больше мне ни хрена не надо

Dragon :: test

Драйвер просто так не подменить. В первом вызове DeviceIoControl драйвер передаёт свою версию.
Кстати, отлаживать его очень хорошо OllyDbg с плагином, защищающем от IsDebuggerPresent. Так можно дойти до загрузки DLL, из которых функции импортируются.

бара
Пишешь лоадер, CreateProcess, с флагом CreateSuspended. Потом загружаешь в него DLL через CreateRemoteThread, см. статью про перехват API на wasm.ru, а потом вызываешь ResumeThread. В процедуре инициализации DLL можешь делать что хочешь, в том числе и дампить.

бара :: Dragon:
теорию я и сам знаю.
мне нужен практический пример с CreateRemoteThread, так как метод Asterix’а у меня не работает с защищёнными этим протектором прогами и вообще не работает функция дампа под W2003.
Мне нужно не лоадер сделать а типа трейнера, те патчить не при загрузке, а во время работы программы...

Dragon :: Патчить таким образом можно при перехвате API. Я могу выслать на мыло загрузчик, а DLL пиши сам.

А протектор очень интересный, байты с OEP спирает, как ASProtect, импорт у него такой:

CODE____:0043988C sub_43988C proc near ; CODE XREF: sub_4195A7+10p
CODE____:0043988C ; sub_41DBFA+F8p ...
CODE____:0043988C nop
CODE____:0043988D jmp near ptr 3940584h
CODE____:0043988D sub_43988C endp

Это GetModuleHandleA. Отлаживать то нельзя, так что непонятно, то ли по адресу 3940584h что-то есть(т.е. аналогично ASProtect 1.3) то ли возникает исключение и в SEH по этому адресу управление передаётся на нужную процедуру. В общем хрен знает что нагородили тут.

бара :: barongede@hotmail.ru
всё что нарыл - шли сюда - на моё мыло. Обещаю, что публиковать не буду, ежели нельзя и в коммерческих целях тоже.
Мне с познавательной точки зрения интересно. Я своего рода коллекционер как бы
Скидывай в общем... И спасибо за то, что исследовал...
Тут я вряд ли появлюся таперича. Потому что делов привалило разных...
Так что тоже заходи в гости если что. Пока

PS
Форум на wasm.ru заработал кстати тоже сегодня. Артурик видать отдыхает - и писем писать перестал :)))

the_laser :: Господа.

бессмысленно копать этот драйвер и проч.
накручено тысяч 30 всякого рода циклов и тд.
копать надо изнутри.

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

спасает только то, что эта гадость не все инструкции «эмулирует».

поэтому есть реализуемая идея как импорты отресолвить на автомате.

но надо мне библиотечку... дизассемблер.
надо оттуда только определение длины команды x86, то есть на вход я даю кусок памяти, она мне возвращает длину x86 команды с начала блока.

ничего не нашел. наоборот - пжалста. (ассемблер типа).

есть на сайте ollydbg его библиотека, но она вся из-себя сишная, мнеб dll.
а так - это именно то, что надо.

может кто хорошо шарящий в С склепает из этих исходников dll ??

тогда мы этот xprot быстренько обломаем.

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

-= ALEX =- :: the_laser пишет:
цитата:
но надо мне библиотечку... дизассемблер.
надо оттуда только определение длины команды x86, то есть на вход я даю кусок памяти, она мне возвращает длину x86 команды с начала блока.


ну это я тебе могу сделать, если надо... обращайся

the_laser :: Надо !

обращаюсь.

мысль такая.

вот он сырец.
http://home.t-online.de/home/Ollydbg/disasm.zip

вот они две функции которые нужны.
disasm после дизассемблирования может вернуть размер команды, ежели его попросить.
assemble чтобы была. вещь ценная.

int Assemble(char *cmd,ulong ip,t_asmmodel *model,int attempt,int constsize,char *errtext);
ulong Disasm(char *src,ulong srcsize,ulong srcip,t_disasm *disasm,int disasmmode);

что хочеться, по приоритету.

1.чтоб это в vpascal/delphi можно было использовать, то бишь прикрутить как-то obj,генерируемые С.
у меня пока не выходит, покручу еще, но не люблю я С :(
2. или dll в которой будут две такие функции (ну то есть не две, а вот все что disasm.h ;) эти две просто необходимы)

вот.

Dragon :: the_laser
Где ты там в драйвере видел циклы? Там только scrambled. Там же открытие доступа к портам и IDT.

C импортом то понятно, там хоть мусора много, но вызов всё равно к началу реальной API сводиться, так что можно запретить доступ на выполнение к секциям кода всех DLL, из которых функции импортируются, и вызывать по очереди все функции, через SEH адреса отлавливать. Есть ещё проблема, если импорт выглядит не call [func] а call [переходник], то IAT уничтожается, надо новую создавать. Придумать бы ещё, как байты спёртые на OEP найти...

the_laser :: @dragon:

циклы - это не про драйвер. это про основное тело программы. куча там циклов расшифровки/распаковки и все раскидано по ниткам. разбираться муторно. да и ни к чему абсолютно.

насчет импорта - не верю ! (с) . xprot копирует все функцию (до ret) себе в память и потом ее корежит.
ее , покореженную , и исполняет. по крайней мере так было во всех xprot-ченных прогах что я клепал.

так что путей тут 2 :

1. поймать, где xprot корежит функцию и это дело обрубить. малореально, ибо это делается походу параллельно в нескольких потоках,заодно и драйверу чтой-то перепадает работы.

то есть для меня малореально. монстры-то покопаются.

2. сделать import resolver по сигнатурам. реально. но мне нужна такая библиотека как я написал выше :)
походу придется разбираться как сделать dll на С. думаю сделаю. ну или поможет народ (надеюсь)

да,xprot всегда хреначит IAT. заодно он хреначит ВСЕ вызовы api в .exe и меняет их на JMP [xport_garbaged_api#XXX]
даже больше - в xprote лежат зажатые секции кода, так даже там все вызовы api забиты на NOP.

то бишь не использует он таблицу импортов никогда после того как испортит прогу (защитит)

создание новой таблицы IAT и восстановление спертых байтов не проблема.
проблема пока только в распознавании «garbaged» api...

руками я все это распознаю, но ... см. сообщение выше.

the_laser :: эк зацепило.... сделал библиотечку.

теперь будем собственно делать import resolver.

-= ALEX =- :: the_laser пишет:
цитата:
эк зацепило.... сделал библиотечку


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

the_laser :: в смысле, скомпилил исходники с ollydbg-шного движка в виде dll. и это даже работает ;)

теперь что надо сделать -

написать такую тулзятину, которая будет скакать по всем экспортам указанной dll и вытаскивать из каждого экспорта некоторые (не все ) команды в некое файло. это будет типа сигнатуры ;)

вот, теперь еще и это писать. хотя есть у меня знатная библиотечка для работы с PE.

ну и потом написать плагин для impreca чтоб он эти сигнатуры искал в указанном куске кода из xprota.
если 3-4 команды совпадают - значит это она, родимая (api функция)

вот для всего этого собственно и нужна была dll дизассемблера.

но сейчас я думать не могу, голова болит. если к вечеру отпустит, сяду клепать.

Dragon :: Насчёт импорта(XProtector 1.07 demo), я только некоторые функции смотрел. Вот GetModuleHandleA я перехватом проверил, она точно сводиться к оригиналу в kernel32.dll, хотя мусора в переходнике до хрена, но он не заменяет её внутренний код. Другие функции не смотрел. И если ты говоришь, что xprotector извращает код функции, то можно как в StarForce таблицу экспорта у библиотек в памяти подправить, чтобы они ссылались на код

push func_addr
ret

А если все оригиналы вызываются, то лучше их отлавливать через исключения. Сначала надо выяснить, как импорт построен конкретно, а потом что-то делать. Сегодня попробую разные функции поперехватывать, типа CreateWindowExA, ShowWindow, чтобы разобраться. К тому же один импорт ничего не даст, надо ещё OEP и байты спёртые искать.

-= ALEX =- :: блин самому охота поизучать сей протектор, но комп ребутиться :( блин :( чем поможите ?

the_laser :: @alex:
а ничем. используй ollydbg. и то...

@dragon:
может это только проблема demo-версии ?
потому как я демо не смотрел, только защищенные коммерческой версией смотрел.
а там весь код (вернее, первые 4096 ) копируется и портится.
и код не весь заменяется, только простые команды работы со стеком, ну и еще некоторые.

дальше.
про подправить я думал. да вот только загвоздка - как подправить kernel32, user32, gdi32 ?
ибо он портит импорты только из этих библиотек.
локальные копии не загружает, пробовал.

и оригиналы не вызываются.

а про oep и спертые байты я уже говорил - не проблема.

придется-таки писать поиск по сигнатурам. ну и руками потом, что не получилось.

Dragon :: kernel32 и др. можно подправить динамически - подгрузить dll в адресное пространство защищённой проги. У меня исходник где-то от восстановителя импорта для Starforce валяется, надо его переделать под xprotector, раз он также делает. Но оригинал GetModuleHandleA вызывается точно, раз перехватчик работает. Завтра займусь, лучше про OEP расскажи, как его найти и про спёртые байты.

the_laser :: Ну как ты его подгрузишь динамически, если xprot все блокирует ?
и createremotethread и вообще все ?

конечно я все не знаю, но путей как заменить dll в xprot иначе как подмены оригинальной системной не знаю :(

OEP во всех программах,написанных на языках высокого уровня ищутся на раз, правильно ?
а спертые байты... в ексешнике есть зажатая секция кода. там попорчены только API вызовы, остальное на месте.
в общем вот.

начал делать ресолвер.
в принципе идея такая.

все функции в xprot портятся так. берется кусок кода до первого RETN. и разбавляется мусором, причем почти все операции со стеком , простые push xxx pop xxx и еще некоторые инструкции заменяются на кучу мусора,делающего аналогичный код.

то есть апи функция после обработки xpot выглядит так

original
...... garbage
jmp xxxxx
xxxx:
...... garbage
emulated_original
...... garbage
...... garbage
call xxxxx
xxxXX:
...... garbage
original
call original
...... garbage

и в конце всегда
retn

идея,которую я делаю.

сделать базу сигнатур (неэмулируемых инструкций) из kernel,user,gdi
сделать плагин к импреку, который
1. опеределяет длину эмулируемой функции xprot (ходит по jmp/call до ret)
2. ищет в этой функции последовательно все сигнатуры из базы.
если найдены эти сигнатуры - гуд, это она.

вот. если есть какие-то наработки или идеи на эту тему (паскаль) и не жалко ими поделиться - я буду сильно рад ;)
нет - сделаю сам, процентов 40 я уже сделал.

Dragon :: Динамически подгрузить можно, сделать загрузчик через CreateProcess, с замороженным тредом, а потом и подгужать, пока ничего не блокировано. Потом править массив addressoffunctions. И всё, восстановить будет гораздо легче. И ещё, какой тебе плагин для imprec, процесс то заблокирован. Если делать моим способом, то можно вручную сгенерировать файл tree в формате imprec, затем создате идентичный по структуре PE файл, и создать сам импорт(секцию mackt), добавить её, а потом ещё и jmp всё подправить, чтобы на новую IAT указывали.

Вот кусок кода из дампа, близко к OEP(тот же XProtector 1.07 demo):

CODE____:0042A359 test al, 64h
CODE____:0042A35B mov large ds:0, esp
CODE____:0042A361 call loc_7DC1BB
CODE____:0042A366 or al, 0
CODE____:0042A366 ; -------------------------------------------------- -------------------------
CODE____:0042A368 db 0 ;
CODE____:0042A369 db 0 ;
CODE____:0042A36A db 0 ;
CODE____:0042A36B db 0 ;
CODE____:0042A36C db 0 ;
CODE____:0042A36D db 0 ;
CODE____:0042A36E ; -------------------------------------------------- -------------------------
CODE____:0042A36E cwde
CODE____:0042A36E ; -------------------------------------------------- -------------------------
CODE____:0042A36F db 3 dup(0)
CODE____:0042A372 ; -------------------------------------------------- -------------------------
CODE____:0042A372 outsd
CODE____:0042A373 push NULL
CODE____:0042A375 call GetModulehandleA
CODE____:0042A37A mov ds:dword_450344, eax

Ну и где здесь OEP и байты спёртые?

the_laser :: А можно поподробнее, как подгрузить свой kernel32.dll после того, как сделаешь замороженный процесс ?
ведь xprot будет использовать довольно много функций из него.

насчет плагина - есть способ его того, разблокировать. и потом импрек замечательно пашет.

про OEP и байты - еще раз. в xprot держит все секции запакованными. в них чистый код, данные и ресурсы.
только вызовы api заноплены. остальное все на месте.

Dragon пишет:
цитата:
Динамически подгрузить можно, сделать загрузчик через CreateProcess, с замороженным тредом, а потом и подгужать, пока ничего не блокировано. Потом править массив addressoffunctions. И всё, восстановить будет гораздо легче. И ещё, какой тебе плагин для imprec, процесс то заблокирован. Если делать моим способом, то можно вручную сгенерировать файл tree в формате imprec, затем создате идентичный по структуре PE файл, и создать сам импорт(секцию mackt), добавить её, а потом ещё и jmp всё подправить, чтобы на новую IAT указывали.


Dragon :: Системные библиотеки можно патчить, а не подменять. Я так делал, т.е. ставил свои переходники(push f_addr; ret) вместо функций, но не смотрел, что в импорте xpotectora получилось. Если ты говоришь, что можно разблокировать процесс и найти OEP и спёртые байты, то прошу способ в студию! А я тогда с импортом закончу, и внутренние функциии расшифрую. Там есть зашифрованные, вот вроде расшифровка (из дампа xprot demo 1.07):

CODE____:0042B3C6 push 78263845h
CODE____:0042B3CB push 7
CODE____:0042B3CD push 0
CODE____:0042B3CF push 3A13A8B8h
CODE____:0042B3D4 push 81DDAC31h
CODE____:0042B3D9 push 78263845h
CODE____:0042B3DE call sub_43996A

Там дальше переходник, ведущий к коду из секции xprot, вроде как к процедуре расшифровки.

the_laser :: угу. патчить. а как тогда винде работать,если вместо каждой функции стоит push addr; retn ??

или я чтой-то не догоняю ? объясни, плз.

как разблокировать ? а элементарно. пусть приложение считает, что работу завершило, но не завершает .
в общем-то все.

ps.
я при распаковке xprot вообще никакими отладчиками не пользуюсь :)

test :: Перестал запускаться Xprot на WINXP.Не помню точно после чего.Похоже с драйвером что
то.Пробовал переустановить.Но он всеравно не хочет.Система и другие приложения работают без проблем.В чем может быть причина?

Dragon :: the_laser

Делаешь так, выделяешь блок памяти для переходников. Вот к примеру функция GetModuleHandleA, у неё в таблице экспорта в массиве AddressOfFunctions стоит RVA. Так вот, записываешь в свой выделенный блок вот это:

push GetModuleHandleA
ret

И правишь RVA так, чтобы оно при сложении с ImageBase дало адрес переходника. Всё работать нормально будет, этот набор инструкций работает как jmp, к тому же xprotector раз он до ret копирует код функции, то он скопирует себе тольо push GetModuleHandleA и пусть извращает эту одну инструкцию как хочет, всё равно можно легко определить функцию.

Про разблокировку чего-то не понял, как так завершить работу, чтобы приложение не завершилось? Дамп у меня получается снимать только из подгруженной DLL, т.е. каждый раз, чтобы прочитать какой-либо блок памяти, приходиться код руками прописывать, к тому же ещё и на ассемблере. Если разблокировать, то будет удобнее исследовать.

test
У меня было такое. Я удалил xprotector.sys из папки с драйверами и перезагрузился, всё заработало.

the_laser :: @dragon:

что сделал :

прилепил к kernel32 секцию, в секции поставил один переходник (на попробовать) \
push addr
retn

поправил в export_directory.addressoffunctions адрес,чтоб туда ссылался.
винда работает, проги,использующие эту функцию, работают
xprotченные проги молча вылетают.

походу его Garbage_engine или еще что-то тупит.

а может я делаю что-то не так.
если есть какая тулза в помощь расставления/создания таких переходников , подскажи где взять,плз.

Dragon :: Нет такой, надо вручную писать. Там я хорошо протестировал, работает только с библиотеками, которые не используются для распаковки, например gdi32.dll. Видимо протектор пресекает это, и надо не просто push addr/ret, а несколько инструкций оттуда брать, или проанализировать функцию получения адреса, аналог GetProcAddress. Я тогда этим и займусь, скорее всего защита в ней.

Лучше все такие экспирименты динамически проводить, дай мыло, я тебе вышлю исходник загрузчика, который загружает свою DLL в адресное пространство защищённой проги, может поможет.

the_laser :: да я уж написал такую тулзу...толку ...ну я написал сколько. смотрит он походу на длину функции... кстати - а попробую я мусора туда напихать.

а что, нашел функцию получения адреса ?

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

мыло:

the_laser_at_mail.ru
вместо _at_ ессно собачка.

Dragon :: Функцию получения адреса нашёл - 6BECFC(Только не помню, зашифрована процедура сразу или нет, лучше в OllyDbg на неё по hardware breakpoint выйти. И ещё, исследуй тоже xprotector 1.07 demo, лучше одинаковые проги копать). Надо её разобрать, может там проверка какая есть, если есть, то пропатчить и всего делов. А она должна быть, т.к. ты говоришь, что он gdi32.dll извращает и переходники в ней свободно съедает, а kernel32, user32 и advapi32 используются при распаковке и как раз адреса функций из них достаются через ту самую процедуру.

Я скинул тебе загрузчик. Если надо, исходик DLL тоже кину, которая как раз всё это и делает, таблицу экспорта правит.

test :: Dragon. Если у тебя нет не «демо» версии я могу выслать или ссылку.У меня обе версии работают на одном драйвере.«Демка» точно не проверяет свою версию и загружается с новым драйвером.А работают они по разному в не «демо» версии импорт на 99% портится.Если сможешь скинь мне свое мыло test_guest@rambler.ru.

Dragon :: У меня нет не DEMO, если нужна будет скачаю с wasm.ru.
Версия драйвера всегда проверяется, главное, чтобы она была под текущую версию или более новая, как бы обратная совместимость.
Импорт в demo испорчен точно также, причем не на 99%, а на 100%.

бара :: главное распротектить сам процесс. Вот главный удар, куда нужно сконцентрировать усилия.

Dragon :: Да дампить через DLL можно, через какие-нибудь события взаимодействие организовать. Было бы SDK для PE Tools, можно было плагин написать, чтобы дампить.

Я пароверил всю эту процедуру. Она принимает в параметрах базу библиотеки и какой-то хэш от имени функции, и ещё первый символ. А потом ещё есть проверка на int3 в начале, больше ничего такого нет. Придёться в другом месте искать. По сигнатурам ничего не сделать, у многих API начало одинаковое.

bara :: было бы кабы тогда бы да....

the_laser :: @dragon:

а причем тут начало процедур api ?
ведь эта хрень забирает всю процедуру до ret .

то есть должно получиться.






   
Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS