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

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

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

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

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

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

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




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

Создано: 05 июля 2007 12:37 · Поправил: seeq
· Личное сообщение · #2

насколько я знаю, тут MS-REM ошибся и сделать CPUID привилегированной инструкцией нельзя. Ходят слухи, что ловить CPUID можно не только через трейсер, но вот как, это вопрос.



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

Создано: 05 июля 2007 13:16
· Личное сообщение · #3

cpuid на любом уровне привилегий разрешена. может речь о каких-то багах ia32 идёт - хз...



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

Создано: 05 июля 2007 13:38 · Поправил: Error_Log
· Личное сообщение · #4

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

seeq пишет: тут MS-REM ошибся и сделать CPUID привилегированной инструкцией нельзя

Можно, наверно имелось в виду использование виртуализационных расширений

-----
Research is my purpose




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

Создано: 05 июля 2007 13:46
· Личное сообщение · #5

читай про виртуализацию.



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

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

Это всё до лампочки. CPUID доступна везде, отсюда следствие - нада идти другим путём. Ты помоему программу какуето ломал, которая железо проверяет - знач рыть надо в этом направлении.




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

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

Вчера посмотрел книжков... все однозначно грят что нет. Но я не специалист (например что будет если многопроцессорная система?)

Вообще любопытно - зачем нужен перехват именно CPUID? (rdtsc вроде перехватываеццо).

-----
The one derivative you manage is the one I abhore (c) Slipknot





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

Создано: 06 июля 2007 10:35
· Личное сообщение · #8

Chingachguk
RDTSC реально перехватывается, ибо её можно сделать привилегированной.
CPUID перехватить может быть надо для подделки некоторого железа.
Судя по интеловским докам сделать привилегированной и перехватывать как rdtsc её невозможно, отсюда вариантов перехвата её 2: 1-трейсер, который трейсит всё подряд (свалится под антиотладкой+дико медленно); 2-юзать аппаратную виртуализацию (только для новых процев). Если кто подкинет линк, где хоть чо-нить написано, как это реально кодить, юзая аппаратную виртуализацию, а не просто слова, что это сделать можно, то будет респект. Если будет написано реально хорошо и понятно, тогда может я и сам смогу софт накидать такой.



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

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

Chingachguk пишет:
Вообще любопытно - зачем нужен перехват именно CPUID? (rdtsc вроде перехватываеццо)

прога привязана к железу по CPUID. RDTSC тут не поможет, разве что RTFM

Буду наверно кейгенить...



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

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

Archer
Я про виртуализацию только в доках от Intel читал. Вроде там хорошо написано, только на главы ИМХО разбили не удачно.
PS: Сам собираюсь такую штуку написать, только как время появится свободное.




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

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

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

ЗЫ не по теме, но кто-нибудь встречал эмулятор usb-драйва, способный возвращать серийный номер устройства ? Есть софт который привязывается к этой хрени.

-----
in search of sunrise





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

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

bloom пишет:
встречал эмулятор usb-драйва

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

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...





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

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

tnt17 пишет:
На васме была тема, в итоге забили на нее, так как там очень много подводных камней и большой обьем работы.

а можно ссылочку или ключевые слова, чт0-то не нахожу такой.

-----
in search of sunrise





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

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

bloom
wasm.ru/forum/viewtopic.php?id=20801

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...





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

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

SergX
Тебе ж надо Aspr пропатчить? Ты писал на васме, что можно и распаковать, но прога часто обновляется. Если все так обстоит, тогда легче крякнуть сам аспр(я имею в виду его dll), ведь он то всегда одинаковый. Первое, что приходит в голову хукнуть VirtualAlloc, подождать пока dll'ка распакуется, а дальше уже по смещению или по сигнатуре найти место где пропатчить cpuid.

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

так а что там писать? похукал парочку функций и готово, благо в NT чтение биоса напрямую прикрыли, единственная проблема это CPUID. А в многопоточных протекторах отлов этой команды достаточно большой гемор.




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

Создано: 06 июля 2007 12:30 · Поправил: bloom
· Личное сообщение · #16

seeq пишет:
так а что там писать? похукал парочку функций и готово, благо в NT чтение биоса напрямую прикрыли, единственная проблема это CPUID. А в многопоточных протекторах отлов этой команды достаточно большой гемор.

Ну если бы нечего было писать, должен был бы уже быть такой эмулятор наверное.
Или он уже существует, где-нибудь в привате ?
Лично я для софта который привязывается к моей системе (есть пара прог) юзал VMware, единсвенная проблема там - это опять же CPUID (проц-то не эмулируется).

-----
in search of sunrise




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

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

seeq пишет:
Тебе ж надо Aspr пропатчить?

Нет не аспр, вызов CPUID в самой проге.

Процедура которая вызывает CPUID во всех версиях одинаковая, но в разных местах в памяти. Если её и патчить то только в памяти, но с этим у меня пока не выходит...
Если у кого есть пример лоадера, который инжектится и патчит поделитесь плз.




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

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

Archer пишет:
тогда может я и сам смогу софт накидать такой


n0name пишет:
Сам собираюсь такую штуку написать, только как время появится свободное


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


Тема давно назрела, многие об этом уже думали, но готового решения на паблике нет ! Ребята, может на кряклабе соберётся команда и сделает это ? Вот у меня например есть софт накрытый фемидой который юзает cpuid... Что и как патчить - уме не приложу...




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

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

параллельная темка
www.wasm.ru/forum/viewtopic.php?id=21479


Тема давно назрела, многие об этом уже думали, но готового решения на паблике нет ! Ребята, может на кряклабе соберётся команда и сделает это ? Вот у меня например есть софт накрытый фемидой который юзает cpuid... Что и как патчить - уме не приложу...

