Обычно, шпионские программы ищут по сигнатуре, т.е. по уникальным последовательностям байт или слов, ниже представлен код поиска в определенном процессе значения типа DWORD.
Программа на языке Delphi для поиска значения DWORD в памяти указанного процесса.
Программа принимает два аргумента командной строки: идентификатор процесса и значение, которое нужно найти. Затем она открывает процесс, запрашивает его виртуальные регионы памяти и читает каждый регион в буфер. Если буфер содержит найденное значение, программа печатает адрес, где было найдено значение.
Разбивка кода:
Первая часть - объявление программы, включая имя, автора и информацию о правах авторства.
Клауза uses импортирует модули Windows и SysUtils, которые предоставляют функции для работы с процессами, памятью и строками.
Объявляются переменные: ProcessID, ProcessHandle, Mbi, Addr, Value, I, Buf, BytesRead.
Основная программа проверяет, есть ли хотя бы два аргумента командной строки (идентификатор процесса и значение для поиска). Если нет, она печатает сообщение об ошибке и заканчивает работу.
Затем программа конвертирует первый аргумент командной строки в целое число и хранит его в ProcessID. Второй аргумент также конвертируется в целое число и хранится в Value.
Программа открывает указанный процесс с помощью функции OpenProcess, с правами на запрос информации и чтение виртуальной памяти.
Если handle процесса является действительным, программа вступает в цикл, запрашивающий каждый регион виртуальной памяти процесса с помощью функции VirtualQueryEx.
Для каждого региона она проверяет, является ли регион зарезервированным (т.е., его страницы выделены) и не защищенным (т.е., он не является частью стека). Если это так, она выделяет буфер для хранения всего региона и читает регион в буфер с помощью ReadProcessMemory.
Затем она поискает значение в буфере, перебирая каждый байт и проверяя, соответствует ли он найденному значению.
Если значение было найдено, программа печатает адрес, где оно было обнаружено.
Наконец, программа закрывает handle процесса.
Вторая программа (someprog) - это простой демонстрационный программный продукт, который устанавливает переменную в конкретное значение (12345) и печатает ее на консоль.
В целом, этот код демонстрирует, как найти конкретное значение в памяти запущенного процесса с помощью языка Delphi.
Статья описывает программу для поиска шпионских программ в определенных процессах на основе уникальных последовательностей байт или слов, а также демонстрирует пример ее использования.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.