Сейчас на форуме: bartolomeo, tyns777 (+5 невидимых)

 eXeL@B —› Программирование —› Запись в адресное пространство приложения
. 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 16.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 15 февраля 2011 15:53
· Личное сообщение · #1

Есть приложение, которое ставит драйвер хукающий NtOpenProcess и NtQuerySystemInformation, дабы спрятать своё присутствие в списке процессов и не дать открыть свой процесс через OpenProcess.
Задача: писать в память этого процесса.

При восстановлении SDT и снятии хуков приложение начинает работать некорректно, поэтому этот способ отпадает. Я инжекчу свою длл в этот процесс, поэтому в принципе все данные по нему и так есть. И даже из этой длл в его адресное пространство можно писать что угодно. Вопрос вот в чём: как в данной ситуации сделать так, чтобы в память этого процесса могло писать любое другое приложение? Тот же самый ArtMoney?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 15 февраля 2011 16:05
· Личное сообщение · #2

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

| Сообщение посчитали полезным: noph

Ранг: 35.1 (посетитель), 1thx
Активность: 0.010
Статус: Участник

Создано: 15 февраля 2011 16:07
· Личное сообщение · #3

Инжектись посредством лоадера. Т.е. CreateProcess + CREATE_SUSPENDED, инжект, ResumeThread



Ранг: 16.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 15 февраля 2011 16:11
· Личное сообщение · #4

Rouse_ пишет:
Инжектись посредством лоадера. Т.е. CreateProcess + CREATE_SUSPENDED, инжект, ResumeThread

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

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

да вот хотелось бы универсальный для любого подобного ПО способ




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 15 февраля 2011 16:42
· Личное сообщение · #5

Ну можешь попытаться сделать более-менее универсально, инжектить длл в артмани, которая хучит нужные апи, лучше сразу из нтдлл. На опенпроцесс возвращает какой-нить свой псевдохендл. При попытке читать/писать из/в него, использовать интерфейс. Тогда сам ехе артмани не придётся патчить, что-то особо хардкодить.
Понятное дело, что способ не фонтан, могут попадаться новые апи, которые хукать придётся, что может потребовать ресёча, но лучше, чем ничего. Другого варианта не вижу.
Либо как-то играться с хуком: снимать/разбираться, почему падает, как-то свой хук ставить, чтоб разрешать части процессов видеть и тд.



Ранг: 16.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 15 февраля 2011 16:48
· Личное сообщение · #6

Archer пишет:
Archer

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




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 15 февраля 2011 17:00
· Личное сообщение · #7

Хендл получить полно способов, я уверен на 99%, что его можно получить и даже не из длл, а из другого процесса тоже. Всё зависит от драйвера, хуков и их реализации.
То же самое и длл касается, сможет получить, если драйвер, опять же, не будет мешать.
Другой вопрос, что ты делать с ним будешь, если, опять же, интерфейс как-то не прокидывать.
А там фиг его знает, вдруг, кто-нить что более подходящее посоветует.



Ранг: 16.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 15 февраля 2011 17:21
· Личное сообщение · #8

Archer пишет:
Хендл получить полно способов, я уверен на 99%, что его можно получить и даже не из длл, а из другого процесса тоже. Всё зависит от драйвера, хуков и их реализации.
То же самое и длл касается, сможет получить, если драйвер, опять же, не будет мешать.
Другой вопрос, что ты делать с ним будешь, если, опять же, интерфейс как-то не прокидывать.
А там фиг его знает, вдруг, кто-нить что более подходящее посоветует.

ну у меня была такая идея:
создавать фейковый процесс, хукать в нужной программе (в юзермоде) OpenProcess. И в этой самой нужной программе (в той же артмани), при открытии фейкового процесса подсовывать хэндл скрытого процесса.
На сколько идея реальная?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 15 февраля 2011 17:36
· Личное сообщение · #9

Попробуй-узнаешь. Я думаю, вполне реально. Для этого только нужен, опять же, интерфейс из прикрытого процесса. Можешь и перечисление процессов тогда уж похукать и вставить его туда, обходясь без фейкового. И тупо копировать хендл не катит, придётся через DuplicateHandle работать.



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 15 февраля 2011 18:04 · Поправил: Clerk
· Личное сообщение · #10

Нафиг вобще всякие анхуки. Да и вобще сам менеджер сисколов(сст и всё остальное) не нужен для вызова сервисов.



Ранг: 16.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 15 февраля 2011 19:43
· Личное сообщение · #11

