Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » LPC bus I/O под linux | страница 2
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 2 из 5
На страницу: Пред.  1, 2, 3, 4, 5  След. | Все страницы
Поиск в этой теме:
Железный канал: «LPC bus I/O под linux»
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
Нашлась вот такая интересная строка, для пользователей ntport
Код:
j_LicenseInfo("Chen, Kun-Yi", 1511328);


добавлено спустя 15 минут:
Вот похоже функция которая сохраняет значения в реестр
 Cкрытый текст   (кликните здесь для просмотра)
Код:
int __thiscall sub_523110(void *this, int a2, BYTE Data)
{
  int v3; // eax@2
  int v4; // eax@11
  int v5; // ST04_4@12
  unsigned int v7; // [sp-4h] [bp-128h]@1
  int v8; // [sp+Ch] [bp-118h]@1
  int v9; // [sp+F4h] [bp-30h]@4
  char v10; // [sp+100h] [bp-24h]@1
  void *v11; // [sp+110h] [bp-14h]@1
  int v12; // [sp+120h] [bp-4h]@1
  int savedregs; // [sp+124h] [bp+0h]@1

  memset(&v8, 0xCCu, 0x10Cu);
  v7 = (unsigned int)&savedregs ^ dword_74B650;
  v11 = this;
  sub_4F8211(&v10);
  v12 = 0;
  if ( sub_4FD6CB(HKEY_CURRENT_USER, L"Software\\CReTE\\WirelessManager", 0x20006u) )
  {
    v3 = sub_4FB5E7(
           "d:\\work\\crete project\\wireless manager\\vs2008\\db6\\wirelessmanager\\wirelessmanagerdlg.cpp",
           dword_74847C + 9);
    sub_4FD81A(v3, L"Wireless Status read error", v7);
  }
  else
  {
    v8 = a2;
    switch ( a2 )
    {
      case 0:
        v9 = sub_4F6281((HKEY *)&v10, L"InitDelay", Data);
        break;
      case 1:
        v9 = sub_4F6281((HKEY *)&v10, L"WLAN_ON", Data);
        break;
      case 2:
        v9 = sub_4F6281((HKEY *)&v10, L"BLUETOOTH_ON", Data);
        break;
      case 3:
        v9 = sub_4F6281((HKEY *)&v10, L"GSM_ON", Data);
        break;
      case 4:
        v9 = sub_4F6281((HKEY *)&v10, L"GPS_ON", Data);
        break;
      case 5:
        v9 = sub_4F6281((HKEY *)&v10, L"FINGER_ON", Data);
        break;
      case 6:
        v9 = sub_4F6281((HKEY *)&v10, L"CAMERA_ON", Data);
        break;
      default:
        break;
    }
    sub_4F4DFF(&v10);
    v4 = sub_4FB5E7(
           "d:\\work\\crete project\\wireless manager\\vs2008\\db6\\wirelessmanager\\wirelessmanagerdlg.cpp",
           dword_74847C + 37);
    sub_4FD81A(v4, L"Registry Created", v7);
  }
  v12 = -1;
  v5 = sub_4FEC47(&v10);
  sub_4F653D(&savedregs, &dword_5232D8);
  return sub_4FAC41(1, v5);
}


добавлено спустя 3 минуты:
А вот что вызывается при активации wifi
 Cкрытый текст   (кликните здесь для просмотра)
Код:
int __thiscall sub_5224C0(void *this)
{
  char v1; // ST0C_1@1
  int v2; // eax@1
  int v3; // eax@4
  char v5; // [sp+Ch] [bp-E8h]@1
  int v6; // [sp+E0h] [bp-14h]@1
  void *v7; // [sp+ECh] [bp-8h]@1

  memset(&v5, 0xCCu, 0xE8u);
  v7 = this;
  v6 = sub_4F9724((char *)this + 128);
  v1 = v6;
  v2 = sub_4FB5E7(
         "d:\\work\\crete project\\wireless manager\\vs2008\\db6\\wirelessmanager\\wirelessmanagerdlg.cpp",
         dword_74846C + 2);
  sub_4FD81A(v2, L"toggle state=%d\n", v1);
  if ( v6 )
  {
    sub_4FE6B1(1);
    sub_4F681C(140, 0xFFFFFFu, 0, 0);
    sub_4FE819(v7, 0x68Fu, 1, 1);
  }
  else
  {
    sub_4F681C(139, 0xFFFFFFu, 0, 0);
    sub_4FE819(v7, 0x68Fu, 1, 0);
  }
  v3 = sub_4F38C4(v7, 1, v6 == 1);
  return sub_4FAC41(1, v3);
}

v6 отвечает за включить его или выключить.

добавлено спустя 10 минут:
sub_4FE6B1 дергает какое то wlanapi
sub_4F681C судя по поверхностному взгляду рисует иконку
sub_4FE819 как раз пишет в порт и она же обертка для функции
 Cкрытый текст   (кликните здесь для просмотра)
Код:
int __thiscall sub_522040(void *this, unsigned __int16 a2, char a3, char a4)
{
  int v4; // eax@4
  char v6; // [sp+Ch] [bp-D8h]@1
  unsigned __int8 v7; // [sp+D3h] [bp-11h]@1
  void *v8; // [sp+DCh] [bp-8h]@1
  int savedregs; // [sp+E4h] [bp+0h]@4

  memset(&v6, 0xCCu, 0xD8u);
  v8 = this;
  v7 = 0;
  v7 = j_Inp(a2);
  if ( a4 )
    v7 |= a3;
  else
    v7 &= ~a3;
  v4 = j_Outp(a2, v7);
  return sub_4FAC41((void **)&savedregs == &v8, v4);
}

Если так посмотреть то a2 это порт с которым работают, a3 это маска, а вот a4 это указание сбросить биты маски или установить.

добавлено спустя 12 минут:
Но стоит учесть что сразу после вызова лиценсеинфо(очевидно начало работы с библиотекой)
мы имеем вот такой кусок кода:
 Cкрытый текст   (кликните здесь для просмотра)
Код:
  j_LicenseInfo("Chen, Kun-Yi", 1511328);
  j_Outport(46, 85);
  v6 = sub_4F87BB(v24, 48);
  v17 = v6;
  if ( !v6 )
    sub_4FCF1E(48, 104);
  j_Outport(46, 55);
  j_Outport(47, 245);
  j_Outport(46, 53);
  j_Outport(47, 120);
  j_Outport(46, 170);
  Sleep(0x3E8u);

Возможно это инициализация самого моста.
Функция походу разворачивается до
 Cкрытый текст   (кликните здесь для просмотра)
Код:

j_Outport(46, a2);
v2 = j_Inport(47);
return v2;

где a2 второй параметр.
А sub_4FCF1E до такого
 Cкрытый текст   (кликните здесь для просмотра)
Код:

j_Outport(46, a2);
j_Outport(47, (unsigned __int16)a3);
v3 = j_Inport(47);
return v3;

a2, a3 соответственно второй и третий параметры.

добавлено спустя 8 минут:
Ну а дальше думаю вот эта ссылка, и попытка протестировать всё это дело.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do

Последний раз редактировалось: VBKesha (13:22 08-02-2019), всего редактировалось 6 раз(а)
    Добавлено: 13:22 08-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
VBKesha :

Но стоит учесть что сразу после вызова лиценсеинфо(очевидно начало работы с библиотекой)
мы имеем вот такой кусок кода:
 Cкрытый текст   (кликните здесь для просмотра)
Код:
  j_LicenseInfo("Chen, Kun-Yi", 1511328);
  j_Outport(46, 85);
  v6 = sub_4F87BB(v24, 48);
  v17 = v6;
  if ( !v6 )
    sub_4FCF1E(48, 104);
  j_Outport(46, 55);
  j_Outport(47, 245);
  j_Outport(46, 53);
  j_Outport(47, 120);
  j_Outport(46, 170);
  Sleep(0x3E8u);

Возможно это инициализация самого моста.


Этот кусок кода очень хороший
потому как в нём есть смысл
согласно датащиту порт 46,47 (2Eh,2Fh) это внутренний конфигурационный порт CSR через который можно обратится к конфигурационным регистрам соотеветствующих GPIO моста.
55 (37h) это адрес регистра GPIO Direction Register GPIO4 (0-7)
245 данные посылаемые в регистр - 11110101
53(35h) Direction Register GPIO3 (0-7)
120 - 01111000
0=Input
1=Output
посылка в CSR порт кода 170(ААh)завершает цикл конфигурации точно по датащиту
;-----------------------------.
; EXIT CONFIGURATION STATE |
;-----------------------------'
MOV DX,02EH
MOV AX,AAH
OUT DX,AL


j_Outport(46, 85);
;----------------------------.
; ENTER CONFIGURATION STATE |
;----------------------------'
MOV DX,02EH ;SYSOPT = 0
MOV AX,055H
OUT DX,AL


но мне нужен базовый системный адрес от которого необходимо делать соответсвующие оффсеты
и из всего высшеисложенного cи кода как я понимаю это
0x68F? както можно это уточнить? мне плохо понятен си
_________________
Quaere Vērum
------------------------

Последний раз редактировалось: _RAZAAR_ (19:46 08-02-2019), всего редактировалось 3 раз(а)
    Добавлено: 19:31 08-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
_RAZAAR_ :

но мне нужен базовый системный адрес от которого необходимо делать соответсвующие оффсеты
и из всего высшеисложенного cи кода как я понимаю это
0x68F? както можно это уточнить? мне плохо понятен си

А нет никаого оффсета j_Outport первым аргументом принимает адрес порта, вторым то что в него пишется. Так же как и j_Outp(я уже разницу между ними не помню) надо дома искать но вроде это одно и тоже.
Ну и в твоём коде MOV DX,02EH 2E это ведь то самое 46 из j_Outport(46, 170);

добавлено спустя 4 минуты:
Или ты про тот адрес порта куда потом надо писать для включения WiFi? Да это будет 0x68F, нужно будет установить нулевой бит в этом порте.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do

Последний раз редактировалось: VBKesha (20:43 08-02-2019), всего редактировалось 1 раз
    Добавлено: 20:43 08-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
VBKesha :
_RAZAAR_ :

но мне нужен базовый системный адрес от которого необходимо делать соответсвующие оффсеты
и из всего высшеисложенного cи кода как я понимаю это
0x68F? както можно это уточнить? мне плохо понятен си

А нет никаого оффсета j_Outport первым аргументом принимает адрес порта, вторым то что в него пишется. Так же как и j_Outp(я уже разницу между ними не помню) надо дома искать но вроде это одно и тоже.
Ну и в твоём коде MOV DX,02EH 2E это ведь то самое 46 из j_Outport(46, 170);

добавлено спустя 4 минуты:
Или ты про тот адрес порта куда потом надо писать для включения WiFi? Да это будет 0x68F, нужно будет установить нулевой бит в этом порте.


Ну как так?
согласно датащиту

 Cкрытый текст   (кликните здесь для просмотра)

нас интересует рантайм регистры а точенее
дата регистер 0Fh порта GP4
 Cкрытый текст   (кликните здесь для просмотра)

также нас интересует состояние конфигурационного регистра для этого порта
 Cкрытый текст   (кликните здесь для просмотра)


Конфигурационные регистры перечислены тут
 Cкрытый текст   (кликните здесь для просмотра)


и это обращение
j_Outport(46, 55);
j_Outport(47, 245);
j_Outport(46, 53);
j_Outport(47, 120);
именно к конфигурационным регистрам режима работы двух портов GP4 и GP3
очевидно что при записи в регистер 55(37h) числа 245, 47ая нога GP4.7 будет переведена в режим "вход" , включет ли это состояние радио устройства или наоборот выключит сказать сложно ( по логике должно выключить) но из соображений энерго сбережения возможно и включит.
но запись в регистр 37h должна произойти через обращение к порту 2Еh
вот где расположен этот порт 2Еh?
по базовому адресу указанному в пфд? какому из "may be"
100h+2eh, 200h+2eh ......68F+2eh?

я перевел комп обратно на винду для большей внятности ковыряний,
в винде отключая все доступные для отключения системные устройства принадлежащие к SCH LPC Interface controller, в том числе и с портами в диаппазоне 0680-069F которые винда высветила в ресурсах
переключалка вайфая как работала так и работает,
но возможно это происходит по другой причиние
отслеживая работу я столкнулся с обращением к фаст систем кол под номером 42H по команде SYSENTER и дальнейшей невозможностю протрейсить что там в этом коде делается, но результатом двух таких обращений, после нажатия на кнопку WLAN является вкл/выкл этого самого ваяфая.

эти 2 обращения к fast system call проиcходят от вызова kernel32.DeviceIoControl перед которым грузятся параметры необходимые ей для работы, возможно поняв что она делает можно будет попытаться проследить чтото дальше.



К примеру стандартные системные адреса
 Cкрытый текст   (кликните здесь для просмотра)

АТ и PS/2 PC/XT Назначение
000-00F 000-00F Контроллер DMA #1 – 8237

010-01F PS/2 – расширение DMA #1

020-021 020-021 Контроллер прерываний #1 – 8259А

040-05F 040-043 Таймер (PC/XT: 8253, АТ: 8254)

060 060 Диагностический регистр POST (только запись)

060-063 Системный интерфейс 8255

060, 064 Контроллер клавиатуры АТ 8042

061 Источники NMI и управление звуком

070-07F Память CMOS и маска NMI

080 Диагностический регистр

080-08F 080-083 Регистры страниц DMA

090-097 PS/2 микроканальный арбитр

ОАО Маски NMI

0А0-0ВF Контроллер прерываний #2 – 8259А

0С0-0DF Контроллер DMA #2 8237А-5

0F0-0FF Сопроцессор 80287

100-IEF PS/2 управление микроканалом

170-177 Контроллер НЖМД #2 (1DE42)

1F0-1F7 Контроллер НЖМД #1 (IDE# 1)

200-207 200-20F Игровой адаптер

210-217 Блок расширений

238-23F COM4

278-27F 278-27F Параллельный порт LPT2 (LPT3 при наличии MDA)

2А2-2АЗ Часы MSM4832IRS

2C0-2DF 2C0-2DF EGA #2

2Е0-2Е7 COM4

2E8-2EF COM4

2F8-2FF 2F8-2FF COM2

300-31F Плата прототипа

320-32F Жесткий диск XT

338-33F COM3

370-377 Контроллер НГМД #2

376-377 Порты команд IDE#2

378-37F 378-37F Параллельный порт LPTI (LPT2 при наличии MDA)

380-38F 380-38F Синхронный адаптер SDLC/BSC #2

3A0-3AF 3А0-3А0 Синхронный адаптер BSC #1

3В0-ЗВВ ЗВО-ЗВВ Монохромный адаптер (MDA)

3В4-ЗС9 PS/2 видеосистема

3BC-3BF 3BC-3BF Параллельный порт LPT1 платы MDA

3C0-3CF 3C0-3CF EGA #1

3C0-3DF 3C0-3DF VGA

3D0-3DF 3D0-3DF CGA/EGA

ЗЕ0-ЗЕ7 COM3

3E8-3EF COM3

BF0-3F7 3F0-3F7 Контроллер НГМД #1

BF6-3F7 Порты команд IDE# 1

3F8-3FF 3F8-3FF СОМ1

2Е и 2F вроде ничем не перекрываются и вполне могут быть такими
а вот 00-0F наверняка имеют смещение в диапазоне 100-FFF
но так получается что манипулируя конфигурационными регистрами 37h и 38h запросто можно переводить ногу 47 в нужное состояния без обращения к регистру данных 0F
_________________
Quaere Vērum
------------------------

Последний раз редактировалось: _RAZAAR_ (01:21 09-02-2019), всего редактировалось 1 раз
    Добавлено: 01:11 09-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
Ох иногда лазяние в дебри ничего хорошего не дает.
_RAZAAR_ :
очевидно что при записи в регистер 55(37h) числа 245

Ну вот я тут не вижу в упор запись в 55/37h j_Outport(47, 245); тут запись идет в порт 47.
Я бы больше sub_4FCF1E(48, 104); тут в 48 порт пишется 104, а 104 это 0x68 а для активации wifi потом идет запись как раз в регистр 0x68F у меня даташита нет и возможно это просто совпадения, а может и закономерность.
Блин опять меня понесло, в общем не мудри, попробуй просто сделать указаную выше инициализацию, и потом запись для активации wifi.
_RAZAAR_ :
в винде отключая все доступные для отключения системные устройства принадлежащие к SCH LPC Interface controller, в том числе и с портами в диаппазоне 0680-069F которые винда высветила в ресурсах
переключалка вайфая как работала так и работает,
но возможно это происходит по другой причиние

В винде отключая устройства, ты отключал драйвера устройств.
Софтина же пишет напрямую в порты, ей пофиг на дрова, что она пишет я привел, тут откровенно видно что везде константы, она нигде ничего не считает, ни оффсеты, ничего. Просто пишет в порты то что пишет.

Но всёж если запись идет в порт GP4 то я думаю что смещение для этого по порта будет 0x680
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 11:43 09-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
VBKesha :
Ох иногда лазяние в дебри ничего хорошего не дает.


Когда нехватает знаний это единственный путь их получить Улыбка
нахрап срабатывает но редко.

VBKesha :

Ну вот я тут не вижу в упор запись в 55/37h j_Outport(47, 245); тут запись идет в порт 47.

Выжимка из пдфа на мост

Programming Example
The following is a configuration register programming example written in Intel 8086 assembly language.

;----------------------------.
; ENTER CONFIGURATION STATE |
;----------------------------'
MOV DX,02EH ;SYSOPT = 0 <---- запись в порт 2Е моста для
MOV AX,055H активации режима цонфигурации
OUT DX,AL j_Outport(46, 85);
;----------------------------.
; CONFIGURE REGISTER CR0-CRx |
;----------------------------'
MOV DX,02EH <---- запись в порт 2Е моста для
MOV AL,00H обращение к внутреннему регистру
OUT DX,AL ;Point to CR0 конфигурации CR0 в нашем случае это CR37 (port GP4 direction reg) > j_Outport(46(2Eh), 55(37h))
MOV DX,02FH <---- запись в порт 2f моста для
MOV AL,3FH передачи cонфигурационных данных
OUT DX,AL ;Update CR0 в нашем случае это запись в регистр числа 11110101(245) биты которого соответствуют конфигурируемому режиму работы пинов порта GP4 j_Outport(47, 245)
;
MOV DX,02EH <----- и так далее для других регистров конфигурации в чзастности мы видели j_Outport(46, 53); и j_Outport(47, 120);
MOV AL,01H
OUT DX,AL ;Point to CR1
MOV DX,02FH
MOV AL,9FH
OUT DX,AL ;Update CR1
;
; Repeat for all CRx registers
;
;-----------------------------.
; EXIT CONFIGURATION STATE |
;-----------------------------'
MOV DX,02EH <---- завершение сессии конфигурации обращением к порту 2Е с кодом инициализации ААh > j_Outport(46, 85);
MOV AX,AAH
OUT DX,AL



