eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: SDK, freudz (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› CPUID hook
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 226.0 (наставник)
Статус: Участник

Создано: 5 июля 2007 10:20 New!
Цитата · Личное сообщение · #1

Как можно перехватить вызов инструкции CPUID ?

MS-REM когда то сказал:
Можно сделать cpuid привилегированной инструкцией, ловить исключения и эмулировать.
Как это можно сделать, может кто примерами поделиться ?

Заранее благодарен.


Ранг: 327.3 (мудрец)
Статус: Участник

Создано: 7 июля 2007 10:34 New!
Цитата · Личное сообщение · #2

drin пишет:
VMware/VPC и некоторые другие эмуляторы при желании палятся, в той же фемиде есть подобная опция...

Да, но все в основном используют способ через бэкдор, исходник которого гуляет везде.
Это обходится парой строчек в файле конфига vmx
Можно конечно по железу детектить, но я пока не встречал программ которые используют отличный от первого метод детекта (хотя что-то там в wmkeeper classic используется подзабыл ?)

Ранг: 226.0 (наставник)
Статус: Участник

Создано: 7 июля 2007 10:41 · Поправил: SergX New!
Цитата · Личное сообщение · #3

SLV пишет:
> kernel32.DeviceIoControl
интересно что ты имел ввиду, упомянув эту апи, провальность идеи или серийник винта через смарт =]

Не сосвем тебя понял.

Я имел ввиду то что хукнув kernel32.DeviceIoControl можно подставить лоадером любое название винта, серийку и версию. Если не ошибаюсь то это касается и сетевухи и многого другого.

Этот пример не на что не претендует.
Просто чтоб показать суть.
Я делал это так:

Var TrueDeviceIoControl: function(hDevice: THandle; dwIoControlCode: DWORD; lpInBuffer: Pointer; nInBufferSize: DWORD; lpOutBuffer: Pointer; nOutBufferSize: DWORD; var lpBytesReturned: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
Function NewDeviceIoControl(hDevice: THandle; dwIoControlCode: DWORD; lpInBuffer: Pointer; nInBufferSize: DWORD; lpOutBuffer: Pointer; nOutBufferSize: DWORD; var lpBytesReturned: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
Type TBuff=Record
TMP1: Array [0..$023] of char;
SN: Array [0..$013] of char;
TMP2: Array [0..$005] of char;
VER: Array [0..$007] of char;
ID: Array [0..$027] of char;
End;
Var Buff: ^TBuff;
Begin
NewDeviceIoControl:=TrueDeviceIoControl(hDevice, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped);
Buff:=lpOutBuffer;
If lpBytesReturned=528 Then
Begin
Buff.SN:='2143658709BADC ';
Buff.VER:='BADC-111';
Buff.ID:='ASSMNU GDH80H0 J ';
End;
End;

Ранг: 50.1 (постоянный)
Статус: Участник

Создано: 7 июля 2007 11:42 New!
Цитата · Личное сообщение · #4

bloombloom пишет:
Да, но все в основном используют способ через бэкдор, исходник которого гуляет везде.
Это обходится парой строчек в файле конфига vmx


В фемиде кроме того что палиться еще и юзается кусок кода который на виртуальной машине выполниться по определению не может... это мне разраб сказал... так что там не так просто все.


Ранг: 450.3 (мудрец)
Статус: Участник

Создано: 7 июля 2007 11:50 · Поправил: ToBad New!
Цитата · Личное сообщение · #5

SergX пишет:
If lpBytesReturned=528


Этот момент я не понял. Объясни подробней. Ты так определяешь что запрашивается именно инфа о винте ?
Я так понял используешь advApiHook. А все ли защищённые программы будут работать подобным образом ? Я использовал этот метод всего дважды, одни раз подмена инфы о винте, но не через DeviceIoControl, а второй для снятия триала…
В обоих случаях был аспр.
Кстати вывод логов из Function New… удобно делать через sendmessage в другое приложение или цепляющее dll к процессу.
Так же вопрос, а поможет ли этот метод для обмана .NET программ ?


Ранг: 327.3 (мудрец)
Статус: Участник

Создано: 7 июля 2007 12:04 New!
Цитата · Личное сообщение · #6

Pluton пишет:

В фемиде кроме того что палиться еще и юзается кусок кода который на виртуальной машине выполниться по определению не может... это мне разраб сказал... так что там не так просто все.


Только что запаковал полной фемидой 1.9.1.0 файлик, поставил детект вм, запустил варю - детектит, заткнул бэкдор и запустил - не детектит. Так что в фемиде просто все.
Могу ваш пример потестить, если интересно.

Ранг: 50.1 (постоянный)
Статус: Участник

Создано: 7 июля 2007 12:17 New!
Цитата · Личное сообщение · #7

bloom пишет:
Только что запаковал полной фемидой 1.9.1.0 файлик, поставил детект вм, запустил варю - детектит, заткнул бэкдор и запустил - не детектит. Так что в фемиде просто все.
Могу ваш пример потестить, если интересно.


Ну тада не знаю, он мне так обьяснял, когда я им bug report один слал.

Ранг: 226.0 (наставник)
Статус: Участник

Создано: 7 июля 2007 13:59 · Поправил: SergX New!
Цитата · Личное сообщение · #8

ToBad

If lpBytesReturned=528
lpBytesReturned это размер lpOutBuffer

DeviceIoControl получает lpInBuffer и возвращает lpOutBuffer. В lpInBuffer запрос к устройству в lpOutBuffer ответ. Размер блока в котором возвращается название винта, серийка и версия у меня всегда был 528 байт на разных компах.
Конечно этот способ не универсален, это просто пример.

ToBad пишет:
Ты так определяешь что запрашивается именно инфа о винте ?

В этом примере никак. Но можно сначала ловить CreateFileA который возвращает хендл открываемого устройства. Смотреть какое устройство открывается и запоминать хендл. А потом проверять hDevice:THandle при вызове DeviceIoControl.

ToBad пишет:
Я так понял используешь advApiHook.

Да именно. Респект MS-REMу !
Куда он пропал интересно...

ToBad пишет:
А все ли защищённые программы будут работать подобным образом ?

Если проверять hDevice:THandle и сделать всё правильно то уверен что все.

ToBad пишет:
Кстати вывод логов из Function New… удобно делать через sendmessage в другое приложение или цепляющее dll к процессу.

Хорошая идея. Я делал в файл. Можно сделать и так и так по выбору.

ToBad пишет:
Так же вопрос, а поможет ли этот метод для обмана .NET программ ?

Честно говоря, я почти ничего не знаю про .NET
Никогда не было потребности разбираться.


Ранг: 327.3 (мудрец)
Статус: Участник

Создано: 7 июля 2007 13:59 New!
Цитата · Личное сообщение · #9

Pluton пишет:
Ну тада не знаю, он мне так обьяснял, когда я им bug report один слал.


Хотел бы посмотреть на софт с нормальным детектом ВМ, если кто встречал.
Вроде WMkeeper банит кошельки когда обнаружит что работает в ВМ.

Ранг: 63.8 (постоянный)
Статус: Участник

Создано: 7 июля 2007 15:25 New!
Цитата · Личное сообщение · #10

bloom пишет:
Хотел бы посмотреть на софт с нормальным детектом ВМ, если кто встречал.
Вроде WMkeeper банит кошельки когда обнаружит что работает в ВМ.

У меня были некоторые эксперименты в этом деле, использовал разные приёмы:
* проверял наличие \.host
* проверял есть ли в системе мосты и контроллеры под Pentium2, а процессор совсем не Pentium2
* еще 1 приемчик, который WMVare выносит в БСОД (проверял на 2000/XP/2003), поподробнее конечно же не расскажу


Ранг: 327.3 (мудрец)
Статус: Участник

Создано: 7 июля 2007 19:02 New!
Цитата · Личное сообщение · #11

drin пишет:
У меня были некоторые эксперименты в этом деле, использовал разные приёмы:
* проверял наличие \.host
* проверял есть ли в системе мосты и контроллеры под Pentium2, а процессор совсем не Pentium2
* еще 1 приемчик, который WMVare выносит в БСОД (проверял на 2000/XP/2003), поподробнее конечно же не расскажу

так выложи "крякмис" этакий

Ранг: 63.8 (постоянный)
Статус: Участник

Создано: 7 июля 2007 20:25 New!
Цитата · Личное сообщение · #12

bloom пишет:
так выложи "крякмис" этакий


Ээээ нет я таким не страдаю... У меня почти все продукты с привязкой железу, и конечно же я сопротивляюсь запуску на эмуляторах Выложу "крякми", а вы уже будете знать что там искать вкусненькое... жалко мне


Ранг: 450.3 (мудрец)
Статус: Участник

Создано: 7 июля 2007 21:45 New!
Цитата · Личное сообщение · #13

drin пишет:
Ээээ нет я таким не страдаю... У меня почти все продукты с привязкой железу, и конечно же я сопротивляюсь запуску на эмуляторах Выложу "крякми", а вы уже будете знать что там искать вкусненькое... жалко мне


Ну тогда ссылку на продукт дай...
Прикольно получается: "Уже который год крякерское сообщество из стран СНГ а так же братья из Китая, не могут победить самописную защиту drin-а. Все попытки увидеть хотя бы софт с её использованием потерпели неудачу. Крякеры кусают локти, социальная инженерия более не рулит, авторы протов дико завидуют и пытаются перенять успешную стратегию drin-а..."

Ранг: 226.0 (наставник)
Статус: Участник

Создано: 7 июля 2007 22:47 · Поправил: SergX New!
Цитата · Личное сообщение · #14



drin линки давай !
Пробовал сам поискать, ничё кроме ботов к линейке не нашлось..

Ранг: 63.8 (постоянный)
Статус: Участник

Создано: 7 июля 2007 22:52 New!
Цитата · Личное сообщение · #15

ToBad пишет:
"Уже который год крякерское сообщество из стран СНГ а так же братья из Китая, не могут победить самописную защиту drin-а. Все попытки увидеть хотя бы софт с её использованием потерпели неудачу. Крякеры кусают локти, социальная инженерия более не рулит, авторы протов дико завидуют и пытаются перенять успешную стратегию drin-а..."




З.Ы.: а по теме - ответил выше, дам что-то писаное мной, будет тот же кракми, который постепенно перейдет в статус кракед нафик оно мне надо

Ранг: 63.8 (постоянный)
Статус: Участник

Создано: 7 июля 2007 22:54 · Поправил: drin New!
Цитата · Личное сообщение · #16

SergX пишет:
Пробовал сам поискать, ничё кроме ботов к линейке не нашлось..

Вот гад, уже пронюхивать начал, странно что ты не решил что я моб. телефон ... прекращайте оффтоп ребята, если что, есть ПМ ;)

Ранг: 17.1 (новичок)
Статус: Участник

Создано: 9 июля 2007 17:12 New!
Цитата · Личное сообщение · #17

SergX всмысле ботов к линейке с защитой от drin ???

Ранг: 56.3 (постоянный)
Статус: Участник

Создано: 9 июля 2007 18:03 New!
Цитата · Личное сообщение · #18

drin
Ненужно бросаться словами, достоверность которых ты всё равно доказать не можешь/хочешь, это несерьёзно.

Ранг: 160.1 (ветеран)
Статус: Участник

Создано: 10 июля 2007 09:12 New!
Цитата · Личное сообщение · #19

bloom пишет:
хотя что-то там в wmkeeper classic используется подзабыл ?)

список всех процессов и всего оборудования отсылается на сервер, на котором делается вывод о работе под вмварью и если да, то просят аттестат.

Ранг: 162.4 (ветеран)
Статус: Участник

Создано: 10 июля 2007 11:05 New!
Цитата · Личное сообщение · #20

а в Старфорсе тоже этот метот детекта ВМ или там еще чето?


Ранг: 327.3 (мудрец)
Статус: Участник

Создано: 10 июля 2007 11:57 New!
Цитата · Личное сообщение · #21

infern0 пишет:
и всего оборудования

ну вот значит он грамотно детектит.
если бы сразу показывал детект, я бы еще потестил.
а так не поймешь дететит или нет.

SWR пишет:
а в Старфорсе тоже этот метот детекта ВМ или там еще чето?

думаю у стара наверняка что-то посерьезнее.

Ранг: 226.0 (наставник)
Статус: Участник

Создано: 10 июля 2007 14:21 · Поправил: SergX New!
Цитата · Личное сообщение · #22

ut2004 пишет:
SergX всмысле ботов к линейке с защитой от drin ???

Я не качал, и не смотрел. Просто линки нашёл.

Да и вообще тут начался полный оффтоп.

Ранг: 309.8 (мудрец)
Статус: Участник

Создано: 11 июля 2007 09:14 New!
Цитата · Личное сообщение · #23