Clerk пишет:
Нафиг вобще всякие анхуки. Да и вобще сам менеджер сисколов(сст и всё остальное) не нужен для вызова сервисов.

не понял о чём ты :/ как это поможет мне открывать скрытый процесс?




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 15 февраля 2011 20:37
· Личное сообщение · #12

Вы не фрост случаем копаете?



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 16 февраля 2011 07:53
· Личное сообщение · #13

noph
Никак не поможет. Сейчас фаеры уже все легальные пути доступа к процессам закрыли, нет смысла пытаться получить описатель. Такие манипуляции только из ядра нужно выполнять. По сути вам нужен сплоет(механизм обхода защиты), так как именно он и есть решение вашей задачи.

> как в данной ситуации сделать так, чтобы в память этого процесса могло писать любое другое приложение?
Ну давайте подумаем. Есть высокоуровневый фильтр который выполнил редирект ссылок в сервисных таблицах на себя. Значит можно использовать следующее:
o Установка своего фильтра поверх первого.
o Изменение менеджера сисколов. Тут варианов куча.
- Перенос сервисных таблиц в другое место. Текущие не используются и не изменяются в дальнейшим.
- Установка своего менеджера.
- Изменение текущего менеджера(например впилить часть, которая заменит оригинальную работу с сст, например пропатчить(фуу) KiSystemServiceRepeat/kssdoit etc).
Технически проблем в реализации не должно быть никаких, брать и кодить.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 16 февраля 2011 09:47
· Личное сообщение · #14

Clerk пишет:

Есть высокоуровневый фильтр который выполнил редирект ссылок в сервисных таблицах на себя. Значит можно использовать следующее:
o Установка своего фильтра поверх первого.
o Изменение менеджера сисколов. Тут варианов куча.


Как минимум, есть ещё и третий вариант - патч самого фильтра. Если он не проверяет свою CRC, то проблем быть не должно. Если проверяет - нужно искать место проверки и патчить его. Т.е. говоря просто, вам нужно не анхучить перехват в ssdt, а патчить код перехвата так, чтоб он никогда не выполнялся.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 16 февраля 2011 10:30
· Личное сообщение · #15

noph
Т.е. есть дров, который грузится приложением и патчит рутины в сдт? Или он установлен и грузится сам по себе с системой? Какие именно рутины он патчит помимо NtOpenProcess и NtQuerySystemInformation?
Если изменениям подверглись только эти две тогда ваша задача решается элементарным образом из юзермода элементарным же лоадером который будет подсывавать хэндл с полными правами целевому приложению, когда оно попытается выполнить NtOpenProcess c ID защищенного процесса.

Господа Клерк и Архангел. Вы развели теоретический флуд о дурацких хаках. Сразу видно что-либо серьезное никто из вас никогда не писал.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 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.




Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 16 февраля 2011 11:58
· Личное сообщение · #17

Nightshade пишет:
Вы не фрост случаем копаете?

Вы находите фрост сложной для снятия "защитой"?

-----
продавец резиновых утёнков




Ранг: 16.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 16 февраля 2011 12:13
· Личное сообщение · #18

Alchemistry пишет:
Т.е. есть дров, который грузится приложением и патчит рутины в сдт? Или он установлен и грузится сам по себе с системой? Какие именно рутины он патчит помимо NtOpenProcess и NtQuerySystemInformation?
Если изменениям подверглись только эти две тогда ваша задача решается элементарным образом из юзермода элементарным же лоадером который будет подсывавать хэндл с полными правами целевому приложению, когда оно попытается выполнить NtOpenProcess c ID защищенного процесса.

Вот я эту идею и рассматриваю. Вопрос тогда конкретнее, где брать этот хэндл с полными правами, который вы предлагает подсовывать?
Хукаются только два указанных API. Драйвер грузится при запуске защищённого приложения.


HiEndsoft пишет:
Nightshade пишет:
Вы не фрост случаем копаете?
Вы находите фрост сложной для снятия "защитой"?

Смотря о каком элементе фроста идёт речь. Анхукать API легко, а вот сделать так, чтобы всё при этом работало - теперь сложно.

ARCHANGEL пишет:
Как минимум, есть ещё и третий вариант - патч самого фильтра. Если он не проверяет свою CRC, то проблем быть не должно. Если проверяет - нужно искать место проверки и патчить его. Т.е. говоря просто, вам нужно не анхучить перехват в ssdt, а патчить код перехвата так, чтоб он никогда не выполнялся.

