Сейчас на форуме: tyns777, zombi-vadim (+5 невидимых) |
eXeL@B —› Программирование —› Затираем следы в PEB |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 31 июля 2010 14:19 · Поправил: daFix · Личное сообщение · #1 Состряпал такой не хитрый код, который должен избавить нас от IsDebuggerPresent: Code:
Пробовал запускать на болванке, но палимся, не могу понять где ошибся. ThreadLocalBase получаю из события CREATE_PROCESS_DEBUG_EVENT: Code:
----- Research For Food |
|
Создано: 31 июля 2010 14:25 · Личное сообщение · #2 Лучше дай скомпиленный вариант. daFix пишет: WriteProcessMemory(pi.hProcess, (void*)offset, "0", 1,0); Это ты прикалываешься? Почему "0"? Думается мне вот так: Code:
|
|
Создано: 31 июля 2010 14:46 · Личное сообщение · #3 > WriteProcessMemory(pi.hProcess, (void*)offset, "0", 1,0); он тебе и записывает значение 0x30 > WriteProcessMemory(pi.hProcess, (void*)offset, buff, 1,0); так неверно, ловим #ac скорее Code:
да, и ничего не слышали про PUCHAR? |
|
Создано: 31 июля 2010 14:49 · Поправил: daFix · Личное сообщение · #4 int Блин, вот я олень, сразу не сообразил что это будет байт 0x30 Спасибо, заработало! Ну тогда уже в догонку, чтобы не создавать новых тем, видел как-то доку по антиотладке, где описывались API и поля PEB, откуда они берут данные, по которым мы палимся Может кто нибудь сказать её название? ADDED n0name Признаться честно, не слышал, сейчас погуглю ----- Research For Food |
|
Создано: 31 июля 2010 14:55 · Личное сообщение · #5 |
|
Создано: 31 июля 2010 14:59 · Личное сообщение · #6 > это не стандартный тип, это тип из винды, в топку такое ага, ага, а WriteProcessMemory это кроссплатформенное решение typedef unsigned char * PUCHAR; и тогда не понадобитсья конвертация dword'ов в указатели. что-то типа такого: Code:
ну и само собой более x64-safe. |
|
Создано: 31 июля 2010 15:01 · Личное сообщение · #7 IsDebuggerPresent берет значение из _PEB.BeingDebugged Code:
также _PEB.NtGlobalFlag указывает на наличие отладчика Code:
----- Nulla aetas ad discendum sera |
|
Создано: 31 июля 2010 15:09 · Личное сообщение · #8 |
|
Создано: 31 июля 2010 15:14 · Личное сообщение · #9 |
|
Создано: 31 июля 2010 15:19 · Поправил: Clerk · Личное сообщение · #10 |
|
Создано: 31 июля 2010 15:20 · Поправил: Coderess · Личное сообщение · #11 |
|
Создано: 31 июля 2010 15:22 · Личное сообщение · #12 |
|
Создано: 31 июля 2010 15:25 · Личное сообщение · #13 |
|
Создано: 01 августа 2010 03:04 · Личное сообщение · #14 |
|
Создано: 01 августа 2010 11:42 · Личное сообщение · #15 |
|
Создано: 02 августа 2010 09:19 · Поправил: Av0id · Личное сообщение · #16 вот тут можно кое-что подсмотреть про затирание следов в PEB, где-то еще был более новый вариант код в последнем посте (прячемся от IsDebuggerPresent и NtGlobalFlags) можно еще по аналогии дописать проверку heap-flags Code:
|
|
Создано: 04 августа 2010 17:44 · Личное сообщение · #17 daFix Нужно было выполнить задержку, вспомнил про этот топик: Code:
Чтоже будет при трассировке ? |
|
Создано: 04 августа 2010 20:25 · Личное сообщение · #18 |
|
Создано: 04 августа 2010 20:50 · Личное сообщение · #19 daFix Раз вам ничего не интересно, тогда решение в лоб: Получаете описатель отладочного порта посредством NtQueryInformationProcess(ProcessDebugObjectHandle) и удаляете его нафиг с помощью NtRemoveProcessDebug. Добавляете сюда NtContinue чтобы наебать трейсер или например это http://exelab.ru/f/action=vthread&forum=6&topic=16000 Всё тривиально. А вы там какието флажки в среде чекаете |
|
Создано: 04 августа 2010 21:58 · Личное сообщение · #20 Clerk Из драйвера делаю так Code:
Есть разница если сделаю в юзермоде по вашему? NtQueryInformationProcess(ProcessDebugObjectHandle) и удаляете его нафиг с помощью NtRemoveProcessDebug ----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes |
|
Создано: 04 августа 2010 22:05 · Поправил: Clerk · Личное сообщение · #21 |
|
Создано: 05 августа 2010 11:26 · Поправил: ARCHANGEL · Личное сообщение · #22 По сути нет, но EPROCESS разнится от версии винды к версии. Нужно либо точно вычислять смещения DebugObject, либо юзать экспортируемые функции. Это, конечно, не значит, что из ядра никак нельзя это сделать, опираясь на экспорт. В ядре тоже есть нужные для такого дела функи. Только во всём этом есть принципиальная разница. Если daFix хотел скрыть присутствие отладчика, то метод Clerk'a выполнит Detach отладчика от отлаживаемого процесса. Требовалось совсем не это. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 05 августа 2010 12:12 · Личное сообщение · #23 |
|
Создано: 05 августа 2010 13:33 · Личное сообщение · #24 |
|
Создано: 05 августа 2010 15:54 · Личное сообщение · #25 |
|
Создано: 07 августа 2010 00:37 · Поправил: daFix · Личное сообщение · #26 Clerk, советы дельные, только до них дорасти надо Можете пролить свет на одну фигню? Потёр PEB, начал запускать разные проты. Протестировал EXECryptor и ASProtect 2.3 max prot с затёртым PEB. ASPrptect запустился без проблем, а вот EXECryptor ни в какую, но если PEB не трогать, то запускается нормально В PEB затирал только _PEB.BeingDebugged Это в крипторе какая-то извратная проверка или я что-то не учёл? ----- Research For Food |
|
Создано: 07 августа 2010 07:28 · Личное сообщение · #27 |
|
Создано: 07 августа 2010 15:38 · Личное сообщение · #28 |
|
Создано: 07 августа 2010 16:51 · Поправил: daFix · Личное сообщение · #29 |
|
Создано: 07 августа 2010 20:27 · Личное сообщение · #30 daFix Смотрел эту поделку http://exelab.ru/download.php?action=get&n=NzM1 так у меня на XP эта херня отваливается на сепшине, потом вобще зависает. |
. 1 . 2 . >> |
eXeL@B —› Программирование —› Затираем следы в PEB |