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

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


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

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

Сейчас на форуме: soft
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


Ранг: 1996.4 (!!!!)
Статус: Модератор
retired

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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


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


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


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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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


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

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

---


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

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

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


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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

--


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

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

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

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

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

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

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

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

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

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

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

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

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

> kernel32.DeviceIoControl
интересно что ты имел ввиду, упомянув эту апи, провальность идеи или серийник винта через смарт =]
. 1 . 2 . 3 . >>
 eXeL@B —› Основной форум —› CPUID hook

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

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