вот этот вариант тоже интересен. Пропатчить файл драйвера не представляется возможным, т.к. защищённое приложение проверяет чексуммы всех своих файлов. Возможно ли патчить и на сколько сложно уже загруженный драйвер, так сказать, "на лету"?
Рассматриваю ещё вариант замены драйвера в момент его подрузки. Но тут дело в том, что загружает драйвер библиотека упакованная фемидой. Вызываемые ей API так просто не перехватываются :/



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 16 февраля 2011 12:22 · Поправил: HiEndsoft
· Личное сообщение · #19

noph
Судя по вашим темам...
Если это то что я думаю - пишите в запросы на взлом или мне в ЛС

-----
продавец резиновых утёнков





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 16 февраля 2011 12:59
· Личное сообщение · #20

noph пишет:
Возможно ли патчить и на сколько сложно уже загруженный драйвер, так сказать, "на лету"?

Почему нет? Метод тот же, что и для ринг 3 - сделали страницу валидной для записи, и патчте, сколько вашей душе угодно.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 16 февраля 2011 19:15 · Поправил: Clerk
· Личное сообщение · #21

Alchemistry
> Сразу видно что-либо серьезное никто из вас никогда не писал.
Я написал двиг, который это делает автоматически. В данном случае будет отморфлен менеджер и интегрирована надстройка. А вот ты нуб и вобще не способен это реализовать, даже гипотетически, так как теорию вы не знаете

В крайнем случае можно скрыть вызов от сторонних процессов подменив физиклпейдж. Но это весьма сложно в реализации.




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 16 февраля 2011 20:37
· Личное сообщение · #22

На dev.rf-cheats.ru расписана работа фроста. Там же есть драйвер для его обхода. Думаю вам стоит написать туда




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 17 февраля 2011 09:44
· Личное сообщение · #23

Что за фрост? А то я не в теме, даже не знаю, что у гугла спросить.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 16.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 17 февраля 2011 11:40
· Личное сообщение · #24

ARCHANGEL пишет:
Почему нет? Метод тот же, что и для ринг 3 - сделали страницу валидной для записи, и патчте, сколько вашей душе угодно.

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

ARCHANGEL пишет:
Что за фрост? А то я не в теме, даже не знаю, что у гугла спросить.

Защита локализованных в России онлайн игр. Фемида в юзер моде, драйвер в кернел моде.


Clerk пишет:
Я написал двиг, который это делает автоматически.

Он подойдёт для данной конкретной задачи? Исходники есть в публичном доступе?



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 17 февраля 2011 11:47 · Поправил: SReg
· Личное сообщение · #25

ARCHANGEL пишет:
Что за фрост?

www.google.ru/search?hl=ru&source=hp&q=frost+security&aq=2&aqi=g8g-s1g1&aql=&oq=frost+
upd:
уже ответили.
PointBlank опять хачат, 100 пудоф...



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 17 февраля 2011 12:40 · Поправил: HiEndsoft
· Личное сообщение · #26

ARCHANGEL пишет:
Что за фрост? А то я не в теме, даже не знаю, что у гугла спросить.

Фрост - это простая ring-0/ring-3 защита, применяют для защиты игр и обычно дополняют gameguard'ом. А саму игру часто "до кучи" защищают Win License.
Фрост, маяк - одинаковые поделки с одинаковыми принципами (патч SDT+ нотификаторы + проверка наличия драйверов известных тулз и отладчиков + "контрольный" поток в защищаемом процессе..). Но фрост снимается быстрее (для ХР даже драйвер писать не нужно).

-----
продавец резиновых утёнков





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 17 февраля 2011 13:23
· Личное сообщение · #27

noph
Статьи? Хм, посмотрите статью Рема про перехват АПИ на васме (третью часть)
--> Tutorial <--

HiEndsoft
Т.е. бедные юзвери не могут юзать АртМани? Так надо помочь )) А есть ли для исследований игра офф-лайн, защищённая таким способом?

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 17 февраля 2011 14:01
· Личное сообщение · #28

ARCHANGEL пишет:
Т.е. бедные юзвери не могут юзать АртМани? Так надо помочь ))

уже помог некоторым ))
ARCHANGEL пишет:
А есть ли для исследований игра офф-лайн, защищённая таким способом?

не видел

-----
продавец резиновых утёнков




Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 февраля 2011 18:43
· Личное сообщение · #29

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



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 17 февраля 2011 20:20
· Личное сообщение · #30

как-то занесло на один сайт - мож пригодится
www.opensc.ws/snippets-unsorted/9822-process-injection.html


. 1 . 2 . 3 . >>
 eXeL@B —› Программирование —› Запись в адресное пространство приложения
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати