Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24

Как обращаться к функциям библиотек ядра?

10.11.2024, 08:57. Показов 2635. Ответов 44
Метки нет (Все метки)

Вот тут:
https://learn.microsoft.com/en... ds/portmon
описание работы программы-сниффера для контроля работы последовательных и параллельных портов. На современных машинах уже хлопотно запускать. Ставить шароварные программы, конечно, имеет смысл. Только потом их надо сносить и устанавливать заново. Хлопотно. Уже давно хочется написать что-то такое под себя.
А для этого надо каким-то образом иметь в пользовательской программе, что-то типа драйвера портов.
Ума не приложу, как это сделать.
Есть рекомендации?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2024, 08:57
Ответы с готовыми решениями:

Как обращаться к пользовательским функциям?
Здраствуйте уважаемые форумчане. Решил все таки занятся программированием с использованием фреймворка JQuery И хотелось бы узнать, как...

Как правильно обращаться к функциям
Всем Привет! Решил заняться с++, но попал в ступор. вообще я занимаюсь программированием на AS2(flash), язык по синтаксису схож с...

Как в решении из двух проектов из второго проекта обращаться к функциям из первого проекта?
Собственно данная задача возникает, когда в Blank Solution добавляем проект модульных тестов к первому проекту Empty C++. К примеру первый...

44
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
12.11.2024, 15:47
Цитата Сообщение от Argus19 Посмотреть сообщение
попиликать на динамике системника
Чтобы попиликать на динамике системника есть простая функция Beep

Visual Basic
1
2
3
4
5
6
7
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
 
Private Sub Command1_Click()
  Beep 300, 500
  Beep 100, 500
  Beep 50, 500
End Sub
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
12.11.2024, 15:48  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
есть простая функция
Знаю. Но по ссылке интереснее.
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
12.11.2024, 15:51
Argus19, а с реестром что не получается? там же всё просто
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
12.11.2024, 16:05
Ладно, держи рабочий код

Форма:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Option Explicit
 
Private Sub Command1_Click()
    Dim strArray() As String
    Dim i As Integer
    
    List1.Clear
    
    If EnumValues(HKEY_LOCAL_MACHINE, "Hardware\DeviceMap\SerialComm", strArray, IsWow64MyProcess) = True Then
        For i = 0 To UBound(strArray)
            List1.AddItem strArray(i)
            
            List2.AddItem GetKeyValue(HKEY_LOCAL_MACHINE, "Hardware\DeviceMap\SerialComm", strArray(i))
        Next
    End If
    
    Label1.Caption = List1.ListCount
    Label2.Caption = List2.ListCount
End Sub
Миниатюры
Как обращаться к функциям библиотек ядра?  
Вложения
Тип файла: zip SerialComm.zip (10.8 Кб, 3 просмотров)
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
12.11.2024, 16:44
Только почему-то COM3 и COM4 не определило у меня, ну ты уже сам смотри и разбирайся какие-то там ошибки могут быть

Добавлено через 38 минут
Там вообще какие-то другие функции должны быть для определения портов, а не тупое считывание из реестра. Должно быть что-то типа SetupDiGetDeviceInterfaceDetail и DeviceIoControl...
0
1401 / 860 / 92
Регистрация: 08.02.2017
Сообщений: 3,663
Записей в блоге: 2
12.11.2024, 17:52
Насчет COM-а вот есть функции
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
12.11.2024, 18:53
testuser2, Minimum supported client Windows 10
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
13.11.2024, 11:08  [ТС]
HackerVlad, порты определились.
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
16.11.2024, 17:12  [ТС]
Посмотрел декомпилированный Portmon. IDE VS2019 ругается на такие строки:
C++
1
2
3
4
5
    LODWORD(v93[0]) = 2 * v57;
    LODWORD(v93[1]) = (v59 >> 31) | (2 * (v89 + v55));
 
    HIDWORD(v93[0]) = (v57 >> 31) | (2 * v84);
