информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 700 с лишним git-серверов пострадало... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Может ли прога под вынь2к модифицировать себя? 08.04.02 07:33  Число просмотров: 1028
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
> Может ли прога под вынь2к и ХР модифицировать собственный
> код с использованием только штатных документированных
> возможностей АПИ?

Надо определится, что есть "модифицировать себя".
Изменять свой собственный код в памяти процесса, в котором она запущена, или в файле на диске, из которого она запущена?

Память процесса - определись, по какому адресу и размер памяти, который собираешься модифицировать.
Вызываешь функцию API VirtualProtect и ставишь на страницы памяти тип доступа что-то вроде PAGE_EXECUTE_READWRITE.
Правишь всё что надо.
Вызываешь функцию FlushInstructionCache на всякий случай.
Всё просто…

Файл процесса - переименовываешь файл, из которого запущена твоя прога.
копируешь содержимое этого файла в старое имя.
Правишь ентот файл как нужно.
Запускаешь новый процесс из этого правленного файла.
Завершаешь старый процесс.
Ещё проще…
<programming>
[Win32] Может ли прога под вынь2к модифицировать себя? 08.04.02 04:38  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
Может ли прога под вынь2к и ХР модифицировать собственный код с использованием только штатных документированных возможностей АПИ?
[Win32] Может ли прога под вынь2к модифицировать себя? 08.04.02 07:33  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
> Может ли прога под вынь2к и ХР модифицировать собственный
> код с использованием только штатных документированных
> возможностей АПИ?

Надо определится, что есть "модифицировать себя".
Изменять свой собственный код в памяти процесса, в котором она запущена, или в файле на диске, из которого она запущена?

Память процесса - определись, по какому адресу и размер памяти, который собираешься модифицировать.
Вызываешь функцию API VirtualProtect и ставишь на страницы памяти тип доступа что-то вроде PAGE_EXECUTE_READWRITE.
Правишь всё что надо.
Вызываешь функцию FlushInstructionCache на всякий случай.
Всё просто…

Файл процесса - переименовываешь файл, из которого запущена твоя прога.
копируешь содержимое этого файла в старое имя.
Правишь ентот файл как нужно.
Запускаешь новый процесс из этого правленного файла.
Завершаешь старый процесс.
Ещё проще…
[Win32] И у меня вопрос есть. 08.04.02 22:48  
Автор: Biasha <Бяша> Статус: Member
Отредактировано 08.04.02 22:55  Количество правок: 2
<"чистая" ссылка>
> Надо определится, что есть "модифицировать себя".
> Изменять свой собственный код в памяти процесса, в котором
> она запущена, или в файле на диске, из которого она
> запущена?
>
> Память процесса - определись, по какому адресу и размер
> Всё просто…
>
> Файл процесса - переименовываешь файл, из которого запущена
> твоя прога.
А так, чтоб сразу, не переименовывая и не перезапуская?

Насколько я помню, этот самый, исполняемый файл, используется, как файл подкачки, для страниц с кодом и инициализированными данными. Но только эти страницы помечены как копируемые при записи - когда в них пишешь, файлом подкачки становится стандартный файл подкачки.

Я ничего не перепутал?

Если нет: как можно снять копирование при записи и т.д., так, чтоб все изменения попадали прямо в исполняемый файл на диске?
Я попробовал, но что-то у меня сходу не вышло, да ещё и рихтеровская утилита для просмотра атрибутов страниц виснуть начала после такого...

Может так кто уже делал? Дайте пример?

P.S.
Драйверы ядра и 9х не предлагать :)
[Win32] VirtualProtect там работает? Понял! Спасибо 08.04.02 08:33  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach