Сохрание значений переменных
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 23.12.03 00:50
Оценка:
H e l l o, A l l !

Если я правильно понимаю то:

При запуске exe проецируется в память. По умолчанию глобальные
переменные находятся в страницах помеченных WRITECOPY. Если этот флаг
снять, то изменение переменных будет сохраняться в exe файле. Так?

Собственно как снять WRITECOPY?

--
Всего хорошего, Слава. (http://slava.users.otts.ru)
-= Срок службы унитаза зависит от того, садитесь ли вы на него с
разбега или нет. =-
Posted via RSDN NNTP Server 1.8 beta
Re: Сохрание значений переменных
От: Pavel Dvorkin Россия  
Дата: 23.12.03 06:43
Оценка:
Привет!

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.
--
С наилучшими пожеланиями
Дворкин Павел
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re[2]: Сохрание значений переменных
От: Carc Россия http://www.amlpages.com/home.php
Дата: 23.12.03 19:57
Оценка:
Здравствуйте, 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> Дворкин Павел
Сори если не в тему
Если не секрет а зачем? Это что типа эмуляция разделяемой памяти?
И собственно при модификации атрибутов страницы, ну будет случаем создана ее копия (если процесса два, и один модифицирует атрибуты)
Aml Pages Home
Re[2]: Сохрание значений переменных
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 24.12.03 00:29
Оценка:
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)
-= Кинулся ясный сокол головой вниз, и стал полным идиотом. =-
Posted via RSDN NNTP Server 1.8 beta
Re[3]: Сохрание значений переменных
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 24.12.03 01:36
Оценка:
H e l l o, Carc!

C> Сори если не в тему

C> Если не секрет а зачем?

Хочу чтобы изменения сохранялись в самом exe причем автоматом.

--
Всего хорошего, Слава. (http://slava.users.otts.ru)
-= "А сработает ли Фанта?" — подумала Анна Каренина. =-
Posted via RSDN NNTP Server 1.8 beta
Re[3]: Сохрание значений переменных
От: Pavel Dvorkin Россия  
Дата: 24.12.03 06:23
Оценка:
Привет!

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, но уже поменяли...


--
С наилучшими пожеланиями
Дворкин Павел
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Re[2]: Сохрание значений переменных
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 25.12.03 01:14
Оценка:
H e l l o, Pavel!

Сегодня утром еще немного повозился с константами и понял что с ними
вообще не получится.

Остается еще попробовать динамически изменять код какой-нибудь
функции, но он вроде тоже не сохраняется при выходе.

--
Всего хорошего, Слава. (http://slava.users.otts.ru)
-= "Вкалываю с утра до вечера!" — жаловался наркоман. =-
Posted via RSDN NNTP Server 1.8 beta
Re[4]: Сохрание значений переменных
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 25.12.03 04:01
Оценка:
H e l l o, Pavel!

>> А константы?

>> Правда получить адрес константы у меня не получилось.

PD> const int c = 10;

PD> const int * p = &c;

Я использую Delphi, а там адрес мне получить не удалось.

--
Всего хорошего, Слава. (http://slava.users.otts.ru)
-= Windows 98 испугалась и наложила в своп. =-
Posted via RSDN NNTP Server 1.8 beta
Re[3]: Сохрание значений переменных
От: Leonid Troyanovsky  
Дата: 25.12.03 07:37
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

SA>Остается еще попробовать динамически изменять код какой-нибудь

SA>функции, но он вроде тоже не сохраняется при выходе.

Вот, скажи мне, Слава: оно тебе надо?
Т.е., изобретаем средства предохранения и пренебрегаем профилактикой вирусных заболеваний?

Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe.
О чем писал Gary Nebbet (ссылку на него как-то приводил Alex Fedotov в треде по поводу самоунижчтожения).

Мне как-то Serg Svetlov прислал образчик самомодифицируемого exe, построенного на методике Gary, если хочешь, могу дать его (Serg) mail.

Со своей стороны, я тоже могу кое-что предложить.
Скажем, модифицируем dll:

1. Модифицируемая библиотека запускает процесс, ожидающий запрос на модификацию.
2. Модифицируемая библиотека отправляет процессу запрос на свою модификацию.
3. Процесс ожидает выгрузки библиотеки, модифицирует ее ресурсы и завершается.

Чем все это может быть лучше сохранения в файл-реестр-БД мне неизвестно.

--
С уважением, LVT
--
С уважением, LVT
Re[4]: Сохрание значений переменных
От: maximilian Украина  
Дата: 25.12.03 08:08
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT>Здравствуйте, Slava Antonov, Вы писали:


LT> Вот, скажи мне, Слава: оно тебе надо?

LT> Т.е., изобретаем средства предохранения и пренебрегаем профилактикой вирусных заболеваний?

Славе интересно, почему бы и не попробовать. Я тоже попробовал в свое время...

LT> Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe.

LT> О чем писал Gary Nebbet (ссылку на него как-то приводил Alex Fedotov в треде по поводу самоунижчтожения).

Возможно Gary помог бы мне, но...

Так вот, эксперимент сводился к следующему (давно было, точно не вспомню).
Появилась у меня идея изменять ресурсы "на лету", и изменения сохранять туда же, в ехе. Сделал все как полагается, получил адрес требуемого ресурса в виртуальной памяти (страницы PAGE_READONLY), изменил атрибуты страницы, заменил пару байтиков, закоммитил память. Все функции выполнились успешно! Победа, подумал, но ехе остался нетронутым. Тут я осознал, что еще мало чего понимаю в этом, и ушел спать...

LT> Чем все это может быть лучше сохранения в файл-реестр-БД мне неизвестно.


Тем, что данные сохраняются, и процесс не оставляет "следы" своей работы в реестре, ini и т.д.

LT>--

LT>С уважением, LVT
Re[5]: Сохрание значений переменных
От: Leonid Troyanovsky  
Дата: 25.12.03 08:51
Оценка:
Здравствуйте, maximilian, Вы писали:

LT>> Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe.

LT>> О чем писал Gary Nebbet (ссылку на него как-то приводил Alex Fedotov в треде по поводу самоунижчтожения).

M>Возможно Gary помог бы мне, но...


Ну, а чего поиск + google не работает?
здесь
Автор: Alex Fedotov
Дата: 14.02.02



LT>> Чем все это может быть лучше сохранения в файл-реестр-БД мне неизвестно.


M>Тем, что данные сохраняются, и процесс не оставляет "следы" своей работы в реестре, ini и т.д.


LT>> Т.е., изобретаем средства предохранения и пренебрегаем профилактикой вирусных заболеваний?


--
С уважением, LVT
--
С уважением, LVT
Re[6]: Сохрание значений переменных
От: maximilian Украина  
Дата: 25.12.03 09:22
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT>Здравствуйте, maximilian, Вы писали:


LT>>> Самомодифицирующиеся PE пока возможны, но, скорее dll, чем exe.

LT>>> О чем писал Gary Nebbet (ссылку на него как-то приводил Alex Fedotov в треде по поводу самоунижчтожения).

M>>Возможно Gary помог бы мне, но...


LT> Ну, а чего поиск + google не работает?

LT> здесь
Автор: Alex Fedotov
Дата: 14.02.02


Спасибо за "здесь"

LT>>> Чем все это может быть лучше сохранения в файл-реестр-БД мне неизвестно.


M>>Тем, что данные сохраняются, и процесс не оставляет "следы" своей работы в реестре, ini и т.д.


LT>>> Т.е., изобретаем средства предохранения и пренебрегаем профилактикой вирусных заболеваний?


Точнее, готовим плодородную почву вирусным заболеваниям

LT>--

LT>С уважением, LVT
Re[4]: Сохрание значений переменных
От: paul_shmakov Россия  
Дата: 26.12.03 07:55
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

C>> Если не секрет а зачем?


SA>Хочу чтобы изменения сохранялись в самом exe причем автоматом.


Не получится. Нет такой возможности (по крайней мере, документированной).
... << RSDN@Home 1.1 beta 2 >>
Paul Shmakov
Re[5]: Сохрание значений переменных
От: HAND Украина  
Дата: 26.12.03 08:08
Оценка:
Изменения могут сохраняться в exe файле. Это можно сделать с помощью дописывания каких-либо данных в конец файла. Эти данные екзешник может впоследствии считывать сам из себя. Для их записи, однако, необходим еще один процесс, которому первый на время передает "бразды правления", а тот, в свою очередь, его модифицирует и запускает заново с нужными параметрами, как здесь раньше уже и отмечали по поводу dll'ки. Нехитрая процедура, не так ли? Только вот зачем еще один екзешник создавать, если можно просто писать данные в файл или реестр?
Re[6]: Сохрание значений переменных
От: paul_shmakov Россия  
Дата: 26.12.03 09:34
Оценка:
Здравствуйте, HAND, Вы писали:

HAN>Для их записи, однако, необходим еще один процесс, которому первый на время передает "бразды правления", а тот, в свою очередь, его модифицирует и запускает заново с нужными параметрами, как здесь раньше уже и отмечали по поводу dll'ки. Нехитрая процедура, не так ли?


Речь шла об одном процессе (править самого себя). Для одного процесса возможности (документированной) нет.
... << RSDN@Home 1.1 beta 2 >>
Paul Shmakov
Re[4]: Сохрание значений переменных
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 26.12.03 10:45
Оценка:
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)
-= Больше всех следят за своими фигурами шахматистки. =-
Posted via RSDN NNTP Server 1.8 beta
Re[7]: Сохрание значений переменных
От: paul_shmakov Россия  
Дата: 26.12.03 11:17
Оценка:
Здравствуйте, paul_shmakov, Вы писали:

_> Речь шла об одном процессе (править самого себя). Для одного процесса возможности (документированной) нет.


Точнее есть, но уж очень ограниченная (смотри ветку про self-delete)
... << RSDN@Home 1.1 beta 2 >>
Paul Shmakov
Re[5]: Сохрание значений переменных
От: Leonid Troyanovsky  
Дата: 26.12.03 12:20
Оценка:
Здравствуйте, 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.


Послал тебе e-mail.

--
С уважением, LVT
--
С уважением, LVT
Re[4]: Сохрание значений переменных
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 28.12.03 05:11
Оценка:
H e l l o, Slava!

Вот нашел в мсдн про PE — "Peering Inside the PE: A Tour of the Win32
Executable File Format"

--
Всего хорошего, Слава. (http://slava.users.otts.ru)
-= Вот где собака порылась. =-
Posted via RSDN NNTP Server 1.8 beta
Re[5]: Сохрание значений переменных
От: Leonid Troyanovsky  
Дата: 29.12.03 10:26
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

SA>Вот нашел в мсдн про PE — "Peering Inside the PE: A Tour of the Win32

SA>Executable File Format"

У Питрека вышла новая статья по этому поводу.
Поищи в MSDN Journal, IMHO, за прошлый год.
--
С уважением, LVT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.