*(_WORD *)a5 = 0;
Если приведение к типу лечится удалением подчёркивания, то вот это:
C++
1
dword_439E28 = (HANDLE)_beginthread((_beginthread_proc_type)sub_40D140, 0, byte_43FCD8);
совершенно не понимаю как вылечить.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
16.11.2024, 18:39
Цитата Сообщение от Argus19 Посмотреть сообщение
IDE VS2019 ругается на такие строки:
Так это же 100% обращение к полям структуры, а не массив. Нужно просто тип верный указать.

Цитата Сообщение от Argus19 Посмотреть сообщение
совершенно не понимаю как вылечить.
Без описания ошибки ничего непонятно.
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
17.11.2024, 11:38  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Без описания ошибки ничего непонятно.
Дома доступа к VS нет. Завтра.
Как оказалось, при запуске PortMon создаёт файл: PORTMSYS.SYS и очень быстро его удаляет. Я его восстановил и декомпилил. Разные декомпиляторы дают разные результаты. Какой из них правильный?
Вложения
Тип файла: zip PortMon.zip (75.4 Кб, 7 просмотров)
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
18.11.2024, 09:29  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Без описания ошибки ничего непонятно.
Ошибка такая:

"Ошибка (активно) E0020 идентификатор "_beginthread" не определен ConsoleApplication2 C:\Work\Prog\ConsoleApplication2\Console Application2\ConsoleApplication2.cpp 889 "

И ошибок 556 штук. Либо декомпилятор сработал не точно, либо что-то ещё.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 12,999
Записей в блоге: 7
18.11.2024, 12:45
Файл process.h подключен в ConsoleApplication2.cpp?
Вообще, какой ConsoleApplication если вы драйвер собираете? B судя по сему должен быть *.c файл, а не *.cpp. Есть чем подписать драйвер?
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
18.11.2024, 14:11  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Файл process.h подключен в ConsoleApplication2.cpp?
Нет.
Цитата Сообщение от locm Посмотреть сообщение
Вообще, какой ConsoleApplication если вы драйвер собираете? B судя по сему должен быть *.c файл, а не *.cpp. Есть чем подписать драйвер?
Попробую файл вставить в пустой проект драйвера кернель моды.

Добавлено через 15 минут
Извините, утонул в информации.
Я написал, что программа создаёт файл, который потом куда-то записывает.
Сама программа оконная, т.е. содержит код создания окна, контролов и т.д. Затем она работает.
Я пытался что-то сделать поместив декомпилированный код в консольное приложение. И написал, что из этого выходит.
Во вложении к посту:
Как обращаться к функциям библиотек ядра?
прикрепил файлы, созданные несколькими декомпиляторами, чтобы попробовать создать тот же драйвер. Только не могу понять, какой декомпилятор справился лучше и что сработает.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 12,999
Записей в блоге: 7
18.11.2024, 18:54
Цитата Сообщение от Argus19 Посмотреть сообщение
Нет.
Откуда тогда взяться функции?

Цитата Сообщение от Argus19 Посмотреть сообщение
Попробую файл вставить в пустой проект драйвера кернель моды.
Протект странно называется ConsoleApplication. Обычно это консольное приложение, а не драйвер.

Цитата Сообщение от Argus19 Посмотреть сообщение
Я пытался что-то сделать поместив декомпилированный код в консольное приложение.
А ничего что этот код должен выполнятся в ядре и экспортировать функции из ntoskrnl.exe, а не WinAPI из юзермодных dll?
А вы его пытаетесь выполнить в юзермоде. Даже если запустится (что маловероятно), работать не будет.

Цитата Сообщение от Argus19 Посмотреть сообщение
чтобы попробовать создать тот же драйвер.
Зачем? Имеете чем его подписать? https://learn.microsoft.com/ru... er-signing

