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

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

10.11.2024, 08:57. Показов 2516. Ответов 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
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
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
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
12.11.2024, 15:48  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
есть простая функция
Знаю. Но по ссылке интереснее.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
12.11.2024, 15:51
Argus19, а с реестром что не получается? там же всё просто
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
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
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
12.11.2024, 16:44
Только почему-то COM3 и COM4 не определило у меня, ну ты уже сам смотри и разбирайся какие-то там ошибки могут быть

Добавлено через 38 минут
Там вообще какие-то другие функции должны быть для определения портов, а не тупое считывание из реестра. Должно быть что-то типа SetupDiGetDeviceInterfaceDetail и DeviceIoControl...
0
1382 / 838 / 89
Регистрация: 08.02.2017
Сообщений: 3,510
Записей в блоге: 1
12.11.2024, 17:52
Насчет COM-а вот есть функции
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
12.11.2024, 18:53
testuser2, Minimum supported client Windows 10
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
13.11.2024, 11:08  [ТС]
HackerVlad, порты определились.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
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
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
16.11.2024, 18:39
Цитата Сообщение от Argus19 Посмотреть сообщение
IDE VS2019 ругается на такие строки:
Так это же 100% обращение к полям структуры, а не массив. Нужно просто тип верный указать.

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

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

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

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

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

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

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

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

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

Не по теме:

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

0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru