|
|
|
Создание холостого процесса18.11.2019, 14:53. Показов 1608. Ответов 4
Дaнный вопрос вытекает из темы выше, где мне необходимо организовать сеть «бот-процессов» без возможности с их стороны (и безопасно для моей стороны) обратиться к API.
После долгих опытов с SEH-обработчиком исключений мне удалось путём простого парсинга байт-кода взять обработку in/out-инструкций процессора на себя с затрачиванием до 10 млн тиков, что хоть и много, но в рамках общей задачи вполне нормально. А так как подопытный код находится в памяти моей контролирующей программы, но мне нужно создать несколько независимых процессов и организовать между ними обмен через in/out-инструкции в бесконечном цикле. B разделе «Запуск исполняемых файлов и динамически связываемых библиотек» кратко описываются четыре действия функции CreateFile:
Каким образом можно создать пустой процесс не только с флажками CREATE_SUSPENDED и DEBUG_PROCESS, но без резервирования всяких регионов (без верхних 2 Gb и нижних 64 Кб), чтобы в этих 4 Gb пространства основной процесс мог сам выбрать область под проекции файлов и виртуальную память? Говоря проще, как взять все полномочия создания процесса на себя и по запросу из сети создавать самому «песочницу» под каждый «бот»? Сами по-себе «боты» будут «жить» краткий период времени - до нескольких минут. А часть из них будут генерироваться случайными числами. Поэтому, исключений ожидается просто громадное количество и лишь по инструкциям in/out будет строиться сеть графов взаимодействия «ботов» (порты - не для доступа к реальным периферийным устройствам, а для символической бот-связи)… Потому мне нужно под каждый процесс выделить все 4 Гб адресного пространства, а не 4 Гб памяти. Так как само «окно» памяти будет «ползти» вслед за регистром EIP, динамически подгружая/генерируя байт-код… P.S.: Qemu/Bochs не годятся, так как всё должно выполняться реальным процессором… Спасибо!
0
|
|
| 18.11.2019, 14:53 | |
|
Ответы с готовыми решениями:
4
Напряжение холостого хода
Напряжение холостого хода |
|
|
|||||||
| 18.11.2019, 16:41 | |||||||
1
|
|||||||
|
|
||||||||||||
| 20.11.2019, 21:37 [ТС] | ||||||||||||
|
Но ничего не получается. Вот этот код:
Сеть советует установить «Driver Development Kit» в таком случае. Но тогда моя утилита будет у пользователей ожидать предустановленного DDK… Что-то я совсем ничего не понимаю. Если сейчас само ядро своими функциями внутренними выполняет те операции, почему они никак не представлены в экспорт? Почему вообще никак не обнаруживаются нигде при поиске? То есть, я никак сейчас ничего этого выполнить не смогу без установки DDK? Сколько дней потратил и не сдвинулся совсем никуда. Видно, задача слишком специфична для моего уровня. P.S.: Код пишу на MS-VC-6 под Windows'XP на VMware, так как он должен работать и на старых ноутбуках тоже. (Да и VisualStudio-6 интерфейсом куда приятнее, чем та же Visual Studio 2008 на Windows'8.1) Однако, и в Windows'XP, и в Windows'8.1 консоль выдаёт одинаковые нулевые векторы.
0
|
||||||||||||
|
|
||||
| 21.11.2019, 09:19 | ||||
|
так что таскать с собой и устанавливать SDK/WDK не нужно. зачем опускаться до I/O? если вы хотите процесс без API, то он должен быть системным. кодить из-под юзермода (даже на XP с учётом повышения привилегий) в любом случае это использование API.
1
|
||||
|
|
|||||
| 21.11.2019, 11:35 [ТС] | |||||
|
Под Windows команды «cli»/«sti»/«hlt»/«lock»/«in»/«out» на прикладном уровне просто запрещены к использованию.
В моём же случае эти команды «ботами», не по прямому назначению, но используются. Типа как «call»/«int»/«syscall». Говоря проще, например, «sti» и «cli» из команд превращаются в байт-код, управляющий не флагами прерывания, а типа как «glBegin» и «glEnd» в OpenGL. То есть, «sti» - как «Start The Inject», «cli» - как «Close The Inject». Для «инжекции» фрагментов кода из «бота» в мою оболочку. Нечто напоминающее некий «шейдер», но не только для графики… Например, «sti + bswap eax + cli» может служить преобразователем из ABGR в RGBA, если он инжектится в процесс отрисовки графики. Грубо говоря, вместо вызова системой пользовательских CallBack-функций, «sti … … cli»-скобками обрамляется составной фрагмент кода из группы инструкций, который внедрится в функции системы… Говоря ещё проще, «sti … … cli»-инжекции - аналогично как CSS в HTML, когда не используется явный JS-функционал по событиям, а просто описывается некий стиль и браузер в фоновом режиме всё сам делает. Если «sti … … cli» обрамляют CallBack-инжекции, то «in»/«out» служат как «SendMessage»/«PostMessage» (почти) для обмена данными между «ботами». То есть, по «out» данные заносятся в очередь (стек событий) из одного «бота» другому. А по «in» просто проверяется очередь и считывается сообщение от любого другого «бота», если оно было. Почему именно «in/out»? По-факту, эти самые «боты» формально и являются друг для друга (виртуальными) периферийными железками, потому команды «in/out» использовать чисто по логике уже корректно. На примере языка «LOGO»: Через некий порт указывается угол поворота, через другой порт - количество шагов, а в третий порт заносится скорость. И «бот», соответственно, повернётся, разгонится и пробежит заданное число шагов. Только вместо команд «Left/Right» или «Forward» используется формальная группа портов. Формальная, потому что, например, порты реального DMA для бота не нужны и могут использоваться ботами для смены цвета пера, его толщины и наклона. Я просто перехватываю исключения от доступа к портам и не думаю ничего эмулировать, а лишь передаю информацию другим «ботам»: «бот смены пера», «бот смены колёс», «бот смены краски» и т.д… Только вместо реального железа и языков высокого уровня должен быть сам x86-код. А пользователь через те же «in/out»-инструкции все «боты» связывает как проводами… То есть, моя Среда не должна пахнуть банальным набором библиотек функций и процедур. Должно обеспечиться максимальное ощущение, будто пользователь работает на голом процессоре и программирует через порты ввода/вывода «боты», которые могут находиться и на других компьютерах других стран, где запущена эта Среда… Потому, любые громадные задержки, связанные с перехватом и обработкой всех исключений из-за лабиринта «cli»/«sti»/«in»/«out»-команд, в моём случае и не страшны. Так как межсетевой обмен, сам по-себе, довольно медленный и блокирующими сокетами в любом случае заставит «боты» тормозить… А на первых парах будет использоваться грубый генератор случайных чисел для генерации хаотического x86-кода. И самые удачные варианты кода, которые имеют инструкции обмена с портами, будут включаться в граф «ботов»… P.S.: В двух словах не объяснишь. Самой задумке - более 20 лет. Но только сейчас я решил попробовать её реализовать как своеобразную нейросеть сугубо по своей концепции.
0
|
|||||
| 21.11.2019, 11:35 | |
|
Помогаю со студенческими работами здесь
5
Режим ХХ(Холостого Хода) Напряжение холостого хода Создание процесса Создание процесса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|