Если интересна тема драйверов, сначала изучите статьи, потом напишите простейший драйвер, установите и заставьте нормально работать "словив" много синих экранов, а после думайте стоит ли этим заниматься.
0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
18.11.2024, 19:26  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
А ничего что этот код должен выполнятся в ядре и экспортировать функции из ntoskrnl.exe, а не WinAPI из юзермодных dll?
Программа как раз работает в юзер-моде. Это, как я уже писал выше, экранное приложение, которое вытаскивает из себя самой драйвер, куда-то его записывает, инициализирует и потом лихо им пользуется. Но т.к. драйвер написан в 1999г., что видно из его просмотра в Total Commander, то желательно его, как минимум, перекомпилировать.
Цитата Сообщение от locm Посмотреть сообщение
Имеете чем его подписать?
Я взял пример драйвера фильтра динамика системника, т.к. он был изготовлен неизвестно в какой версии VS, помучился и сделал. Осталось понять, как работает программа его установки. Из описания много что совершенно неочевидно, т.к. описание далеко не пошаговое. И никакого подписания не обнаружил.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 12,999
Записей в блоге: 7
18.11.2024, 19:40
Цитата Сообщение от Argus19 Посмотреть сообщение
Программа как раз работает в юзер-моде.
Декомпилировали драйвер или приложение использующее его? Если драйвер, он должен работать в ядре и вызывать функции из ntoskrnl.exe, а не из юзермодных dll.
Цитата Сообщение от Argus19 Посмотреть сообщение
Но т.к. драйвер написан в 1999г., что видно из его просмотра в Total Commander, то желательно его, как минимум, перекомпилировать.
Что даст перекомпиляция? Для этого нужен исходник, а не результат декомпиляции, который нужно вручную приводить в порядок.

Цитата Сообщение от Argus19 Посмотреть сообщение
Я взял пример драйвера фильтра динамика системника
Там же просто запись в регистры. Зачем нужен драйвер-фильтр? Обычного достаточно.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
18.11.2024, 20:17
Argus19, декомпилятор вряд ли даст сразу рабочий код всего приложения. Так бы давно люди бы изменяли любые программы как им захочется. Ищите нужный функционал и анализируйте - это и есть реверс-инжиниринг.
2
19.11.2024, 01:43

Не по теме:

Идите нафик со своим реверс-инженерингом тут Визуал Бейсик или где? )

0
 Аватар для Argus19
1446 / 463 / 78
Регистрация: 24.09.2017
Сообщений: 2,542
Записей в блоге: 24
19.11.2024, 09:39  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
это и есть реверс-инжиниринг.
К сожалению, 20 с лишним лет, ушедших на понимание VB, подтормаживают понимание С++, который стремительно развивается. Мне бы найти CD от книги Уолтера Они "Использование Microsoft Windows Driver Model".
Цитата Сообщение от testuser2 Посмотреть сообщение
тут Визуал Бейсик или где?
Чтобы сделать всё это на VB, надо разобраться с первоисточниками.

Не по теме:

Я тут задал простой вопрос в ветке С++. Навалились странные люди с разными вопросами. И очень скоро я просто запутался кому на какой вопрос отвечать. Профессиональный ответ был только от уважаемого zss. В остальном для меня ветка С++ стала токсичной. Здесь намного комфортнее. И серьёзные специалисты есть, в т.ч. и по С++
В ветке об электронике навалился человек с линуксом головного мозга со своими рекомендациями как сделать лучше.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2024, 09:39

Установить права, чтобы можно было обращаться только к функциям
Здравствуйте, помогите пожалуйста, есть БД в Microsoft SQL Server, и есть приложение в Delphi 7. Как настроить БД, так чтобы из приложения...

Задачи по функциям. Объясните задачу по функциям)
Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое число, которое получится после записи цифр...

нетбук с каким процом лучше n550(2 ядра )или C-50(2 ядра )?
всем привет решил в следюющем году сдать егэ по инфе => надо готовится и учить програмирование а без практики одной теории мало по этому...

Помогайте выбрать: видюха 640М и проц i7 2.4Гц (4 ядра) или 750M и i7 2Гц (2 ядра) ?
Приветствую. Вот занес уже руку в кошелек для покупки ноута Acer ASPIRE V5-572G но тот засомневался в сторону V3-571G. Оба с ips...

Что выбрать: Intel 2 ядра или AMD 4 ядра?
Нужен дельный совет от гуру! Могу взять АМД проц 4 ядра, либо интеловский 2 ядерный, цена примерно та же. Боюсь, что с интеловским...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru