Клавиатурный буфер

Вопросы программного кода и архитектуры Linux

Модератор: Olej

seregin
Писатель
Сообщения: 33
Зарегистрирован: 23 июл 2017, 12:46
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение seregin » 24 июл 2017, 16:34

Olej писал(а):
seregin писал(а):с модулями решил!
Каким образом решил?
Как решил?
подключил пару библиотек
исправил на module_init в конце
и добавил в инициализацию модуля скобочку и return 0

seregin
Писатель
Сообщения: 33
Зарегистрирован: 23 июл 2017, 12:46
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение seregin » 24 июл 2017, 16:38

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение Olej » 24 июл 2017, 17:14

seregin писал(а):
Olej писал(а):
seregin писал(а):с модулями решил!
Каким образом решил?
Как решил?
подключил пару библиотек
Модули ядра (как и ядро вообще) в принципе не могут использовать библиотек. Никаких.
Может заголовочных файлов в #include ... ?
Каких?

P.S. Вы можете в обсуждениях кода не рассказывать "на пальцах", а показывать код (или строки кода) цитированием (копированием)?
seregin писал(а): исправил на module_init в конце
и добавил в инициализацию модуля скобочку и return 0
А это - показатель говённости того кода! :evil:

seregin
Писатель
Сообщения: 33
Зарегистрирован: 23 июл 2017, 12:46
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение seregin » 24 июл 2017, 17:23

да, заголовочных файлов) init.h. module.h

Убрал ту часть кода на что он ругался, загрузил модуль, выдало сообщение ошибка сегментации
А вот dmesg
Вложения
!!!.png

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение Olej » 24 июл 2017, 17:50

seregin писал(а):да, заголовочных файлов) init.h. module.h
Это вовсе не обязательно.
Строка с module.h там изначально есть:

Код: Выделить всё

#include <linux/module.h>
А init.h не нужно, на него ссылка из других *.h уже есть.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение Olej » 24 июл 2017, 18:25

seregin писал(а): Убрал ту часть кода на что он ругался, загрузил модуль, выдало сообщение ошибка сегментации
"та часть кода на что он ругался" ;-) - это:

Код: Выделить всё

    if(((urbp->dev % 0x400) == 0) &&
В той китайской публикации которую вы показывали (чтобы не лазить в заголовки ядра):
seregin писал(а): Вот еще статья, пункт 0x4: Locating the Keyboard Buffer
http://www.cnblogs.com/LittleHann/p/4493425.html
Там найдёте:

Код: Выделить всё

struct urb {
...
   struct usb_device *dev;     // (in) pointer to associated device 
...   
}
Т.е. они сдуру ;-) выполняют арифметику над указателем.
Вот так будет компилироваться:

Код: Выделить всё

...
#define x(y) ((void *)((uint64_t)(y)+PAGE_OFFSET))
...
      struct urb *urbp = (struct urb *)x(i);
      if( ( ( (uint64_t)urbp->dev % 0x400 ) == 0 ) &&
...
А почему оно слетает по SIGSEGV?
А это вы спрашивайте у тех умников, которые это писали :lol:

seregin
Писатель
Сообщения: 33
Зарегистрирован: 23 июл 2017, 12:46
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение seregin » 24 июл 2017, 18:42

да, компилируется) у вас находит адрес?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение Olej » 24 июл 2017, 20:29

seregin писал(а):да, компилируется) у вас находит адрес?
Да не может оно ничего находить, потому что там написаны выдумки, которые никто не проверял ... даже не компилировалось.

seregin
Писатель
Сообщения: 33
Зарегистрирован: 23 июл 2017, 12:46
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение seregin » 24 июл 2017, 22:04

понял) скажите gпожалуйста, а как получить полный дамп /dev/mem? без пересборок ядра
У меня выдает до определенного адреса и пишет потом segmentation fault

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Клавиатурный буфер

Непрочитанное сообщение Olej » 25 июл 2017, 01:12

Olej писал(а):В той китайской публикации которую вы показывали
Там есть ещё одно интересное место:
For a USB keyboard device, in particular, the keyboard buffer is part of the URB structure, in the field transfer_buffer. Unfortunately, the memory offset where the URB structure is placed is different every time the system restarts.
1). это относится только к USB клавиатуре
2). расположение клавиатурного буфера меняется от разу к разу при перезагрузке.

А по поводу кода (модуля) сказано в тексте:
The pseudocode for scanning the low memory addresses of a 32-bit x86 system is shown in Figure 3.
Это очень важно, что этот код создавался для 32 бит системы.

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя