· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› распаковка Dll , упакованной ASProtect

<< . 1 . 2 . 3 . 4 . 5 . 6 . >>

Посл.отвђт Сообщенiе


Дата: Май 26, 2004 10:03:19

> Я пока еще профи не этого уровня, не хватает времени,
> но на счет дебажить, ты погорячился. Дебажить будет
> чем, т.к. любое твое обращение к дрову (будь это вектор
> в IDT, или DeviceIOControl) ловится.
какой DeviceIOControl?! к серверу подситемы обращение осуществляется через LCP, а это уже NtConnectPort, о сущестовании которого не каждый знает, который слабо документирован и подобностей реализации LCP нет даже у Руссиновича. Потом еще можно SAMLIB поднапрячь, используя ее для храния ключевой информации и расшифровки моего файла...
драйверов там нет... будет подсистема, еще одна в добавлении к posix и os/2 (кстати, можно расшифровщик наваять и на os/2), а для совместимости в 98 включить свой манагер подсистем, который если не найдет системного манагера, поднимает свой, тем более что библиотку для реализации LCP на 9x я где-то недавно видел.

> Ну, это старфорс :) С ним еще не работал.
старфорс это да. это виртуальнаа машина. а виртуальная машина это тормоза

> А вообще, ты только это, аналог xprotect на создай.
ну у меня всего будет несколько килобайт.
ты копни на досуге psxss.exe/psxdll.dll - там килобайт кот наплакал, а ломать тяжело... правда, можно ставить точки останова на NTDLL, но! ф-ции USER32/GDI можно вызывать и в обход NTDLL, а ядерные функции есть в самом системе - их можно вызывать через кучу нычек в win32k.sys, а сам win32k.sys вызывать через csrss.exe.
да, это можно и заломать, но для этого придется сначала разобраться как все это работает ;)
главное - ослепить точки останова на win32 API, native API, а ниже ИМХО 90% хакеров даже и не пытались заглядывать.

> И вообще, защита на основе драйверных движков....
> Это для каждой проги привилегии админа...
я против прав админа. ну ну должен нормальный софт их требовать. лично я такой софт (если он только не от ведущих производителей) тру не раздумывая...
И вообще, защита на основе драйверных движков.... Это для каждой проги привилегии админа...


Дата: Май 26, 2004 11:38:14

ну вот и дакатились!
мама! он назвал нас "хакерами"..


Дата: Май 26, 2004 12:45:01

> мама! он назвал нас "хакерами"..
ну это я погорячился ;)
мне все-таки интересно обсудить тему взлома подобных приложений. какие у народа будут соображения? посоветовавшись с "лучимми собаководами" я пришел к выводу, что сломать такое должно быть несложно, но только при наличии соотвествующего инструментария, который всякий разработчик подсистем вынужжден кодить самостоятельно (кстати, говоря, выяснилось, что под NT есть очень много unix-подсистем, дающих win32 приложениям возможность юзаньях их функций, например, fork. трассировка айсом умирает в 2Eh/EAX=1Bh, а чтобы двигаться дальше, уже нужно знать куда ;)


Дата: Май 26, 2004 18:04:28

который слабо документирован и подобностей реализации LCP нет даже у Руссиновича

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


Дата: Май 26, 2004 18:37:07

ну да, Local Procedure Call. а я что сказал?
ой! меня проглючило ;)
а когда третью часть ждать-то?
кстати, в первых двух было замечано много ошибок (так что ошибки не у одного меня бывают).
в частности INT 2Eh в XP есть, в смысле она его поддерживает, ну а как реализован врапер NTDLL - это уже совсем другой вопрос...


Дата: Май 26, 2004 18:53:13

Ждать к осени.
Список ошибок в студию, все поправлю (если соглашусь :)). А тебя, меж прочим, до сих пор считаю, что пнул правильно, т.к. ты там (в тех главах, что я обматюкал в статье) такого написал, что у мя уши в трубочку свернулись.


Дата: Май 26, 2004 19:30:42

Спасибо Всем за ответы!
Пока их ждал, нашел способ для остановки на начале распаковщика, такой же, как предложил je_
Описываю способ для SICE.
Сядем у дубугера и выищем, откудова ОС вызывает DLL-EIP;
пищем адрес на лбу..ну и потом ставим бряки тудыть-когда-нужно..

Break&Enter с bpint 3 не прошел по причине BSOD

Осталась проблема намба ту - теперь надо найти OEP.
В связи с этим вопрос:

Может ли ASprotect сбрасывать bpm/bpx, которые установлены в SoftIce?

А то вроде как я могу брякнуться на вызове ф-ции из mfc42.dll и протрейсить обратно до вызывающей ф-ции в запакованной dll-ке (которая к этому моменту уже распакована), поставить bpm или bpx на вызывающий адрес , но толи ASPRotect такой хитрый , то ли я чего то не понимаю ...
Sice не выскакивает по этому breakpoint-у!

Заранее спсбо!


Дата: Май 26, 2004 19:34:08

Может ли ASprotect сбрасывать bpm/bpx, которые установлены в SoftIce?

Да, может. bpm могут быть сброшены (м-м-м, неточное выражение, для более подробных пояснений см. мою статью об упаковщиках на этом же сайте) с помощью трюка с CONTEXT. Ну а bpx могут быть просто перетерты, т.к. это просто СС в коде программы.


Дата: Май 26, 2004 19:53:39

Хмм ... ладно, спасибо всем, кто откликнулся!

Я так чувствую, что или распакуется dll - ка ... или сломается мозг : третьего не дано.
... накачал себе кучу статей/букварей/туториалов - пойду изучать ...

PS Солодовникова - на дыбу!
PPS шутка ...


Дата: Май 26, 2004 19:58:44

А то вроде как я могу брякнуться на вызове ф-ции из mfc42.dll

Сорри, я, может, просто еще больше запутал. Разумеется, ты совершенно свободно можешь ставить бряку где-то глубоко внутри MFC (хотя, надо учитывать, что некоторые пакеры проверяют пролог функции на СС-байт в самом начале!) и трейсить, тут все ОК. Я говорю об осторожности постановки СС в адресном контексте твоей целевой программы.


Дата: Май 26, 2004 20:02:25

если у вас W9x ОС, попробуйте BPR.
еще можете потрейсовать и дойти до OEP.


Дата: Май 31, 2004 03:06:01

> Список ошибок в студию, все поправлю (если соглашусь :))
> А тебя, меж прочим, до сих пор считаю, что пнул
> правильно, т.к. ты там (в тех главах, что я обматюкал в > статье) такого написал, что у мя уши в трубочку
свернулись.
ок. давай обмениваться ощибками как военнопленными.
вот твоя ошибка N1. int 2Eh в XP есть! то, что его не использует ntdll.dll еще ни о чем не говорит. вызови native-api через 2e и ты убедишься, что все фунциклирует.

> В том случае, если сами данные в секции имеют общий
> объем менее размера кластера - секция на диске
> выравнивается (т.е., дополняется нулями, int3 - CCh или
> nop - 90h) под размер кластера (не путать с сек-тором -
> кластеры состоят из многих секторов диска!), который
> обычно равен 512 байтам (или другое значение - поле
> OptionalHeader.FileAlignment).
бред. какой кластер? mmap такого слова и не знает ;) кластер вообще не постоянен, так что же если я допустим диск переформатировал, мне надо и все файлы перекопоновать? ;))

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

512 это не "обычный" это единственный размер сектора, с другим NT работать не сможет. какое отношение он имеет к FA - хрен знает. показать файл, где FA = 20h и он нормально грузиться на к 512-байтовом кластере?

> Так что, если автор хочет, чтобы его файл имел красивую иконку
ты хоть читал, что цитировал? upx ругался на typelib, а иконка всегда ищется через data_directory -> ресурсы. когда typelib вызывается? а когда не вызывается? ну так можно ли килять имя секциии ресурсов у 99% приложений или нет?

> Сказанное выше справедливо для всех приложений, имеющих > ресурсы (очевидно, часто, но не всегда, консольные
> приложения к таковым не относятся).
многие консоли хранят строки в ресурсах.

> #define RALIGN(dwToAlign, dwAlignOn) ((dwToAlign %
> dwAlignOn == 0) ?
> dwToAlign : dwToAlign - (dwToAlign % dwAlignOn) + dwAlignOn)
меня чуть не стошнило ;) а так не лучше?
#define ALIGN_DOWN(x, align) (x & ~(align-1))
#define ALIGN_UP(x, align)   ((x & (align-1))?ALIGN_DOWN(x,align)+align:x)

ну и т.д.


Дата: Май 31, 2004 03:39:57

Если align степень двойки то можно так:
#define align_up(x,align) ((x+align-1)&-align)
Но вариант Володи зато универсальный.


Дата: Май 31, 2004 11:23:52

> Но вариант Володи зато универсальный.
ага, только с нулем вылетает по экспепшену, а у меня возращает нуль-поинтер, корректно сигнализируя об ошибке, причем у меня проверка отсуствует и возникает в силу естественных законов природы, не требуя лишних тактов.
что же до унивесальности - кратность выравнивая по жизни равна степени 2, не только в pe, но и вообще... мне трудно представить когда и где может понадобится выравнивание на степень тройки, скажем, но и здесь можно придумать частное решение, намного более быстрое, чем взятие остатка, которое выполняется очень медленно. если уж на то пошло, можно было сконвертить aling во float, плавучку пни быстрее обрабатывают, причем намного ;)


Дата: Май 31, 2004 16:10:37

kaspersky
ты там в начале говорил насчет проблем с tls, можешь пояснить, где могут быть проблемы?
Делфевые проги например, активно юзают tls, но я чего-то не замечал, чтобы с ними были проблемы

<< . 1 . 2 . 3 . 4 . 5 . 6 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.054