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

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


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

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

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

 eXeL@B —› Софт, инструменты —› Трейсер READ_REGISTER/WRITE_REGISTER
Посл.ответ Сообщение

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

Создано: 4 ноября 2011 01:31 New!
Цитата · Личное сообщение · #1

Хочу добавить поддержку своего ТВ тюнера в linux, драйвер тюнера/демодулятора/декодера есть, но нужны точные данные об i2c, gpio, ...

Разобрал драйвер последней доступной IDA PRO 6.1: драйвер написан на С++ с классами и виртуальными функциями В общем трудно проследить порядок вызовов READ_REGISTER/WRITE_REGISTER.

Подскажите пожалуста программу/драйвер или библиотеку(?) которая умеет ставить хук на эти функции ядра.

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

Создано: 4 ноября 2011 04:59 New!
Цитата · Личное сообщение · #2

А что такое "REGISTER" в данном случае?

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

Создано: 4 ноября 2011 11:46 New!
Цитата · Личное сообщение · #3

Ratinsh пишет:

А что такое "REGISTER" в данном случае?

Ну регистры тв тюнера, они замаплены в адресное пространство CPU через PCI DMA

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

Создано: 4 ноября 2011 14:23 New!
Цитата · Личное сообщение · #4

На выбор
http://www.tssc.de/download/prods/
PCIScope и IRPTrace
мануалы поискать на чипы или близкие по функциям,
родственные драйвера в линуксе глянуть
Или
если не новый синовал с буткитом пишешь
начитаться книжек всяких и сайтов типа
http://www.thehackademy.net/madchat/vxdevl/avtech/
разобрать по косточкам hal.dll ~80kb
и вот такое написать - оно тебе надо?
http://code.google.com/p/ngdbg/source/browse/trunk/halipi.cpp

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

Создано: 4 ноября 2011 14:29 · Поправил: Oleg_Kaa New!
Цитата · Личное сообщение · #5

Ratinsh пишет:
родственные драйвера в линуксе глянуть

Повторюсь В linux есть драйвера для всего: brindge, тюнер, демодулятор и декодер.

Нужно всего лишь прописать правильные значения в регистры, сказать linux'у по какому адресу на i2c шине лежит тюнер и т.д. Потому как каждый производитель совмещает эти чипы по "своему".

P.S. Спасибо за IRPTrace, PCIScope гляну


Ранг: 481.4 (мудрец)
Статус: Участник
Тот самый :)

Создано: 4 ноября 2011 14:39 · Поправил: Hexxx New!
Цитата · Личное сообщение · #6

Oleg_Kaa пишет:
P.S. Спасибо за IRPTrace, PCIScope гляну

Они для винды.

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

Создано: 4 ноября 2011 15:13 · Поправил: Ratinsh New!
Цитата · Личное сообщение · #7

Для линукса штоль
100 лет не смотрел
там вроде с HAL на DevKit какой-то переход был
краем глаза где-то видел...

не совсем, но пригодится
http://linuxfirmwarekit.org/download.php

думаю искать подобные файлы надоть
http://www.kraxel.org/releases/video4linux/

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

Создано: 5 ноября 2011 00:30 · Поправил: Oleg_Kaa New!
Цитата · Личное сообщение · #8

Hexxx пишет:
Они для винды.

Или вы меня не правильно поняли, или я неправильно написал
Попытка №2
Есть Express Card ТВ тюнер AVerTV Hybrid Express Slim HC81R который замечательно работает под Windows.
Мне очень хочется что бы он также хорошо работал и под Linux, для этого понятное дело нужно написать драйвер.

После некоторых исследований драйвера под Windows стало понятно что ТВ тюнер построен на базе вот этих трех чипов: CX23885, XC3028L, AF9013. Также на сайте linuxtv.org были прочитаны все how to, wiki и т.д. И стало понятно что в Linux есть(!) драйвера для всех этих чипов, им нужно только указать какие GPIO дергать допустим что бы ресетнуть чип декодер, или указать какой GPIO нужно дернуть что бы его перевести в режим powersave(то есть тупо выключить :D). Чип CX23885 выполняет функции моста (и еще чето там), и ему нужно указать в его регистры(!1) что на порт A заведен порт SVIDEO или на порт B заведено DVB-T

Далее в течении недели был декомпилирован драйвер (A885VCap.sys)ТВ тюнера под Windows, стало понятно что драйвер написан на языке C++ и под разные модели тюнеров. То есть пару базовых классов(виртуальных/абстрактных) и все остальное, из всего этого безобразия мне очень трудно найти вызов WRITE_REGISTER который допустим инициализирует чипы XC3028L и AF9013. Для того что бы вычислить правильный порядок вызовов этих виртуальных функций, ИМХО нужно протрейсить вызовы WRITE_REGISTER/READ_REGISTER.

Вот я и спрашиваю Какой софт под Windows может мне в этом помочь?
Потому как Syser, SoftIce у меня на компе не работают(падают в BSOD)

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

Создано: 5 ноября 2011 00:39 New!
Цитата · Личное сообщение · #9

Oleg_Kaa пишет:
IRPTrace, PCIScope гляну

Глянул, не показывают


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 5 ноября 2011 01:07 New!
Цитата · Личное сообщение · #10