> а в Старфорсе тоже этот метот детекта ВМ или там еще чето?
рем писал про это на #cracklab... ищите логи (у мну нет =])...

Ранг: 36.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2017 05:31 · Поправил: bartolomeo New!
Цитата · Личное сообщение · #24

сорри за некропост, но похоже что тот вывод к которому пришли все написавшие в этом топике неверен:

" cpuid break via hardware virtualisation


Not much to say, cpuid causes VM-Exit, so whenever cpuid occurs in our
target, inject int 3 event into Guest.

i3here on - must be set in SoftICE

No MP support due to problem with NMI handling when SoftICE is active.
Disable MP in BIOS if you want to use this tool with SoftICE, as this
tool is designed to work with SoftICE and i3here on...


Requires Intel Hardware Virtualisation technology, and I have no idea
how this will work on AMD!!!!

Did you wonder about finding SecuROM cpuid stuff? Well here it is...

(c) 2008 deroko of ARTeam"

--> Link <--


Ранг: 316.3 (мудрец)
Статус: Участник

Создано: 25 февраля 2017 07:06 · Поправил: difexacaw New!
Цитата · Личное сообщение · #25

bartolomeo

Это не единственный способ. Более того, есть альтернативный метод. Смотрите я потрассировал несколько итераций, что бы показать суть --> Link <--
Не требуется ядерных привилегий.

Железячная виртуализация это стрелять пушкой по воробьям. Реализация сложна и не стабильна, так же невозможно интегрировать локально в приложение.

Ранг: 16.3 (новичок)
Статус: Участник

Создано: 25 февраля 2017 13:31 New!
Цитата · Личное сообщение · #26

Инде из вашего видео к сожалению мало что понятно

Ранг: 0.0 (гость)
Статус: Участник

Создано: 25 февраля 2017 14:38 New!
Цитата · Личное сообщение · #27

VT-x пишет: Инде из вашего видео к сожалению мало что понятно

Что там непонятного? Устанавливается монитор и при срабатывании условия вызывается\может вызываться обработчик.
После срабатывания можно обрабатывать инструкцию всеми мыслимыми и не мыслимыми способами, прыгнув на свой буфер, а из него уже вернуть необходимый\желаемый результат. Конкретную реализацию не видел, скорее всего роутинг + диспатчер + APC.


Ранг: 316.3 (мудрец)
Статус: Участник

Создано: 25 февраля 2017 14:45 New!
Цитата · Личное сообщение · #28

VT-x

Ну а что там не ясно. Линейный блок копируется в буфер и исполняется. Ветвления эмулируются. Это бесконечный цикл копирования-исполнения. Там же far jmp в видосе на буфер. Работает как часы, только есть небольшая проблема со стеком(защита). При ровной реализации поток никак не может выйти из под монитора или его обнаружить.

{ Атач доступен только для участников форума } - STK.pdf

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


Ранг: 16.3 (новичок)
Статус: Участник

Создано: 25 февраля 2017 17:09 New!
Цитата · Личное сообщение · #29

Надо было с матчасти (DYE) и начинать


Ранг: 316.3 (мудрец)
Статус: Участник

Создано: 25 февраля 2017 17:15 · Поправил: difexacaw New!
Цитата · Личное сообщение · #30

VT-x

Какой матчасти, я просто пример показал, ну и немного решение проблемы, может кто реализовать захочет, ну что бы не решать то, что уже решено(не изобретать велосипед)..

Ранг: 0.0 (гость)
Статус: Участник

Создано: 25 февраля 2017 17:28 New!
Цитата · Личное сообщение · #31

difexacaw пишет: Какой матчасти

У кинедров матчасть это готовое решение с большой кнопкой - сделать приятно.
Кому надо и из общего описания разберется.
<< . 1 . 2 . 3 . >>
 eXeL@B —› Основной форум —› CPUID hook

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS