Задача Есть десктопное приложение под Windows (закрытое, без публичного API). На экране оно отображает числовые значения, которые обновляются в реальном времени. Сейчас эти значения считываются через распознавание экрана (OCR), что медленно — задержка 50–200 мс. Нужно получать те же значения быстрее — за 1–10 мс — читая их напрямую из памяти процесса или из локального хранилища приложения.
Что должно делать решение 1. Отслеживать в реальном времени обновление нужных числовых значений в приложении. 2. Считывать эти значения (несколько числовых полей). 3. Передавать их внешней программе с минимальной задержкой (через файл, локальный сокет, shared memory или callback). 4. Стабильно работать продолжительное время.
Возможные подходы (на выбор исполнителя) Подход А — Чтение памяти процесса • Поиск в памяти процесса адресов нужных значений. • Учёт того, что адреса меняются между запусками — поиск по указателям (pointer chains) или сигнатурам (AOB-сканирование). • Стабильное чтение, переживающее перезапуск приложения. Подход Б — Чтение локальной базы / файлов • Приложение использует локальную базу SQLite. Проверить, пишет ли оно нужные данные в базу/файлы в реальном времени. • Если да — отслеживание изменений (file watcher / чтение WAL) и парсинг. Подход В — Перехват внутренних событий (для .NET-приложений) • Приложение предположительно на .NET. Рассмотреть перехват внутренних событий обновления данных (хуки, инъекция, перехват WinAPI-вызовов отрисовки). Требования • ОС: Windows 10 (64-bit). • Язык: Python предпочтительно, C++ допустимо. • Только чтение данных — приложение не модифицируется и не повреждается. • Исходный код с комментариями передаётся заказчику. • Желательна инструкция по повторному поиску адресов при обновлении приложения.
Формат сотрудничества Предлагаю начать с небольшого платного тестового задания: прочитать одно конкретное значение из памяти приложения и вывести его в консоль в реальном времени. Если тест успешен — переходим к полной задаче. В отклике укажите 1. Какой подход (А/Б/В) считаете оптимальным и почему. 2. Опыт чтения памяти/данных из закрытых десктопных приложений (игры, торговые терминалы, иной софт). 3. Какие инструменты используете (Cheat Engine, x64dbg, IDA, Frida и т.п.). 4. Готовы ли начать с тестового задания. 5. Примерные сроки и стоимость основной задачи.
Важно Приложение легальное, доступ к нему легальный, данные отображаются открыто на экране для самого пользователя. Требуется лишь более быстрый способ программно получить уже видимые на экране значения. Это инструмент для личного использования.