VBKesha :

Я бы больше sub_4FCF1E(48, 104); тут в 48 порт пишется 104, а 104 это 0x68 а для активации wifi потом идет запись как раз в регистр 0x68F у меня даташита нет и возможно это просто совпадения, а может и закономерность.


Датащит я ещё вчераже приатачил к рару пакета!

Вот этого я непонял что sub_4FCF1E(48, 104) означает что чтото кудато пишется, если так! то всё становится на свои места почти
48 это регистр 30h моста, при записи в этот порт устанавливается указатель базового адреса для обращений к вспомогательным регистрам (Runtime Register block base address) моста.
Таким образом выресовался базовый адрес

sub_4FCF1E(48, 104); запись по адресу 0х30h указателя базового адреса регистров конфигурации 68h (вот сам этот 0х30h точно находится там или у него тоже есть предварительно гдето указаное смещение как то 0х130 или 0х530h? судя по винде для моста доступны большое количество портов
и диапазон 0022h - 003Fh присутствует.

далее вроде всё сходится
j_Outport(46, 55); запись по адресу 0х680+2Еh код 37h вход в режим конфигурации порта GP4
j_Outport(47, 245); запись по адресу 0х680+2Fh код 11110101(245) конфигуразия режима работы ног порта GP4
j_Outport(46, 53); тоже самое для порта GP3 зачемто, это надо выяснить, возможно просто походу инициализация порта GP3.
j_Outport(47, 120);
j_Outport(46, 170); запись по адресу 0х680+2Еh kод AAh выход из режима конфигурации


VBKesha :

Блин опять меня понесло, в общем не мудри, попробуй просто сделать указаную выше инициализацию, и потом запись для активации wifi.


еслиб я знал то не мудрил бы, "попробуй просто" легко сказать, "надо знать на какие контакты машинки перемещения нажимать" Улыбка
а "я эти куклы в первый раз вижу", языки обстракций мне очень плохо понятны, был бы тот же код на асемблере всё былоб более прозрачно, попробую покурить очень интересную ссылку которую ты дал.

я невижу во всём остальном си коде где там происходит чтение/запись порта 0Fh (Data регистр GP4) для установки бита 7 в нужный уровень.

кроме того из высше указанного видно что GP4.7 конфигурируется как инпут
а на схеме он точно аутпут. (хотя возможно оно там както инвертируется и записывать надо как всегда наоборот чтоб получилось прямо Улыбка )

VBKesha :

_RAZAAR_ :
в винде отключая все доступные для отключения системные устройства принадлежащие к SCH LPC Interface controller, в том числе и с портами в диаппазоне 0680-069F которые винда высветила в ресурсах
переключалка вайфая как работала так и работает,
но возможно это происходит по другой причиние

В винде отключая устройства, ты отключал драйвера устройств.
Софтина же пишет напрямую в порты, ей пофиг на дрова, что она пишет я привел, тут откровенно видно что везде константы, она нигде ничего не считает, ни оффсеты, ничего. Просто пишет в порты то что пишет.

И большое тебе спасибо за прояснение вопроса и помощ!

VBKesha :

Но всёж если запись идет в порт GP4 то я думаю что смещение для этого по порта будет 0x680

тогда и обращение к регистру указателя базового адреса вспомогательных регистров моста 30h также надо делать как 0х6830h? 0х680+30h = 6B0h?


для активации wifi потом идет запись как раз в регистр 0x68F у меня даташита нет и возможно........
по датащиту 0х680+0Fh это какраз регистр 0Fh (Data reg GP4)

пойду воплощать разгаданное Улыбка
ещё раз благодарю и VBKesha и БулерМэн!
_________________
Quaere Vērum
------------------------

Последний раз редактировалось: _RAZAAR_ (14:39 09-02-2019), всего редактировалось 4 раз(а)
    Добавлено: 13:58 09-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
_RAZAAR_ :
j_Outport(46, 55); запись по адресу 0х680+2Еh код 37h вход в режим конфигурации порта GP4
j_Outport(47, 245); запись по адресу 0х680+2Fh код 11110101(245) конфигуразия режима работы ног порта GP4
j_Outport(46, 53); тоже самое для порта GP3 зачемто, это надо выяснить, возможно просто походу инициализация порта GP3.
j_Outport(47, 120);
j_Outport(46, 170); запись по адресу 0х680+2Еh kод AAh выход из режима конфигурации

Либо я тебя не понимю, либо ты меня.
Но тут указано ровно хапись в те порты как указано.
j_Outport(46, 170) на ASM'e будет выглядеть примерно как
Код:

mov dx, 02eh
mov ax, 0AAh
out dx, ax

Тоесть никакой 680 не приписывается.
_RAZAAR_ :
sub_4FCF1E(48, 104); запись по адресу 0х30h указателя базового адреса регистров конфигурации 68h

По сути да всё без смещения.
_RAZAAR_ :
тогда и обращение к регистру указателя базового адреса вспомогательных регистров моста 30h также надо делать как 0х6830h? 0х680+30h = 6B0h?

Судя по тому что я могу предположить выход GP4.
В регистре 30h записывается Runtime Register Block Address. Дальше чтобы обратится к устройствам на этом порте надо сдвинуть базовый адрес на 8 бита влево. и прибавить к нему адрес устройстваю.
Тоесть мы записали в регистр 30h значение 68h. Двигаем 68h на 4 бита влево и получам 680h дальше прибавляем 0Fh чтобы обратится к GP4 получам 68Fh
Что сходится с куском кода
Код:
sub_4FE819(v7, 0x68Fu, 1, 1);

И чтобы включиь вай фан нам надо установить нулевой бит в этом порте(это судя по коду а не по схеме).
Для жтого функция sub_4FE819
читает значение из порта 0x68Fu устанавливет в прочитаном 0 бит в еденицу и потом пишет назад.
_RAZAAR_ :
кроме того из высше указанного видно что GP4.7 конфигурируется как инпут

По моему как оутпут
Из датащита
Цитата:
The bits in this register are used to select the direction of the
GP40-GP47 pins.
0=Input
1=Output

Туда пишется 245 а это 11110101 соответсвенно все как выходы кроме GP41 и GP43

Ещу раз уточню, что софтина включает WiFi через GP40 а не GP47 сверься со схематикой.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do

Последний раз редактировалось: VBKesha (19:21 09-02-2019), всего редактировалось 1 раз
    Добавлено: 15:31 09-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
VBKesha :
_RAZAAR_ :
j_Outport(46, 55); запись по адресу 0х680+2Еh код 37h вход в режим конфигурации порта GP4
j_Outport(47, 245); запись по адресу 0х680+2Fh код 11110101(245) конфигуразия режима работы ног порта GP4
j_Outport(46, 53); тоже самое для порта GP3 зачемто, это надо выяснить, возможно просто походу инициализация порта GP3.
j_Outport(47, 120);
j_Outport(46, 170); запись по адресу 0х680+2Еh kод AAh выход из режима конфигурации

Либо я тебя не понимю, либо ты меня.
Но тут указано ровно хапись в те порты как указано.
j_Outport(46, 170) на ASM'e будет выглядеть примерно как
Код:

mov dx, 02eh
mov ax, 0AAh
out dx, ax


чтоб понять о чем я говорю надо понять что написано в пдф.
Как я понял там сказано (возможно неправельно понял), что есть регистр указателя базового адреса блока внутренних регистров (Rutime Registers) и возможно*** также регистров выбора конфигураци (Configuration Select Registers)CSR моста
регистр с адрсесом 0х30h, по POR его значение 0х00h
стр 129,139,170 пдф


перед той записью которую ты указал на ассемблере и которая есть в пдфе тоже и именно оттуда я её привел, есть эта фраза sub_4FCF1E(48, 104) у тебя в потрошильном коде.
Если она не означает запись в этот регистр 30h числа 68h , то базовый адрес для доступа к (Rutime Registers) не меняется, и конечное обращение
к регистру данных GP4 не по адресу 0х68Fh а просто 0x0Fh

пока ещё раз перечитывал понял что как регистр 0х30h указатель базового адреса (Rutime Registers) так и Configuration Access Ports 0x2E,0x2Fh
к адресу 0х680h отношения не имеют, по этому адресу происходит обращение только к (Rutime Registers) и к регистру данных GP4 в частности 0х68Fh как одному из них.



VBKesha :

Тоесть никакой 680 не приписывается.

Так точно, согласен.
Запись sub_4FCF1E(48, 104) касаетстся только обращения к регистру данных
в будущем и является просто действием подготовки чипа к адресованию его
(Rutime Registers)

VBKesha :

_RAZAAR_ :
sub_4FCF1E(48, 104); запись по адресу 0х30h указателя базового адреса регистров конфигурации 68h

По сути да всё без смещения.

и 0х2Еh,0x2Fh тоже также?, я почти готов с этим согласиться если б не этoт абзац из пдфа

 Cкрытый текст   (кликните здесь для просмотра)


по суте говорящий о том (как я понимаю)
что этот самый указатель базового адреса блока внутренних регистров 30h
находится внутри блока регистров выбора конфигурации (Configuration Select Registers)CSR, и как только к нему обратились через конфиг регистры, которые пока 0х2Eh и 0х2Fh, и поменяли в нем значение указателя базового адреса , то Base адреса всех блоков перечисленых в таблице поменяются соответственно значению конфигурационного регистра 0х30h который один из CSR.
Note1 под таблицей.
И нигде в таблице не сказанно что основных конфигурационных регистров 3 а не 2 и эти 2 доступных это только 0х2Е и 0х2F
стр 163 пдф
хотя сразу после включения питания значение регистра 0х30h = 0х00h
и до его изменения к регистрам 0х2Е и 0х2F можно обратится и так
после изменения судя по таблице адрес 0х2Е и 0х2F будет + Base тоже.
Но чтото мне подсказывает что возможно операция перезаписи регистра
0х30h <- 0х68h происходит на уровне старта BIOS




VBKesha :

_RAZAAR_ :
тогда и обращение к регистру указателя базового адреса вспомогательных регистров моста 30h также надо делать как 0х6830h? 0х680+30h = 6B0h?

Судя по тому что я могу предположить выход GP4.

Это как понять ? Какой выход? у порта GP4 семь ног/bit каждая из них может быть выходом но другая соседняя входом, определяется CSR 37h и записанным в него байтом.
Нас в частности интересует ногга 47 которая и по обозначению совпадает GP4.7, в числе 245 и нулевой и седьмой бит в единице соответственно его конфигурация вход (судя по датащиту если не ошибся)

Нулевой бит нас не интересует это по определению RFKILL softlock, с софт локом всё нормально он почемуто управляется из линукса ну или говорит что управляется
нам нужен Hardlock, хардлок командой линукс RFKILL unblock all не управляется, a это бит 7

Возможно я не подчеркнул с самого начала - надо в основном отслеживать работу кнопки ALL OFF а потом Wireless Lan
так как ALL OFF должна перевести как минимум бит 7 в другое состояние а Wireless Lan перевести и бит 7 и бит 0 в обратное состояние работы wifi




VBKesha :

В регистре 30h записывается Runtime Register Block Address. Дальше чтобы обратится к устройствам на этом порте надо сдвинуть базовый адрес на 8 бита влево. и прибавить к нему адрес устройстваю.
Тоесть мы записали в регистр 30h значение 68h. Двигаем 68h на 8 бит влево и получам 680h дальше прибавляем 0Fh чтобы обратится к GP4 получам 68Fh
Что сходится с куском кода
Код:
sub_4FE819(v7, 0x68Fu,[b] 1, 1[/b]);



Вот что этот кусок кода означает? чему равно v7 если именно оно отправляется в датапорт 0Fh GP4, и что означают остальные единички?

VBKesha :

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


Судя по схеме надо считать и проверить бит 0 и бит 7
и если они в нерабочем состоянии привести их в рабочее соответствующее рабочему состоянию wifi модуля.

VBKesha :

Для жтого функция sub_4FE819
читает значение из порта 0x68Fu устанавливет в прочитаном 0 бит в еденицу и потом пишет назад.


Возможно ты это увидел не манипулируя кнопкой ALL OFF до этого
возможно последнее состояние 7ого бита было запомнено и то что ты отследил это была только проверка бита 0
но в идеале читать проверять оба бита и включать если отключены.


_RAZAAR_ :
кроме того из высше указанного видно что GP4.7 конфигурируется как инпут


VBKesha :

По моему как оутпут
Из датащитаThe bits in this register are used to select the direction of the
GP40-GP47 pins.
0=Input
1=Output
Туда пишется 245 а это 11110101 соответсвенно все как выходы кроме GP41 и GP43

Так точно! Улыбка, это я по привычке от PICов и по общей очевидности

1-i - по виду почти не отличаются и соответствуют input
0-O - по виду почти не отличаются и соответствуют Output

а тут у интела видетели все должно быть неочевидно Улыбка

VBKesha :

Ещу раз уточню, что софтина включает WiFi через GP40 а не GP47 сверься со схематикой.


если бит 7 будет в плохом состоянии с битом 0 что хочеш можно делать ни вайфай ни гпс ни гсм ни синезуб невключатся
я забыл это подчеркнуть хотя в начале писал что меня интересует только

rfkill list all
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: yes

то что в лаптопах через спецкнопку активируется
_________________
Quaere Vērum
------------------------

Последний раз редактировалось: _RAZAAR_ (20:12 09-02-2019), всего редактировалось 1 раз
    Добавлено: 20:00 09-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
_RAZAAR_ :
и 0х2Еh,0x2Fh тоже также?, я почти готов с этим согласиться если б не этoт абзац из пдфа

Нет эти регистры не перемапируютс вообще они всегда на одном месте. И похоже в таблице ошибочка небольшая, иначе бы FDC/COM/LPT лежали в одних регистрах. Видимо там однико их адреса мапируются совсем в других регистрах(стр. 138-139).
_RAZAAR_ :
хотя сразу после включения питания значение регистра 0х30h = 0х00h
и до его изменения к регистрам 0х2Е и 0х2F можно обратится и так
после изменения судя по таблице адрес 0х2Е и 0х2F будет + Base тоже.
Но чтото мне подсказывает что возможно операция перезаписи регистра

Стр 129 пока с CRX лежит число меньше 0x100, RUNTIME REGISTERS недоступны.
0х2Е и 0х2F никуда никогда не плавают они всегда в одном месте.
_RAZAAR_ :

Нулевой бит нас не интересует это по определению RFKILL softlock, с софт локом всё нормально он почемуто управляется из линукса ну или говорит что управляется
нам нужен Hardlock, хардлок командой линукс RFKILL unblock all не управляется, a это бит 7

Вот я бы не зарекался что именно делает RFKILL и что это вообще работает, ну заве что ты не посмотрел значения на конкретной ноге микросхемы и с увереностью не можешь сказать что он её устанавливает. Само понятие softlock обычно не подразумевает дрыканья ногами.
_RAZAAR_ :
Вот что этот кусок кода означает? чему равно v7 если именно оно отправляется в датапорт 0Fh GP4, и что означают остальные единички?

На второй странице под спойлером я же приводил расшифровку в C стиле.
v7 это отголоски ООП ссылка на объект this(нас не интересует от слова совсем)
Второй параметр который 0x68F это порт с который ведется работа.
Треттий параметр это маска биты которые мы хотим установить или сбросить в указанном порте.
Четвертый параметр указывает на хотим мы установить бит(когда 1) или наоборот хотим сбросить.
_RAZAAR_ :
а тут у интела видетели все должно быть неочевидно

В AVR насколько я помню также...
Щас попробую ещё раз заглянуть в екзешник, с другой стороны если известно насчёт ноги 7 уже пора писать в порты и глядеть на результат.

_RAZAAR_ :
Возможно ты это увидел не манипулируя кнопкой ALL OFF до этого
возможно последнее состояние 7ого бита было запомнено и то что ты отследил это была только проверка бита 0
но в идеале читать проверять оба бита и включать если отключены.

Я вообще её не запускал, это статический анализ, но манипуляцией 7 бита я вообще не видел.

Чуть позже пересмотрю код.
PS. Выложи схематику на всякий.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 21:19 09-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
VBKesha :

Стр 129 пока с CRX лежит число меньше 0x100, RUNTIME REGISTERS недоступны.


Там же не так написано вроде?
Если Runtime Register Base Address is located below 0x100
то декодирование адреса выключено.
В CR30 число большее чем FFh находиться неможет
так что же это всё означает тогда?
как ты понял что то что записывается в CR30 сдвигается на один бит и из одного байта получается 2, 0х68h >>0х680h ?


VBKesha :

0х2Е и 0х2F никуда никогда не плавают они всегда в одном месте.

а почему в этом можно быть абсолютно уверенным?

VBKesha :

_RAZAAR_ :

Нулевой бит нас не интересует это по определению RFKILL softlock, с софт локом всё нормально он почемуто управляется из линукса ну или говорит что управляется
нам нужен Hardlock, хардлок командой линукс RFKILL unblock all не управляется, a это бит 7

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

Ну я же оговорился что "ну или говорит что управляется" Улыбка
Еслиб была возможность ткнуть в ногу яб попросту её включил отрезав и не ковырался бы с этим со всем уже неделю минимум Улыбка
RFKILL как минимум на команду
RFKILL block all
отвечает в консоль: софт и хард блокед ес
RFKILL unblock all
отвечает в консоль: софт блокед ноу хард блокед ес

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

wifi интерфейс падает
но рфкилл говорит
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
при этом блутус интерфейс исчезает из списка вообше
когда включаю
появляются оба и wifi и блютус а на всём стоит блокед ноу.




VBKesha :

Само понятие softlock обычно не подразумевает дрыканья ногами.

согласен, а hard block?

VBKesha :

На второй странице под спойлером я же приводил расшифровку в C стиле.
v7 это отголоски ООП ссылка на объект this(нас не интересует от слова совсем)


я си расшифровки плохо понимаю извиняй,
v7 это разве не данные читаемые из DATA регистра GP4 порт 0x68Fh?
почему они нас не интересуют?
желательно записывать в порт не абычто а только те биты которые надо
а для этого надо узнать что там стоит прочитав , разве нет?

VBKesha :

Второй параметр который 0x68F это порт с который ведется работа.
Треттий параметр это маска биты которые мы хотим установить или сбросить в указанном порте.
Четвертый параметр указывает на хотим мы установить бит(когда 1) или наоборот хотим сбросить.


sub_4FE819(v7, 0x68Fu, 1, 1);
очевидно это чтение и проверка бита 1?


VBKesha :

В AVR насколько я помню также...
Щас попробую ещё раз заглянуть в екзешник, с другой стороны если известно насчёт ноги 7 уже пора писать в порты и глядеть на результат.

Надо вернуть в линукс или необязательно?
под виндой если будет щелкать самописным кодом то и под линуксом жеж будет?
Только под виндой оно и так щелкает над линух назад вернуть Улыбка

VBKesha :

Я вообще её не запускал, это статический анализ, но манипуляцией 7 бита я вообще не видел.

А ида может все тоже самое но в асемблере показать?
Чет я качнул какуюто фриваре с их сайта и непойму как её в какойлибо анализ пустить вообще.

VBKesha :

Чуть позже пересмотрю код.
PS. Выложи схематику на всякий.

тебе всю какую есть или куска который выкладывал достаточно?
 Cкрытый текст   (кликните здесь для просмотра)

_________________
Quaere Vērum
------------------------

Последний раз редактировалось: _RAZAAR_ (22:57 09-02-2019), всего редактировалось 2 раз(а)
    Добавлено: 22:52 09-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
_RAZAAR_ :
Если Runtime Register Base Address is located below 0x100

Там выше расписано как оно считается. И достаточно расплывчато написано.
Цитата:
The runtime register block may be located within the range 0x0100-0x0FFF on 16-byte boundaries.

Вот тут заковырка но как это написано понять очень сложно что имеется ввиду. Однако адресация портов ввода вывода имеет 16 бит. это раз, указанный выше диапазон(да и вот (bits[11:0] are decoded and bits[15:12] must be zero)) указывает что базовый адрес 12 бит и 4 бита игнорируются, а 4 бита это как раз число от 0 до 15 то есть до 16 байт. Из этого вполне можно придти к указанной мной логике. Код её подтверждает.
_RAZAAR_ :
а почему в этом можно быть абсолютно уверенным?

Ну абсолютно уверенным быть нельзя, но это частая практика, что конфигурационные регистры не плавают, чтобы не гадать где что сейчас находится а можно было вычитать, или всегда поменять в случае чего, не зная где что находится.
_RAZAAR_ :
я си расшифровки плохо понимаю извиняй,
v7 это разве не данные читаемые из DATA регистра GP4 порт 0x68Fh?
почему они нас не интересуют?
желательно записывать в порт не абычто а только те биты которые надо
а для этого надо узнать что там стоит прочитав , разве нет?

Щас расшифрую, тут не совсем обычный си, на название функции не смотри это менно sub_4FE819
Код:

int __thiscall sub_522040(void *this, unsigned __int16 a2, char a3, char a4) // __thiscall говорит что это обращение к методу класса, а там всегда адрес на this.
{
  // ниже объявления со всякой не особо нужной инфой
  int v4; // eax@4
  char v6; // [sp+Ch] [bp-D8h]@1
  unsigned __int8 v7; // [sp+D3h] [bp-11h]@1 // локальная v7 не входящий параметр
  void *v8; // [sp+DCh] [bp-8h]@1
  int savedregs; // [sp+E4h] [bp+0h]@4

  memset(&v6, 0xCCu, 0xD8u); // это используется в дебак сборках, для отслеживания выхода за границы стэка
  v8 = this;
  v7 = 0;
  v7 = j_Inp(a2); // читаем в v7 значение заданное в a2 при вызове (0x68Fu)
  if ( a4 ) // проверяем чему равно a4 при вызове, если больше нуля
    v7 |= a3; тот делаем OR побитовый, между тем что прочитали в v7 и треттим параметром
  else // иначе
    v7 &= ~a3; // делаем AND NOT побитовый между v7 и a3
  v4 = j_Outp(a2, v7); пишем то что получили в v7 в порт указаный в параметре a2
  return sub_4FAC41((void **)&savedregs == &v8, v4); // ненужная нам фигня
}

Ага я понял что тебя смутило. Это декомпиляция кода, тут переменные достаточно стандартно завутся. Так вот v7 которая передаётся в функцию, она вообще не имеет отношение к той что объявлена в функции. Та v7 что передавалась в функции, при исполнении функции будет иметь имя this, так как была передана в первый аргумент.
_RAZAAR_ :
согласен, а hard block?

Даже очень подразумевает.

_RAZAAR_ :
Надо вернуть в линукс или необязательно?
под виндой если будет щелкать самописным кодом то и под линуксом жеж будет?
Только под виндой оно и так щелкает над линух назад вернуть

По идее должно.
_RAZAAR_ :
А ида может все тоже самое но в асемблере показать?
Чет я качнул какуюто фриваре с их сайта и непойму как её в какойлибо анализ пустить вообще.

Это не тот инструмент который стоит использовать free. Я бы советовал на злачных местах найти версию 6.8 или 7.0 В ассемблере он покажет всё отлично, но ковырять ассемблерный код ооп программы после оптимизатора, мало веселого.

_RAZAAR_ :
тебе всю какую есть или куска который выкладывал достаточно?

Желательно всю, или как минимум 21 и 29 страницы.

_RAZAAR_ :
RFKILL как минимум на команду

Тут заморочка в том что всё это прется через драйвер, и причем окольными путями, если дрова не рассчитаны на то что что то будет дизэблится из непойми какой микросхемы то он и включить не сможет.
PS. Прогнал код, не вижу нигде запись в 7 бит. Однако это не значит что её нигде нет. Есть ещё ACPI она может делаться там, и также в биосе тоже.
В общем я бы для начала прочитал CR0D и CR0E в первом должно быть 0x5a во втором ревизия чипа это будет знак что всё прочитанное истина, и дальше пробовал бы сделать последовательность из указанной выше последовательности.

В принципе написать софтину под линух мне проблем не составит, если будешь тестировать конечно.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 00:46 10-02-2019   
БулерМэн
 420 EGP


Рейтинг канала: 4(58)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
VBKesha :
Нашлась вот такая интересная строка, для пользователей ntport

Вызываю данную функцию с указанными параметрами - и ничего не происходит, как была регистрацию пройдите так и остается.
Приведу пример из инсталлированной ntport:
 Cкрытый текст   (кликните здесь для просмотра)

Код:

Option Strict Off
Option Explicit On
Module NTPort
   ' NTPort Library
   ' Copyright (c) 1997-2005 Hai Li, Zeal SoftStudio.
   ' E-Mail: support@zealsoft.com
   ' Web: http://www.zealsoft.com
   
   
   ' Write a value to specific ports.
   Declare Sub Outport Lib "ntport.dll" (ByVal portID As Short, ByVal nByte As Short)
   Declare Sub OutportW Lib "ntport.dll" (ByVal portID As Short, ByVal nWord As Short)
   Declare Sub OutportD Lib "ntport.dll" (ByVal portID As Short, ByVal dwDWord As Integer)
   Declare Sub Outp Lib "ntport.dll" (ByVal portID As Short, ByVal nByte As Short)
   Declare Sub Outpw Lib "ntport.dll" (ByVal portID As Short, ByVal nWord As Short)
   Declare Sub Outpd Lib "ntport.dll" (ByVal portID As Short, ByVal dwDWord As Integer)
   
   ' Returns a value from specific ports.
   Declare Function Inport Lib "ntport.dll" (ByVal portID As Short) As Short
   Declare Function InportW Lib "ntport.dll" (ByVal portID As Short) As Short
   Declare Function InportD Lib "ntport.dll" (ByVal portID As Short) As Integer
   Declare Function Inp Lib "ntport.dll" (ByVal portID As Short) As Short
   Declare Function Inpw Lib "ntport.dll" (ByVal portID As Short) As Short
   Declare Function Inpd Lib "ntport.dll" (ByVal portID As Short) As Integer
   
   ' Returns a value indicates whether the application is running under Windows NT/2000 system.
   Declare Function IsWinNT Lib "ntport.dll" () As Boolean
   
   ' Returns a value indicates whether the application is running under 64-bit Windows system.
   Declare Function IsWin64 Lib "ntport.dll" () As Boolean

   ' Returns a value indicating the last operation is successful or not.
   Declare Function GetLastState Lib "ntport.dll" (ByVal sStatus As String) As Integer
   
   ' Returns the version of NTPort Library.
   Declare Function GetNTPortVersion Lib "ntport.dll" () As Short
   
   ' Set the registration information.
   Declare Sub LicenseInfo Lib "ntport.dll" (ByVal sUser As String, ByVal lKey As Integer)
   
   ' Enable your application to read or write specific ports.
   Declare Sub EnablePorts Lib "ntport.dll" (ByVal portStart As Short, ByVal portEnd As Short)
   
   ' Disable your application to read or write specific ports.
   Declare Sub DisablePorts Lib "ntport.dll" (ByVal portStart As Short, ByVal portEnd As Short)
   
   ' Set the setting of fast mode
   Declare Sub SetFastMode Lib "ntport.dll" (ByVal bOption As Integer)
   
   ' Get the current setting of fast mode
   Declare Function GetFastMode Lib "ntport.dll" () As Integer
   
   ' Get the base address of LPT port
   Declare Function GetLPTPortAddress Lib "ntport.dll" (ByVal portID As Short) As Short
   
   Public Const ERROR_NONE As Short = 0
   Public Const ERROR_DRIVER As Short = 2
   Public Const ERROR_SCM_CANT_CONNECT As Short = 9998
End Module


Судя по шаблону определения функций, среди вызываемых функций нет ни одной, которая бы принимала в качестве параметра - байты. Там либо char*, либо int, либо short. Мы говорим про одну и ту же версию ntport?

Цитата:
int __thiscall sub_523110(void *this, int a2, BYTE Data)

добавлено спустя 12 минут:
возможно имелось в виду это:

Код:
typedef unsigned char BYTE;


И вообще, откуда исходники с такими нечеловеческими названиями функций? Улыбка
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (01:23 10-02-2019), всего редактировалось 2 раз(а)
    Добавлено: 01:21 10-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
БулерМэн :
Судя по шаблону определения функций, среди вызываемых функций нет ни одной, которая бы принимала в качестве параметра - байты. Там либо char*, либо int, либо short. Мы говорим про одну и ту же версию ntport?

Это конкретно для той что шла в комплекте с Power Manager.
У меня ещё сломанная версия 2.4


БулерМэн :
И вообще, откуда исходники с такими нечеловеческими названиями функций?

IDA 6.8
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 01:23 10-02-2019   
БулерМэн
 420 EGP


Рейтинг канала: 4(58)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
VBKesha :
Это конкретно для той что шла в комплекте с Power Manager.

А какая там в комплекте? потому что у меня скачанная с офсайта имеет версию 2.8
_________________
Дулички и фигушки
    Добавлено: 01:26 10-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
БулерМэн :
возможно имелось в виду это:

Это заморочки самой IDA'ы там есть много внутренних типов, а тут всёж не конкурс приведи код в удобочитаемый вид. Я давно с ней ковыряюсь, у меня за такие мелочи глаза не цепляются, на автомате понятно что там должно быть.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 01:35 10-02-2019   
БулерМэн
 420 EGP


Рейтинг канала: 4(58)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Угадывание названия функции из библиотеки зато есть по входящим параметрам Гы-гы

Возможно, эта функция вызывается так, согласно примерам:

Код:
void Outport (short portID, short nByte);


понятно, что имея исходник непосредственно самой функции проще взять готовый кусок Улыбка
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (01:46 10-02-2019), всего редактировалось 1 раз
    Добавлено: 01:45 10-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
БулерМэн :
А какая там в комплекте? потому что у меня скачанная с офсайта имеет версию 2.8

2.8.1.14
Ложу в атаче, у меня регистрация прокатывает нормально.

ntport.rar
 Описание:
 Имя файла:  ntport.rar
 Размер файла:  52.85 KB
 Скачано:  228 раз(а)

_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 01:46 10-02-2019   
БулерМэн
 420 EGP


Рейтинг канала: 4(58)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
VBKesha :
у меня регистрация прокатывает нормально.

Вот теперь лучше, не кричит о регистрации Улыбка
_________________
Дулички и фигушки
    Добавлено: 01:48 10-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
БулерМэн :
Угадывание названия функции из библиотеки зато есть по входящим параметрам

Там не совсем угадывание, я могу глянуть из какой библиотеки и что вызывается.
например j_Outport это обертка как раз таки для void Outport (short portID, short nByte);
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 01:49 10-02-2019   
БулерМэн
 420 EGP


Рейтинг канала: 4(58)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
VBKesha :
Щас расшифрую, тут не совсем обычный си, на название функции не смотри это менно sub_4FE819

а зачем нам нужно знать содержимое данной функции?

добавлено спустя 2 минуты:
VBKesha :
например j_Outport это обертка как раз таки для void Outport (short portID, short nByte);


Глобально то, я полагаю, нужны аргументы для этих функций, и данные, чтобы как минимум повторить работу данной программы?
У тебя получились конкретные аргументы, по сути можно без чтения данных засылать в порт нужное значение...
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (02:01 10-02-2019), всего редактировалось 5 раз(а)
    Добавлено: 01:56 10-02-2019   
Железный канал: «LPC bus I/O под linux»
На страницу: Пред.  1, 2, 3, 4, 5  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Во время встраивания графического движка был неожиданно разработан и доведен до ума звуковой. (пишет игру TypoZLoB)

  » LPC bus I/O под linux | страница 2
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18