Сейчас на форуме: bartolomeo, tyns777 (+5 невидимых) |
eXeL@B —› Программирование —› Запись в адресное пространство приложения |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 15 февраля 2011 15:53 · Личное сообщение · #1 Есть приложение, которое ставит драйвер хукающий NtOpenProcess и NtQuerySystemInformation, дабы спрятать своё присутствие в списке процессов и не дать открыть свой процесс через OpenProcess. Задача: писать в память этого процесса. При восстановлении SDT и снятии хуков приложение начинает работать некорректно, поэтому этот способ отпадает. Я инжекчу свою длл в этот процесс, поэтому в принципе все данные по нему и так есть. И даже из этой длл в его адресное пространство можно писать что угодно. Вопрос вот в чём: как в данной ситуации сделать так, чтобы в память этого процесса могло писать любое другое приложение? Тот же самый ArtMoney? |
|
Создано: 15 февраля 2011 16:05 · Личное сообщение · #2 Как вариант-переписать функции записи артмани на свои. К примеру, заинжекченая длл предоставляет интерфейс для записи. В артмани пихаешь свою длл, которая получает управление при необходимости записи и использует этот интерфейс. Без снятия хука в том или ином виде и без ковырянии в артмани вариантов не вижу. | Сообщение посчитали полезным: noph |
|
Создано: 15 февраля 2011 16:07 · Личное сообщение · #3 |
|
Создано: 15 февраля 2011 16:11 · Личное сообщение · #4 Rouse_ пишет: Инжектись посредством лоадера. Т.е. CreateProcess + CREATE_SUSPENDED, инжект, ResumeThread инжектить то я и так инжекчу.. с этим проблем нет. Как дать остальным программам возможность работать с этим скрытым процессом - вот в чём вопрос. Archer пишет: Как вариант-переписать функции записи артмани на свои. К примеру, заинжекченая длл предоставляет интерфейс для записи. В артмани пихаешь свою длл, которая получает управление при необходимости записи и использует этот интерфейс. Без снятия хука в том или ином виде и без ковырянии в артмани вариантов не вижу. да вот хотелось бы универсальный для любого подобного ПО способ |
|
Создано: 15 февраля 2011 16:42 · Личное сообщение · #5 Ну можешь попытаться сделать более-менее универсально, инжектить длл в артмани, которая хучит нужные апи, лучше сразу из нтдлл. На опенпроцесс возвращает какой-нить свой псевдохендл. При попытке читать/писать из/в него, использовать интерфейс. Тогда сам ехе артмани не придётся патчить, что-то особо хардкодить. Понятное дело, что способ не фонтан, могут попадаться новые апи, которые хукать придётся, что может потребовать ресёча, но лучше, чем ничего. Другого варианта не вижу. Либо как-то играться с хуком: снимать/разбираться, почему падает, как-то свой хук ставить, чтоб разрешать части процессов видеть и тд. |
|
Создано: 15 февраля 2011 16:48 · Личное сообщение · #6 |
|
Создано: 15 февраля 2011 17:00 · Личное сообщение · #7 Хендл получить полно способов, я уверен на 99%, что его можно получить и даже не из длл, а из другого процесса тоже. Всё зависит от драйвера, хуков и их реализации. То же самое и длл касается, сможет получить, если драйвер, опять же, не будет мешать. Другой вопрос, что ты делать с ним будешь, если, опять же, интерфейс как-то не прокидывать. А там фиг его знает, вдруг, кто-нить что более подходящее посоветует. |
|
Создано: 15 февраля 2011 17:21 · Личное сообщение · #8 Archer пишет: Хендл получить полно способов, я уверен на 99%, что его можно получить и даже не из длл, а из другого процесса тоже. Всё зависит от драйвера, хуков и их реализации. То же самое и длл касается, сможет получить, если драйвер, опять же, не будет мешать. Другой вопрос, что ты делать с ним будешь, если, опять же, интерфейс как-то не прокидывать. А там фиг его знает, вдруг, кто-нить что более подходящее посоветует. ну у меня была такая идея: создавать фейковый процесс, хукать в нужной программе (в юзермоде) OpenProcess. И в этой самой нужной программе (в той же артмани), при открытии фейкового процесса подсовывать хэндл скрытого процесса. На сколько идея реальная? |
|
Создано: 15 февраля 2011 17:36 · Личное сообщение · #9 |
|
Создано: 15 февраля 2011 18:04 · Поправил: Clerk · Личное сообщение · #10 |
|
Создано: 15 февраля 2011 19:43 · Личное сообщение · #11 |
|
Создано: 15 февраля 2011 20:37 · Личное сообщение · #12 |
|
Создано: 16 февраля 2011 07:53 · Личное сообщение · #13 noph Никак не поможет. Сейчас фаеры уже все легальные пути доступа к процессам закрыли, нет смысла пытаться получить описатель. Такие манипуляции только из ядра нужно выполнять. По сути вам нужен сплоет(механизм обхода защиты), так как именно он и есть решение вашей задачи. > как в данной ситуации сделать так, чтобы в память этого процесса могло писать любое другое приложение? Ну давайте подумаем. Есть высокоуровневый фильтр который выполнил редирект ссылок в сервисных таблицах на себя. Значит можно использовать следующее: o Установка своего фильтра поверх первого. o Изменение менеджера сисколов. Тут варианов куча. - Перенос сервисных таблиц в другое место. Текущие не используются и не изменяются в дальнейшим. - Установка своего менеджера. - Изменение текущего менеджера(например впилить часть, которая заменит оригинальную работу с сст, например пропатчить(фуу) KiSystemServiceRepeat/kssdoit etc). Технически проблем в реализации не должно быть никаких, брать и кодить. |
|
Создано: 16 февраля 2011 09:47 · Личное сообщение · #14 Clerk пишет: Есть высокоуровневый фильтр который выполнил редирект ссылок в сервисных таблицах на себя. Значит можно использовать следующее: o Установка своего фильтра поверх первого. o Изменение менеджера сисколов. Тут варианов куча. Как минимум, есть ещё и третий вариант - патч самого фильтра. Если он не проверяет свою CRC, то проблем быть не должно. Если проверяет - нужно искать место проверки и патчить его. Т.е. говоря просто, вам нужно не анхучить перехват в ssdt, а патчить код перехвата так, чтоб он никогда не выполнялся. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 16 февраля 2011 10:30 · Личное сообщение · #15 noph Т.е. есть дров, который грузится приложением и патчит рутины в сдт? Или он установлен и грузится сам по себе с системой? Какие именно рутины он патчит помимо NtOpenProcess и NtQuerySystemInformation? Если изменениям подверглись только эти две тогда ваша задача решается элементарным образом из юзермода элементарным же лоадером который будет подсывавать хэндл с полными правами целевому приложению, когда оно попытается выполнить NtOpenProcess c ID защищенного процесса. Господа Клерк и Архангел. Вы развели теоретический флуд о дурацких хаках. Сразу видно что-либо серьезное никто из вас никогда не писал. |
|
Создано: 16 февраля 2011 10:47 · Личное сообщение · #16 Alchemistry пишет: Вы развели теоретический флуд о дурацких хаках Какие есчо дурацкие хаки? Вы о чём? Метод патча перехвата использовался ещё сто лет назад при анпаке eXtreme Protector'a. Вполне реальные вещи описал и Clerk. Про PoC первой идеи писал ещё Ms-Rem, а также Хоглунд. Второй вариант - вполне логичное развитие перехвата _KiSystemService. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 16 февраля 2011 11:58 · Личное сообщение · #17 |
|
Создано: 16 февраля 2011 12:13 · Личное сообщение · #18 Alchemistry пишет: Т.е. есть дров, который грузится приложением и патчит рутины в сдт? Или он установлен и грузится сам по себе с системой? Какие именно рутины он патчит помимо NtOpenProcess и NtQuerySystemInformation? Если изменениям подверглись только эти две тогда ваша задача решается элементарным образом из юзермода элементарным же лоадером который будет подсывавать хэндл с полными правами целевому приложению, когда оно попытается выполнить NtOpenProcess c ID защищенного процесса. Вот я эту идею и рассматриваю. Вопрос тогда конкретнее, где брать этот хэндл с полными правами, который вы предлагает подсовывать? Хукаются только два указанных API. Драйвер грузится при запуске защищённого приложения. HiEndsoft пишет: Nightshade пишет: Вы не фрост случаем копаете? Вы находите фрост сложной для снятия "защитой"? Смотря о каком элементе фроста идёт речь. Анхукать API легко, а вот сделать так, чтобы всё при этом работало - теперь сложно. ARCHANGEL пишет: Как минимум, есть ещё и третий вариант - патч самого фильтра. Если он не проверяет свою CRC, то проблем быть не должно. Если проверяет - нужно искать место проверки и патчить его. Т.е. говоря просто, вам нужно не анхучить перехват в ssdt, а патчить код перехвата так, чтоб он никогда не выполнялся. вот этот вариант тоже интересен. Пропатчить файл драйвера не представляется возможным, т.к. защищённое приложение проверяет чексуммы всех своих файлов. Возможно ли патчить и на сколько сложно уже загруженный драйвер, так сказать, "на лету"? Рассматриваю ещё вариант замены драйвера в момент его подрузки. Но тут дело в том, что загружает драйвер библиотека упакованная фемидой. Вызываемые ей API так просто не перехватываются :/ |
|
Создано: 16 февраля 2011 12:22 · Поправил: HiEndsoft · Личное сообщение · #19 |
|
Создано: 16 февраля 2011 12:59 · Личное сообщение · #20 |
|
Создано: 16 февраля 2011 19:15 · Поправил: Clerk · Личное сообщение · #21 Alchemistry > Сразу видно что-либо серьезное никто из вас никогда не писал. Я написал двиг, который это делает автоматически. В данном случае будет отморфлен менеджер и интегрирована надстройка. А вот ты нуб и вобще не способен это реализовать, даже гипотетически, так как теорию вы не знаете В крайнем случае можно скрыть вызов от сторонних процессов подменив физиклпейдж. Но это весьма сложно в реализации. |
|
Создано: 16 февраля 2011 20:37 · Личное сообщение · #22 |
|
Создано: 17 февраля 2011 09:44 · Личное сообщение · #23 |
|
Создано: 17 февраля 2011 11:40 · Личное сообщение · #24 ARCHANGEL пишет: Почему нет? Метод тот же, что и для ринг 3 - сделали страницу валидной для записи, и патчте, сколько вашей душе угодно. У вас нет случаем ссылки на стоящие статьи, посвещённые этому поводу? А то с ключевыми словами для гугла затруднения. ARCHANGEL пишет: Что за фрост? А то я не в теме, даже не знаю, что у гугла спросить. Защита локализованных в России онлайн игр. Фемида в юзер моде, драйвер в кернел моде. Clerk пишет: Я написал двиг, который это делает автоматически. Он подойдёт для данной конкретной задачи? Исходники есть в публичном доступе? |
|
Создано: 17 февраля 2011 11:47 · Поправил: SReg · Личное сообщение · #25 |
|
Создано: 17 февраля 2011 12:40 · Поправил: HiEndsoft · Личное сообщение · #26 ARCHANGEL пишет: Что за фрост? А то я не в теме, даже не знаю, что у гугла спросить. Фрост - это простая ring-0/ring-3 защита, применяют для защиты игр и обычно дополняют gameguard'ом. А саму игру часто "до кучи" защищают Win License. Фрост, маяк - одинаковые поделки с одинаковыми принципами (патч SDT+ нотификаторы + проверка наличия драйверов известных тулз и отладчиков + "контрольный" поток в защищаемом процессе..). Но фрост снимается быстрее (для ХР даже драйвер писать не нужно). ----- продавец резиновых утёнков |
|
Создано: 17 февраля 2011 13:23 · Личное сообщение · #27 noph Статьи? Хм, посмотрите статью Рема про перехват АПИ на васме (третью часть) HiEndsoft Т.е. бедные юзвери не могут юзать АртМани? Так надо помочь )) А есть ли для исследований игра офф-лайн, защищённая таким способом? ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 17 февраля 2011 14:01 · Личное сообщение · #28 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 17 февраля 2011 18:43 · Личное сообщение · #29 |
|
Создано: 17 февраля 2011 20:20 · Личное сообщение · #30 |
. 1 . 2 . 3 . >> |
eXeL@B —› Программирование —› Запись в адресное пространство приложения |