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

 eXeL@B —› Программирование —› Внедрение в процесс
Посл.ответ Сообщение

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

Создано: 10 мая 2006 10:19
· Личное сообщение · #1

Здравствуйте
Собственно вопрос. Как можно защитить программу от внедрения в ее процесс. От dll hook'ов.
Подкиньте теорию, можно примеры реализации, желательно на Delphi
С уважением



Ранг: 54.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 10 мая 2006 10:20 · Поправил: xShadow
· Личное сообщение · #2

Qwatr
К примеру перехватить ZwOpenProcess и большенство прог обламается.



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

Создано: 10 мая 2006 10:32
· Личное сообщение · #3

PS: еще вопрос, к примру есть у нас запущенная программа А. Есть такая программа ArtMoney, так вот какие есть способы защиты от memory injecting, программы А



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

Создано: 10 мая 2006 10:35
· Личное сообщение · #4

И еще вопрос
Можно ли сделать так: поставить хук
function SetWindowsHookEx(idHook: integer; lpfn: TFNHookProc; hmod: HINST; dwThreadID: DWORD): HHOOK; stdcall;
idHook - WH_DEBUG. Фу-ия будет вызываться каждый раз перед любым хуком, а там уже прибивать ненужные процессы?




Ранг: 78.6 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 10 мая 2006 11:41
· Личное сообщение · #5

xShadow
для перехвата обязательно драйвер писать?



Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 10 мая 2006 16:47
· Личное сообщение · #6

Qwatr Дело в том, что способов внедрения в чужой процесс - тонна, тебе надо защититься от всех, или только от каких-то конкретных способов? Запсись в адресное пространство можно отбить, если перехватить ZwWriteVirtualMemory, но для этого надо писать драйвер, который будет патчить Service Descriptor Table

-----
Research is my purpose




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

Создано: 10 мая 2006 16:55
· Личное сообщение · #7

Error_Log пишет:
Запсись в адресное пространство можно отбить, если перехватить ZwWriteVirtualMemory, но для этого надо писать драйвер, который будет патчить Service Descriptor Table

Этого мало, надо ещё ZwCreateRemoteThread ловить. Только вот от драйвера или подсовывания левой DLL при старте процесса это не спасёт.



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

Создано: 10 мая 2006 20:23
· Личное сообщение · #8

Error_Log А перехватом Read/WriteProcessMemory можно обойтись?



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

Создано: 10 мая 2006 20:25
· Личное сообщение · #9

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



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

Создано: 10 мая 2006 20:33
· Личное сообщение · #10

Без драйвера я только один способ вижу - постоянно проверять контрольную сумму важного участка кода, сделать эту проверку как можно незаметнее. А чтоб запретить работу API WriteProcessMemory это не реально с третьего кольца что-то сделать.



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

Создано: 10 мая 2006 21:39
· Личное сообщение · #11

Есть такая программа ArtMoney, которая позволяет изменять значения переменных ()деньги, здороье и т.д.) Так вот мне именно от этого нужно защитить некий процесс А.



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

Создано: 10 мая 2006 21:43
· Личное сообщение · #12

Ну если только от артмани, просто создай поток, который каждые 1-2 секунды проверяет контрольную сумму блока памяти где переменные лежат, если она изменилась, ExitProcess и всё тут.



Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 10 мая 2006 22:03
· Личное сообщение · #13

Qwatr

dragon дело говорит - имхо это самое простое решение.

-----
Research is my purpose




Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 10 мая 2006 22:12
· Личное сообщение · #14

dragon пишет:
каждые 1-2 секунды проверяет контрольную сумму блока памяти где переменные лежат, если она изменилась, ExitProcess

Так на то они и переменные ;) Ты наверное хотел сказать, что перед каждой официальной модификацией памяти подсчитывать CRC? А ещё можно шифровацца и по обращению - decrypt, по окончанию - encrypt

-----
Я медленно снимаю с неё UPX... *FF_User*




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

Создано: 10 мая 2006 23:07
· Личное сообщение · #15

AlexZ пишет:
Ты наверное хотел сказать, что перед каждой официальной модификацией памяти подсчитывать CRC?

Ну естесственно, только не перед а после А с шифрованием это ещё удобнее, особенно если с объектами на C++ прога пишется, но от проверки CRC отказываться не стоит.




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 10 мая 2006 23:26
· Личное сообщение · #16

Еще можно искать в памяти процесс ArtMoney и завершать его - это еще проще. Или стандартно:

hwnd = FindWindow("Artmoney",vbNullString)
DestroyWindow(hwnd)

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 10 мая 2006 23:30
· Личное сообщение · #17

GPcH
А его возьмут и переименуют.



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 10 мая 2006 23:33
· Личное сообщение · #18

Qwatr
Изврат: храни в переменных поксоренные значения.



Ранг: 10.5 (новичок)
Активность: 0=0
Статус: Участник

Создано: 11 мая 2006 00:23 · Поправил: kropalik
· Личное сообщение · #19

еще можно перехватить LdrLoadDll()
из ntdll.dll и не грузить левые dll.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 12 мая 2006 07:04
· Личное сообщение · #20

Проще прятать значения переменных, шифруй их или храни в памяти MEM_VALUE = VALUE_ON_DISPLAY + 1, а при выводе VALUE_ON_DISPLAY = MEM_VALUE - 1
Простенькая, но защита

-----
Недостаточно только получить знания:надо найти им приложение




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

Создано: 14 мая 2006 23:01
· Личное сообщение · #21

2Rascal и др.
Ну так нужно защитить не "мою" программу, а совершенно другую, которую "моя" программа будет искать по названию окна(к примеру)



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 15 мая 2006 03:32 · Поправил: Demon666
· Личное сообщение · #22

Qwatr
Ты прямо как агент ФСБ, какие то X с Y придумал и всех просишь, что бы отгадали кто это такие
А на счет “dll hook'ов” ты уверен, что там им место для применения нашлось?
(они имеют место не стабильно работать и в шароварных прогах их мало кто применяет разве что только в…)
Вообще есть такое понятие “цепочка hook'ов ” последний который устоновлен (имею в виду системный) тот самый и главный!
Если ты уверен, что твой самый главный значит, ставь свой hook.
И самое главное не применяй CallNextHookEx! Эта функция разрешает обработку других hook'ов.
(представь, если такой метод применяется в этой проге которую ты юзаешь, а она возьмет, да и твой процесс прибьет, в общем, делай сам выводы!)
Это тебе ответ на твой вопрос:

Можно ли сделать так: поставить хук
function SetWindowsHookEx(idHook: integer; lpfn: TFNHookProc; hmod: HINST; dwThreadID: DWORD): HHOOK; stdcall;
idHook - WH_DEBUG. Фу-ия будет вызываться каждый раз перед любым хуком, а там уже прибивать ненужные процессы?

По названию окна не советую искать программу.

Идентичная тема уже такая была и по этому на мысль наталкивает, что ты тут запостился и дальше этого поста не видишь!
Интересно, что ты от других ждешь?
Поиск рулит в данном случае! www.wasm.ru/article.php?article=apihook_1

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com





Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 15 мая 2006 05:37
· Личное сообщение · #23

Qwatr
Короче сплась Read&Write. От артмани поможет

-----
Недостаточно только получить знания:надо найти им приложение



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


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