При запуске exe проецируется в память. По умолчанию глобальные
переменные находятся в страницах помеченных WRITECOPY. Если этот флаг
снять, то изменение переменных будет сохраняться в exe файле. Так?
Собственно как снять WRITECOPY?
--
Всего хорошего, Слава. (http://slava.users.otts.ru)
-= Срок службы унитаза зависит от того, садитесь ли вы на него с
разбега или нет. =-
Slava Antonov wrote: > > H e l l o, A l l ! > > Если я правильно понимаю то: > > При запуске exe проецируется в память. По умолчанию глобальные > переменные находятся в страницах помеченных WRITECOPY. Если этот флаг > снять, то изменение переменных будет сохраняться в exe файле. Так?
Нет.
int x=10;
int main(int argc, char* argv[])
{
DWORD dwOld;
VirtualProtect(&x,4,PAGE_READWRITE,&dwOld);
}
и после этого dwOld == 4, т.е. PAGE_READWRITE.
--
С наилучшими пожеланиями
Дворкин Павел
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Привет!
PD>Slava Antonov wrote: >> >> H e l l o, A l l ! >> >> Если я правильно понимаю то: >> >> При запуске exe проецируется в память. По умолчанию глобальные >> переменные находятся в страницах помеченных WRITECOPY. Если этот флаг >> снять, то изменение переменных будет сохраняться в exe файле. Так?
PD>Нет.
PD>int x=10;
PD>int main(int argc, char* argv[]) PD>{ PD> DWORD dwOld; PD> VirtualProtect(&x,4,PAGE_READWRITE,&dwOld); PD>}
PD>и после этого dwOld == 4, т.е. PAGE_READWRITE. PD>-- PD>С наилучшими пожеланиями PD> Дворкин Павел
Сори если не в тему
Если не секрет а зачем? Это что типа эмуляция разделяемой памяти?
И собственно при модификации атрибутов страницы, ну будет случаем создана ее копия (если процесса два, и один модифицирует атрибуты)
H e l l o, Pavel!
>> При запуске exe проецируется в память. По умолчанию глобальные >> переменные находятся в страницах помеченных WRITECOPY. Если этот >> флаг снять, то изменение переменных будет сохраняться в exe файле. >> Так? PD> Нет.
А константы?
Правда получить адрес константы у меня не получилось.
PD> int x=10;
PD> int main(int argc, char* argv[]) PD> { PD> DWORD dwOld; PD> VirtualProtect(&x,4,PAGE_READWRITE,&dwOld); PD> } PD> и после этого dwOld == 4, т.е. PAGE_READWRITE.
Когда я делал VirtualQuery, то там кроме Protec, возвращается
AllocationProtect, и оно равно PAGE_EXECUTE_WRITECOPY.
Или это уже не имеет значения?
--
Всего хорошего, Слава. (http://slava.users.otts.ru)
-= Кинулся ясный сокол головой вниз, и стал полным идиотом. =-
Slava Antonov wrote: > > А константы? > Правда получить адрес константы у меня не получилось.
const int c = 10;
const int * p = &c;
> > Когда я делал VirtualQuery, то там кроме Protec, возвращается > AllocationProtect, и оно равно PAGE_EXECUTE_WRITECOPY. > Или это уже не имеет значения?
AllocationProtect
Memory protection when the region was initially allocated.
Так что изначально у этого региона было WRITECOPY, но уже поменяли...
Здравствуйте, Slava Antonov, Вы писали:
SA>Остается еще попробовать динамически изменять код какой-нибудь SA>функции, но он вроде тоже не сохраняется при выходе.
Вот, скажи мне, Слава: оно тебе надо?
Т.е., изобретаем средства предохранения и пренебрегаем профилактикой вирусных заболеваний?
Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe.
О чем писал Gary Nebbet (ссылку на него как-то приводил Alex Fedotov в треде по поводу самоунижчтожения).
Мне как-то Serg Svetlov прислал образчик самомодифицируемого exe, построенного на методике Gary, если хочешь, могу дать его (Serg) mail.
Со своей стороны, я тоже могу кое-что предложить.
Скажем, модифицируем dll:
1. Модифицируемая библиотека запускает процесс, ожидающий запрос на модификацию.
2. Модифицируемая библиотека отправляет процессу запрос на свою модификацию.
3. Процесс ожидает выгрузки библиотеки, модифицирует ее ресурсы и завершается.
Чем все это может быть лучше сохранения в файл-реестр-БД мне неизвестно.
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Здравствуйте, Slava Antonov, Вы писали:
LT> Вот, скажи мне, Слава: оно тебе надо? LT> Т.е., изобретаем средства предохранения и пренебрегаем профилактикой вирусных заболеваний?
Славе интересно, почему бы и не попробовать. Я тоже попробовал в свое время...
LT> Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe. LT> О чем писал Gary Nebbet (ссылку на него как-то приводил Alex Fedotov в треде по поводу самоунижчтожения).
Возможно Gary помог бы мне, но...
Так вот, эксперимент сводился к следующему (давно было, точно не вспомню).
Появилась у меня идея изменять ресурсы "на лету", и изменения сохранять туда же, в ехе. Сделал все как полагается, получил адрес требуемого ресурса в виртуальной памяти (страницы PAGE_READONLY), изменил атрибуты страницы, заменил пару байтиков, закоммитил память. Все функции выполнились успешно! Победа, подумал, но ехе остался нетронутым. Тут я осознал, что еще мало чего понимаю в этом, и ушел спать...
LT> Чем все это может быть лучше сохранения в файл-реестр-БД мне неизвестно.
Тем, что данные сохраняются, и процесс не оставляет "следы" своей работы в реестре, ini и т.д.
LT>-- LT>С уважением, LVT
Здравствуйте, maximilian, Вы писали:
LT>> Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe. LT>> О чем писал Gary Nebbet (ссылку на него как-то приводил Alex Fedotov в треде по поводу самоунижчтожения).
M>Возможно Gary помог бы мне, но...
LT>> Чем все это может быть лучше сохранения в файл-реестр-БД мне неизвестно.
M>Тем, что данные сохраняются, и процесс не оставляет "следы" своей работы в реестре, ini и т.д.
LT>> Т.е., изобретаем средства предохранения и пренебрегаем профилактикой вирусных заболеваний?
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>Здравствуйте, maximilian, Вы писали:
LT>>> Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe. LT>>> О чем писал Gary Nebbet (ссылку на него как-то приводил Alex Fedotov в треде по поводу самоунижчтожения).
M>>Возможно Gary помог бы мне, но...
LT> Ну, а чего поиск + google не работает? LT> здесь
Спасибо за "здесь"
LT>>> Чем все это может быть лучше сохранения в файл-реестр-БД мне неизвестно.
M>>Тем, что данные сохраняются, и процесс не оставляет "следы" своей работы в реестре, ini и т.д.
LT>>> Т.е., изобретаем средства предохранения и пренебрегаем профилактикой вирусных заболеваний?
Изменения могут сохраняться в exe файле. Это можно сделать с помощью дописывания каких-либо данных в конец файла. Эти данные екзешник может впоследствии считывать сам из себя. Для их записи, однако, необходим еще один процесс, которому первый на время передает "бразды правления", а тот, в свою очередь, его модифицирует и запускает заново с нужными параметрами, как здесь раньше уже и отмечали по поводу dll'ки. Нехитрая процедура, не так ли? Только вот зачем еще один екзешник создавать, если можно просто писать данные в файл или реестр?
Здравствуйте, HAND, Вы писали:
HAN>Для их записи, однако, необходим еще один процесс, которому первый на время передает "бразды правления", а тот, в свою очередь, его модифицирует и запускает заново с нужными параметрами, как здесь раньше уже и отмечали по поводу dll'ки. Нехитрая процедура, не так ли?
Речь шла об одном процессе (править самого себя). Для одного процесса возможности (документированной) нет.
H e l l o, Leonid!
SA>> Остается еще попробовать динамически изменять код какой-нибудь SA>> функции, но он вроде тоже не сохраняется при выходе.
LT> Вот, скажи мне, Слава: оно тебе надо?
Во-первых, интересно как оно устроено (работа с памятью и т.п.)
Во-вторых, пытаюсь понять и закрепить знания полученные на лекциях по
СиППО. Но похоже, что там нам либо сказали неправду, либо не всю
правду.
LT> Т.е., изобретаем средства предохранения и пренебрегаем LT> профилактикой вирусных заболеваний?
Я не понял смысла высказывания. Объясни на пальцах или еще на чем
полегче.
LT> Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe.
Не, с dll уже не так интересно.
LT> О чем писал Gary Nebbet (ссылку на него как-то приводил Alex LT> Fedotov в треде по поводу самоунижчтожения).
Посмотрю как-нибудь, что он там нацарапал.
LT> Мне как-то Serg Svetlov прислал образчик самомодифицируемого LT> exe, построенного на методике Gary, если хочешь, могу дать его LT> (Serg) mail.
А исходничка не осталось?
Если нет, то тогда пошли меня на e-mail.
LT> Чем все это может быть лучше сохранения в файл-реестр-БД мне LT> неизвестно.
Хочу чтобы прога считала сколько раз ее запускали, для ну очень
простенькой защиты.
ЗЫ: Любителям нового года и снега посвящается: Это и это
--
Всего хорошего, Слава. (http://slava.users.otts.ru)
-= Больше всех следят за своими фигурами шахматистки. =-
Здравствуйте, Slava Antonov, Вы писали:
SA>СиППО. Но похоже, что там нам либо сказали неправду, либо не всю SA>правду.
Видимо так. Поэтому, лучше почитать Рихтера, Питрека (о новом формате PE) в
прошлогоднем MSDN Magazine (есть русская редакция), Соломона-Руссиновича и т.п.
LT>> Т.е., изобретаем средства предохранения и пренебрегаем LT>> профилактикой вирусных заболеваний?
SA>Я не понял смысла высказывания. Объясни на пальцах или еще на чем SA>полегче.
А про защиту я угадал , а смысл остального в том, что многие АВП терпеть не могут модификаций экзешников.
LT>> О чем писал Gary Nebbet (ссылку на него как-то приводил Alex
SA>Посмотрю как-нибудь, что он там нацарапал.
Посмотри, посмотри. Он, кстати, и книгу написал про native API
LT>> Мне как-то Serg Svetlov прислал образчик самомодифицируемого LT>> exe, построенного на методике Gary, если хочешь, могу дать его LT>> (Serg) mail.
SA>А исходничка не осталось?
Остался где-то, но я не помню на каких условиях он его показывал.
SA>Если нет, то тогда пошли меня на e-mail.