http://linuxtv.org/wiki/index.php/AVerMedia_AVerTV_Hybrid_Express_Slim_HC81R
но если нечем занятся то да.. можно диассемблировать
опыт это всегда полезно

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

Создано: 5 ноября 2011 01:13 · Поправил: Oleg_Kaa New!
Цитата · Личное сообщение · #11

reversecode пишет:
http://linuxtv.org/wiki/index.php/AVerMedia_AVerTV_Hybrid_Express_Slim_HC81R
но если нечем занятся то да.. можно диассемблировать
опыт это всегда полезно

Эту страницу я видел еще в 2007 году когда купил этот тюнер. Там есть только "слепки" значений регистров, но трейса нету


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 5 ноября 2011 01:19 · Поправил: reversecode New!
Цитата · Личное сообщение · #12

Oleg_Kaa пишет:
Далее в течении недели был декомпилирован драйвер (A885VCap.sys)ТВ тюнера под Windows, стало понятно что драйвер написан на языке C++ и под разные модели тюнеров

в студию
Oleg_Kaa пишет:
CX23885, XC3028L, AF9013

спецификации в pdf уже достали?
Oleg_Kaa пишет:
Для того что бы вычислить правильный порядок вызовов этих виртуальных функций, ИМХО нужно протрейсить вызовы WRITE_REGISTER/READ_REGISTER.

пишите двайвер хукер
который будет хучить нужные функции и писать обращения в лог

параметры WRITE_REGISTER/READ_REGISTER. вам слабо помогут
потому что их будет за сотню
как вы угадаете какое значение куда пишется? точнее адресс то вы узнаете
но наверняка по тому адрессу будет за десяток обращений
угадать в какой последовательности и что включилось не реально

лучше уж реверсите весь драйвер до уровня понимания

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

Создано: 5 ноября 2011 01:20 New!
Цитата · Личное сообщение · #13

Ладно, завтра пойду куплю firewire кабель и сделаю удаленную отладку как написано http://msdn.microsoft.com/en-us/windows/hardware/ff556866%28v=VS.85%29

И тупо поставлю бряки


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 5 ноября 2011 01:23 · Поправил: reversecode New!
Цитата · Личное сообщение · #14

Oleg_Kaa пишет:
И тупо поставлю бряки

и тупо не будет работать))
а знаете по чему?
потому есть еще такая штука как задержки и скорость чтения/записи в регистры
вообщем когда наиграетесь в эту игру, сами поймете

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

Создано: 5 ноября 2011 01:32 New!
Цитата · Личное сообщение · #15

reversecode пишет:
и тупо не будет работать))
а знаете по чему?
потому есть еще такая штука как задержки и скорость чтения/записи в регистры
вообщем когда наиграетесь в эту игру, сами поймете

Дык! Почему же? На ARM'ах с JTAG'ом очень даже хорошо работает


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 5 ноября 2011 01:42 · Поправил: reversecode New!
Цитата · Личное сообщение · #16

ну мы ж не армы с jtag обсуждаем, правда?

видимо с ситацией когда отлаживаемые в дебаге по степу, значения другие чем в рабочем логвебоусе, вы никогда не сталкивались?)
а особенно такая ситуация критична на i2c шине
когда нужны определенные задержки, и если они больше или меньше значения уже читаются пишутся совершенно другие

поэтому 100% работает только вариант драйвер хука на нужные функции
причем иногда приходилось не на прямую скидывать в лог
а набивать в память, что бы задержки в запись лога сократить, которые влияли на работу самого драйвера с железом
а потом уже по особому сигналу в драйвер хука, говорить - "запиши с буффера в лог файл"

ну раз вы такой умный)) играйтесь с чем хотите

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

Создано: 5 ноября 2011 01:56 New!
Цитата · Личное сообщение · #17

reversecode пишет:
ну раз вы такой умный)) играйтесь с чем хотите

Извините, не хотел вас обидеть.
reversecode пишет:
поэтому 100% работает только вариант драйвер хука на нужные функции

Воот Есть ли у кого какие то наработки по этому поводу?
reversecode пишет:
видимо с ситацией когда отлаживаемые в дебаге по степу значения другие чем в рабочем лорвебоусе, вы никогда не сталкивались?)
а особенно такая ситуация критична на i2c шине
когда нужны определенные задержки, и если они больше или меньше значения уже читаются пишутся совершенно другие

Ну мне нужны значения только на этапе инициализации, там судя по RegSpy for CX23885 не очень активная запись. Да в самом драйвере эти места обильно снабжены Sleep'ами.


Ранг: 1014.5 (!!!!)
Статус: Участник

Создано: 5 ноября 2011 02:02 New!
Цитата · Личное сообщение · #18

дык я не обижаюсь) вы ж себя ногой в грудь бьете и говорите что будете отлаживать - ну отлаживайте)
Oleg_Kaa пишет:
Воот Есть ли у кого какие то наработки по этому поводу?

я себе для подобного дела когда то писал такой драйвер, сложного там ничего нет,
драйвер увы не сохранился
 eXeL@B —› Софт, инструменты —› Трейсер READ_REGISTER/WRITE_REGISTER

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

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