согласен конечно что такой эмуль нужен.
но в отсутствии такового неплохой альтернативой является VMware,
только в ней одна проблема - CPUID
также интересной является проблема переноса софта уже привязанного к конкретной машине на другую.

-----
in search of sunrise




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

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

VMware конечно не плохо, но клиенту его ставить не прикол.

Давайте общими силами всё таки напишем универсальный лоадер.

Я себе представляю это следующим образом:

1. При запуске UniLoader выдаёт всевозможные ID компа, список которых постоянно обновляется в новых версиях, и позволяет это всё сохранить в INI файл.
2. INI файл можно открыть темже UniLoader_ом и посмотреть/поменять.
3. UniLoader позволяет выбрать EXE файл, чекбоксами выбрать ID которые нужно эмулить, и запустить EXE.
4. Полезной была бы опция которая выводит меседжбокс при срабатывании перехвата. Также лог заргузки.
5. По полученным ID можно генерить HardwareID для протекторов, если кому известен алго.
6. Готовый проект можно сохранить как отдельный ЕХЕ файл в который можно вставить рисунок и копирайты.

С перехватом APIков проблем нет, но вот CPUID… И это скорее всего не последний камень.

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



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

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

bloom пишет:
но в отсутствии такового неплохой альтернативой является VMware


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




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

Создано: 06 июля 2007 22:37 · Поправил: Chingachguk
· Личное сообщение · #22

Кажецца, я нашел кое-что интересное:

--- не, неверно

-----
The one derivative you manage is the one I abhore (c) Slipknot





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

Создано: 06 июля 2007 22:44 · Поправил: Chingachguk
· Личное сообщение · #23

---

-----
The one derivative you manage is the one I abhore (c) Slipknot





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

Создано: 06 июля 2007 22:55 · Поправил: ToBad
· Личное сообщение · #24

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


Правильно, а если патчить exe на тему что бы не палился, то уже патчить и cpuid и hwid... Нужна универсальность, что бы без вмешательства в exe ...

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


Ну не знаю. Желающих наверное много, а вот умеющих на пальцах сосчитать, да и у умеющих как правило нет времени ...

1. При запуске UniLoader выдаёт всевозможные ID компа, список которых постоянно обновляется
5. По полученным ID можно генерить HardwareID для протекторов, если кому известен алго

Бред. Какие всевозможные ID ? Где обновлять ? Кто будет капать алго протов, да и менятся оно может от верси к версии...
Не нужно всё усложнять. Что такое привязка к HDD ? Это волуминформейшин, строчка серийника через смарт, ну и параметры типа размера, цилиндров и т.д.
Биос. По минимуму строка производителя и дата, по максимуму кусок памяти... Можно целиком снимать с нужной машины... Что там ещё, мак адрес сетевухи ? Не часто используется, да и менять можно...
Вот о cpuid я ничего не знаю...
Есть одна намётка, для висты делали эмулятор биоса что ли, выбрать производителя можно и т.д. Сам не смотрел, но скачать успел... Где то валяется.

bloom пишет:
также интересной является проблема переноса софта уже привязанного к конкретной машине на другую


Ну да, для этого это и нужно. Если не переносить с машины где софт зарегистрирован, то полезность этого эмуля резко упадёт... Ну разве что кликательных спонсоров разводил как в недавней ветке дурить, если кому то это ещё интересно...



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

Создано: 06 июля 2007 23:19 · Поправил: SergX
· Личное сообщение · #25

ToBad пишет: Бред.
Какие всевозможные ID ?

kernel32.GetSystemInfo
kernel32.DeviceIoControl
kernel32.GetDiskFreeSpaceExA
kernel32.GetVolumeInformationA
kernel32.GetComputerNameA
kernel32.GlobalMemoryStatus
и т.д.
Я имел в виду большой список API и всего что может быть использовано для генерации HardwareID.

ToBad пишет:
Где обновлять ?

Скорее не "где обновлять" а "кто обновлять".
Имелось в виду что проэкт должен развиваться и наращивать базу. Обновлять его будет автор[ы].
А где можно его выложить это по моему не проблема.

ToBad пишет:
Кто будет капать алго протов, да и менятся оно может от верси к версии...

Скорее всего никто не будет. Но возможно у кого то уже есть.

ToBad пишет:
Не нужно всё усложнять.

Я хотел всё упростить. С помощью выше описанной тулзы можно будет снять половину зашит с привязкой к железу даже не включая отладчик !




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

Создано: 06 июля 2007 23:30 · Поправил: Chingachguk
· Личное сообщение · #26

--

-----
The one derivative you manage is the one I abhore (c) Slipknot





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

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

SergX немного не правильно тебя понял... Но ты в данном случае имеешь ввиду перехват API функций, а эмуль - это нечто другое. Как быть например с CreateFileA( \.\Scsi... \.\Phys... \.\Smart... или просто \.\C ? Разные методы определения параметров винта существуют, и думаю если делать по уму, то без драйвера не обойтись... Хотя.. хз...



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

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

Чуваки. Ничего вы не сделаете с CPUID. Забудьте об этом. Я же ответил на васме, что тут единственный вариант - ждать распаковки-тормозить процесс-сигнатурный скан-патч. Что то бльшее в ближайшее время- нереально.



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

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

ToBad пишет:
Как быть например с CreateFileA

С этим я давно разобрался. Подставляю лоадером любое название винта, серийку и версию.

А на счёт UniLoader я накидаю на днях пример и выложу.
Так будет проще понять о чём я говорил.



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

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

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

-----
Shalom ebanats!



. 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 » Выход » ЛС
   Для печати Для печати