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

 eXeL@B —› Программирование —› Изменение драйвера или эмуляция железа на уровне системы
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 10 мая 2016 19:51
· Личное сообщение · #1

Всем привет.
Ситуация следующая. Нужно подменить(эмулировать) видеокарту(пока только ее:s1 в виртуальной машине(VmWare). При том не просто изменить название ее в диспетчере, а подменить ее на уровне системы(чтобы компьютер думал, что у него действительно другая видеокарта).
Что было сделано:
1) Изменение inf файла драйвера(это дало изменения названия видеокарты и производителя в реестре и диспетчере устройств)
2) Перешарены все сайты, ни у кого не было подобного вопроса
3) Найден способ с реальной видеокартой(перепрошивка ее программатором и изменение кристалла), но у нас то видеокарта "Программная", так что не подходит.
На этом этапе серое вещество в голове мне подсказало что здесь поможет только переписывание(изменения) драйвера. Как это сделать не знаю. Я так понял, что чтобы изменить драйвер, нужно иметь исходники, только кто мне их даст(или они есть где то?) Или же написать драйвер с нуля? Короче ребят я маленько запутался, если говорю не правильно подправьте меня. Можно ли взять и отредактировать этот драйвер? Сейчас проблема в идентификаторах устройства, а точнее pci, ven, dev, VideoID и т.д. Их не подменить с помощью inf файла(или я не знаю как). Насколько трудоемкая эта задача и какими знаниями надо обладать чтобы справиться с ней? Если мне самому не удастся решить эту проблему, сколько может стоить это решение? Заранее благодарен)




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 12 мая 2016 11:09
· Личное сообщение · #2

VodoleY пишет:
требует 11 определенных девайсов. какие маршруты решение данной проблемы можно вы видите? кроме как написание обверток

она просто требует их наличие или общается с ними? Что делает если девайсы не отвечают?
mkpipe пробовали?




Ранг: 106.9 (ветеран), 27thx
Активность: 0.080
Статус: Участник

Создано: 12 мая 2016 12:10
· Личное сообщение · #3

VodoleY пишет:
я б хотел продолжить тему.. правда под линуха.. какие варианты есть емулирования не существующего железа? можно закидать ссылками если кто сталкивался.
суть проблемы. есть прога.. требует 11 определенных девайсов. какие маршруты решение данной проблемы можно вы видите? кроме как написание обверток .ko

В принципе нет такого железа или его нет у тебя? Если 1ое, то пишешь драйвер виртуального девайса, но видимо 2ое, тогда как уже писали выше, qemu. Если линух еще и хост, то его даже настраивать проще т.к. есть libvirt и virt-manager, а kvm уже давно с ядром идет. Что касается эмуляции девайсов, там написано куча кода по эмуляции различных интерфейсов и железок к ним(как реальных, так и виртуальных). Проект опенсорсный, так что все там можно покрутить.

ntldr пишет:
зато полнейший контроль, хоть mov eax, ebx перехватывай (хотя и в qemu в режиме бинарной трансляции это можно, пусть и сложнее сделать).

Ну в перехвате mov eax, ebx особого смыса нет, а по всем интересным инструкциям в том числе и cpuid мы можем получить vmexit.

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

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

Создано: 12 мая 2016 13:58 · Поправил: VodoleY
· Личное сообщение · #4

отвечаю обоим.. девайсы эти уникальные и в наличии не имеются.. я в состоянии кастрировать обработки и т.д. на данный момент идет работа с простой проблемой..

lea eax, (aProcBusPciDevi - 0D93DD4h)[ebx] ; "/proc/bus/pci/devices"
mov [esp], eax ; filename
call _fopen
якобы тут по пиду и виду ищется наличие поднятого кернелом девайса.. якобы его физическое присутствие(пид и вид я тут опустил)
т.е... тут мы валимся.. ибо девайс с нужным пидом/видом должен бы поднятся.. а чтоб он поднялся в драйвере должна отработать процедура регистрации девайса.. а для этого на шине должно сгенерироватся событие.. или я гдето не прав?

ЗЫ я ток начинаю познавать дзен устройства работы линухов.. даже написали уже обвертку .ко для драйвера.. типа делаем драйвер коврика мышки.. но чтото пока не ага

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 106.9 (ветеран), 27thx
Активность: 0.080
Статус: Участник

Создано: 13 мая 2016 14:21 · Поправил: Oott
· Личное сообщение · #5

VodoleY пишет:
т.е... тут мы валимся.. ибо девайс с нужным пидом/видом должен бы поднятся.. а чтоб он поднялся в драйвере должна отработать процедура регистрации девайса.. а для этого на шине должно сгенерироватся событие.. или я гдето не прав?

Если ты про автоопределение pci девайсов, то там во время загрузки ядра bus драйвер енумирит pci девайсы и если находится драйвер с соответствующим pci_device_id(pid/vid), то он грузится.

VodoleY пишет:
ЗЫ я ток начинаю познавать дзен устройства работы линухов..

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

Я бы на твоем месте смотрел в сорцы ядра линкуса, там есть реализаци вских pci драйверов. Затем в сорцы эмулятора, там есть эмуляция всяких pci девайсов.
http://lxr.free-electrons.com/source/Documentation/PCI/
cache:http://nairobi-embedded.org/linux_pci_device_driver.html

Но чувствую, что писать эмуляцию девайса с неизвестными внутренностями будем очень проблематично, тут может помочь наличие драйвера, но не сильно..

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

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

Создано: 14 мая 2016 07:44
· Личное сообщение · #6

Oott пишет:
Но чувствую, что писать эмуляцию девайса с неизвестными внутренностями будем очень проблематично, тут может помочь наличие драйвера, но не сильно..

мыж не ищем простых решений)

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




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

Создано: 17 мая 2016 07:04
· Личное сообщение · #7

VodoleY пишет:
какие варианты есть емулирования не существующего железа?


VodoleY пишет:
девайсы эти уникальные и в наличии не имеются


Если нет ни самих девайсов, ни спеков/даташитов на их начинку, то это что-то из области психиатрии, не?

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

Ранг: 3.2 (гость), 1thx
Активность: 0.020
Статус: Участник

Создано: 13 августа 2018 17:44
· Личное сообщение · #8

хм, можно попробовать пропатчить сам Vmware-vmx, изменив вендора, и соответственно переписать драйвера


<< . 1 . 2 .
 eXeL@B —› Программирование —› Изменение драйвера или эмуляция железа на уровне системы
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати