Сейчас на форуме: bartolomeo, tyns777 (+6 невидимых) |
eXeL@B —› Программирование —› GP: to Smon. |
Посл.ответ | Сообщение |
|
Создано: 26 февраля 2011 21:26 · Поправил: Clerk · Личное сообщение · #1 Закрыли почемуто топик http://exelab.ru/f/action=vthread&forum=2&topic=17807. Вот небольшой пруфкод. Ищет модификации кода для функции LdrLoadDll(взял которая побольше). Графом описывается ~43k инструкций Откатано на XPSP3. --> Link <-- c87c_26.02.2011_CRACKLAB.rU.tgz - Reloc.zip |
|
Создано: 27 февраля 2011 13:40 · Личное сообщение · #2 Спасибо. Попробовал на том что есть под рукой (w7x64), падает тут, при вызове LdrLoadDll, завтра погляжу что под xp происходит. А вообще - как то смахивает на хардкод, похоже под некоторыми осями будут траблы. Code:
----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 28 февраля 2011 10:07 · Личное сообщение · #3 |
|
Создано: 28 февраля 2011 10:33 · Личное сообщение · #4 |
|
Создано: 28 февраля 2011 12:37 · Личное сообщение · #5 |
|
Создано: 28 февраля 2011 14:05 · Личное сообщение · #6 |
|
Создано: 28 февраля 2011 15:16 · Личное сообщение · #7 |
|
Создано: 28 февраля 2011 16:31 · Личное сообщение · #8 |
|
Создано: 28 февраля 2011 17:15 · Поправил: Clerk · Личное сообщение · #9 Smon > На xp работает, но очень медленно всё это, реализация с маппингом и сравнением crc будет на порядок быстрей по всей видимости. Пропускная способность данного движка ~170k/sec инструкций(P4, U-mode, normal priority). Таким образом граф для 43k инструкций создаётся примерно за 260ms. Это весьма малое время, визуально задержка фактически не заметна. Чексуммы не позволят вам найти функции используемые целевой. Таким образом вы не можите узнать перехвачена/изменена ли текущая функа. ajax > Идея стара, как мир. Идея стара, но реализации в паблике нет, за исключением данной. Тупо проверка с оригинальной либой на диске тривиальна и интереса не представляет, так как в этом случае нет возможности определить принадлежность изменённого кода целевой процедуре. |
|
Создано: 28 февраля 2011 17:30 · Личное сообщение · #10 |
|
Создано: 28 февраля 2011 17:40 · Поправил: Clerk · Личное сообщение · #11 ajax > Доли секунды мапинг и прогон релоков. Как выше написали про тормоза, это не на парсинг время уходит а на загрузку оригинальной либы. Это и понятно, ведь весь загрузчик трассируется. Для рабочего(софт) примера это совсем не нужно, решается элементарно множеством способов, просто для данного семпла это излишне. |
|
Создано: 01 марта 2011 10:05 · Личное сообщение · #12 Так, изложу свою теорию (больше на гипотезу похоже), а вы скажите, кто что думает. В общем, задача стоит следующая - имеется динамическая библиотека, а в ней какая-то функция. Нужно узнать, перехвачена ли она методом пропатчивания её кода. Так вот, при загрузке динамической библиотеки её секция кода загружается в физическую память лишь однажды, и доступна для чтения всем процессам, которые того потребуют, подгрузив эту библиотеку в своё адресное пространство. Но, как только какаой-то процесс вызывает, например, VirtualProtectEx + WriteProcessMemory, модифицируя тем самым страницу кода, эта страница копируется в адресное пространство процесса (по соответствующему #PF), и её уникальная копия (модифицированная) содержится в процессе вместо первоначальной. Так вот, если мы знаем линейный (виртуальный) адрес пропатченной функции, знаем размер страницы (вызов GetSystemInfo), то можем вычислить линейный адрес страницы, далее вычислить её физический адрес, и если он не совпадёт с физическим адресом той же страницы в адресном пространстве другого процесса (в котором эта функция заведомо неперехвачена), то ахтунг, перехват имел место быть. Для его снятия нужно восстановить содержимое этой страницы из физической памяти другого (чистого) процесса. Метод должен без поправок работать на ntdll.dll и kernel32.dll, базы которых всегда постоянны (справедливо для ХР, для других не проверял), с небольшими модификациями можно юзать и для других билиотек. Вопрос только - где взять эти чистые процессы? Для PoC подойдёт, например, winlogon.exe, или csrss.exe, но, в общем случае - хз. Что скажете? ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 01 марта 2011 10:39 · Личное сообщение · #13 Ты плохо читал прошлый топик. Речь про аверов и прочий гавнософт. Они хукают апи во всех без исключения процессах. Тут вопрос больше в другом, для какой цели это нужно. Если для каких то своих дел, то больше подойдет всякая нестабильная херь которую постоянно предлагает клерк, если для нормальной эксплуатации софта, с совместимостью - легально короче, то метод один: мап библиотеки и расчет релоков. Так делает Themida, мало того, она потом и работает только с этими виртуальными копиями а не с основными библами и ничего, на всех виндах пашет, юзеры довольны. ----- Yann Tiersen best and do not fuck |
|
Создано: 01 марта 2011 17:48 · Личное сообщение · #14 PE_Kill > больше подойдет всякая нестабильная херь которую постоянно предлагает клерк Не совместимость с разными архитектурами(напр. IA64) не является не стабильностью. Герь это аверские механизмы, всякие патчи, чексуммы и прочая хуйня, которая реально обходится элементарно. Вы привыкле решать задачи в десять срок, независимо от качества решения Как на васме подьебали - какбы не менялась ось, вместо секций пайпы не начнут применяться, также не изменяться прототипы функций и значения статусов. Про какой хардкод идёт речь не понятно. > в физическую память лишь однажды, и доступна для чтения всем процессам, которые того потребуют, подгрузив эту библиотеку в своё адресное пространство. Каждый процесс использует свой набор страниц, если не используется разделяемая память, то страницы локальны для процесса, это относится к проекциям файловых секций. |
|
Создано: 02 марта 2011 07:10 · Поправил: PE_Kill · Личное сообщение · #15 Clerk пишет: Не совместимость с разными архитектурами(напр. IA64) не является не стабильностью. Поиск нужных значений по сигнатурам является нестабильностью. Вам бы написать хоть раз коммерческий софт этак на 50-60 тысяч строк кода, и заявить клиентам что он у вас виндовс совместим. Судя по вашим кодесам в следующей же винде софт и свалится, а у меня работает и на последней семерке, хотя и писался под Win2000, и не переписывался при выходе новой OS. ----- Yann Tiersen best and do not fuck |
|
Создано: 02 марта 2011 07:17 · Поправил: Clerk · Личное сообщение · #16 PE_Kill > Поиск нужных значений по сигнатурам является нестабильностью. Где вы у меня видили сигнатурный поиск ? Если понимать в вашем контексте, то и импорт тоже использует сигнатуры, в виде имен или ординалов апи(например "RtlAddVectoredExceptionHandler" - в младших версиях системы её нет) > Судя по вашим кодесам в следующей же винде софт и свалится По каким причинам свалится ? Прототип искомой функи я вытянул из сурсов 2000. Он не меняелся в XP и 7 и вобще маловероятно что изменится. А значения статусов вобще никогда не поменяются. |
|
Создано: 02 марта 2011 07:23 · Поправил: PE_Kill · Личное сообщение · #17 |
|
Создано: 02 марта 2011 07:27 · Личное сообщение · #18 |
|
Создано: 02 марта 2011 08:09 · Поправил: Alchemistry · Личное сообщение · #19 Clerk пишет: Данный код 32-х битный. No comments. Ваш ахтунговый харкод не актуален потому что существует внятная легальная документация, и методы старые как мир и при том рабочие. Причем их порт на х64, IA-64 и далее будет заключаться в предельно простой настройке проекта и элементарному перекомпилированию, тогда как вам придется почти все переписывать заново. No comments. Теперь внимание, сосредоточтесь, простая задача для вашего логического аппарата. Дано: заказчик софта, например софтфирма, бюджет 1мегарубль (к примеру, берем рашу) конкурс на котором, первый претендент это Вы, второй например PE_Kill. Прочие норм.усл. Как вы считаете, чье решение победит? имхо не дай бог вам когда-нибудь писать что-то действительно системное и критически важное. пы сы Смысл ваших постенгов потешить ЧСВ и развести срач в комментах как вы любили делать на васме, пока вас откуда наконец-то (слава богу) не забанили. |
|
Создано: 02 марта 2011 08:46 · Личное сообщение · #20 |
|
Создано: 02 марта 2011 15:27 · Поправил: HiEndsoft · Личное сообщение · #21 dermatolog пишет: в коммерческом софте их использовать очень НЕ рекомендуется. Не согласен, - перспективность это качество, никто не мешает вам развивать идеи. Alchemistry Естественно за мегарубль можно довести теоретические аспекты до практического применения, если не "зажраться" до этого. dermatolog пишет: все его конструкции разваливались на раз-два -- можно посмотреть конкретику? Интересно. to Clerk - вам бы больше статей писать "разжёваных", т.к. некоторые вообще "не вкуривают". ----- продавец резиновых утёнков |
|
Создано: 02 марта 2011 17:07 · Поправил: Clerk · Личное сообщение · #22 Alchemistry > Ваш ахтунговый харкод не актуален потому что существует внятная легальная документация Во первых где вы видите хардкод, сосредоточтесь. Во вторых внятная легальная документация это сурсы, в частности 2000 и открытые wrk. > Причем их порт на х64, IA-64 и далее будет заключаться в предельно простой настройке проекта Данный код работает непосредственно с бинарным кодом, тотже LDE 32-х битный и не дизасмит 64-х разрядные инструкции. Универсальный, по вашему "портабельный" код это скрипт, где всё за вас делает компилятор. > Как вы считаете, чье решение победит? Моё решение всегда побеждает, так как это сильное решение. Топик скатился к обсуждению хуеты типо переносимости на другие платформы. Код рабочий во всей 32-х битной линейке NT. Остальные кому не нравятся сосут хуйца. Все свободны, топик закрываю. |
eXeL@B —› Программирование —› GP: to Smon. |
Эта тема закрыта. Ответы больше не принимаются. |