Сейчас на форуме: -Sanchez- (+8 невидимых)

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

Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 05 июля 2007 10:20
· Личное сообщение · #1

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

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

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




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

Создано: 07 июля 2007 10:34
· Личное сообщение · #2

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

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

-----
in search of sunrise




Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 07 июля 2007 10:41 · Поправил: SergX
· Личное сообщение · #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 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 07 июля 2007 11:42
· Личное сообщение · #4

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


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




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

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

SergX пишет:
If lpBytesReturned=528


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




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

Создано: 07 июля 2007 12:04
· Личное сообщение · #6

Pluton пишет:

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


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

-----
in search of sunrise




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

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

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


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



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 07 июля 2007 13:59 · Поправил: SergX
· Личное сообщение · #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 (мудрец)
Активность: 0.250
Статус: Участник

Создано: 07 июля 2007 13:59
· Личное сообщение · #9

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


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

-----
in search of sunrise




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

Создано: 07 июля 2007 15:25
· Личное сообщение · #10

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

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




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

Создано: 07 июля 2007 19:02
· Личное сообщение · #11

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

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

-----
in search of sunrise




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

Создано: 07 июля 2007 20:25
· Личное сообщение · #12

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


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




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 07 июля 2007 21:45
· Личное сообщение · #13

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


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



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

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



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



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

Создано: 07 июля 2007 22:52
· Личное сообщение · #15

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




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



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

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

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

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



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

Создано: 09 июля 2007 17:12
· Личное сообщение · #17

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



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

Создано: 09 июля 2007 18:03
· Личное сообщение · #18

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



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

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

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

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



Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

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

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




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

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

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

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

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

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

-----
in search of sunrise




Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

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

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

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

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



Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

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

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

-----
Shalom ebanats!




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

Создано: 25 февраля 2017 05:31 · Поправил: bartolomeo
· Личное сообщение · #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 <--




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

bartolomeo

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

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

-----
vx




Ранг: 16.3 (новичок), 2thx
Активность: 0.030
Статус: Участник

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

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



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

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

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

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




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

VT-x

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

87c7_25.02.2017_EXELAB.rU.tgz - STK.pdf

-----
vx


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

Ранг: 16.3 (новичок), 2thx
Активность: 0.030
Статус: Участник

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

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




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

VT-x

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

-----
vx




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

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

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

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


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


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