Самоизменяющийся экзешник

Тема в разделе "WASM.WIN32", создана пользователем ivandry, 10 апр 2011.

  1. ivandry

    ivandry New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2011
    Сообщения:
    7
    Подскажите пожалуста, как сделать, переменную в экзешнике, которая при выключении запоминает свое последнее состояние и при новом запуске программы работает уже с этим значением, а не тем , которое было в момент компиляции.
    Если можно, закиньте простенький примерчик на масме:)
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Невозможно, переменные в RAM.
     
  3. ivandry

    ivandry New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2011
    Сообщения:
    7
    Возможно, если прога поменяет переменную в .exe на HDD
    Предполагаю, что прога может загрузиться в RAM, потом закрыть или как-то уничтожить хэндл файла, с которого запускалась или что-то там еще, что удерживает файл от изменения при его использовании другими процессами, а потом спокойненько открыть свой же файл, найти там переменную,поменять и сохранить :)
    Собственно , надо знать api , которая разблокирует файл для изменения, если такая конечно есть и так чтоб сама выполняющаяся прога при этом не навернулась)))
    Иначе придется придумывать извращения типа:"прога копирует свой файл под другим названием, изменяет его, запускает, закрывает себя, "новая" прога (уже с измененной переменной) опять копирует себя под именем, которое было раньше, запускает уже тот процесс, закрывает себя, а уже новый процесс удаляет наш временный новый")))))))
     
  4. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    ivandry
    так чо тогда вопросы задавать то?
    *запакуешь протом и некуда уже писать на HDD.)
     
  5. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Записывайте значение переменной в реестр.
     
  6. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    ivandry
    Примерно так и придётся.
     
  7. ivandry

    ivandry New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2011
    Сообщения:
    7
    Не то, надо чтоб экзешник сам себя разблокировал и подправил. И это можно сделать, потому что анлокер вполне спокойно перемещает экзешник работающей проги и прога при этом продолжает работать как ни в чем не бывало. Потому и обратился за помощью к ассемблерщикам, а не школьникам-паскальщикам.
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    ivandry
    В пределах логического тома перемещайте сколько угодно без "разблокирования" с помощью MoveFile.
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    самого себя не так легко удалить/изменить в рантайме... самое простое - переименовать текущий файл, а на его имя записать измененный... или работать со своими ресурсами...
     
  10. ivandry

    ivandry New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2011
    Сообщения:
    7
    Спасиба
    А наводка на апи или ссылочку на примерчик для новичков можна?
     
  11. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    ivandry
    не проще конфиг файл прикрутить из которого читаются/пишуться настройки ???
     
  12. 0dh

    0dh New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2011
    Сообщения:
    31
    проинициализируй переменную файлового смещения одним dword-овым значением 12345678h, переменную счётчика другим значением 09ABCDEFh, после компиляции найди получившееся файловое смещение счётчика (09ABCDEFh) и подставь его значение вместо 12345678h => PROFIT
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    MoveFile, CreateFile, ReadFile, WriteFile, CloseHandle...
     
  14. ivandry

    ivandry New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2011
    Сообщения:
    7
    Спасиба
    А насчет ресурсов. Может, можна как-то задать там что-то, а потом при выполнении это нечто изменить, чтоб так насовсем и осталось?
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    BeginUpdateResource, UpdateResource, EndUpdateResource
    http://msdn.microsoft.com/en-us/library/ff468902(v=vs.85).aspx
     
  16. ivandry

    ivandry New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2011
    Сообщения:
    7
    Спасиба. Вариант BeginUpdateResource, UpdateResource, EndUpdateResource походу сработает)))
     
  17. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    об анлокере, насколько я помню, он делает это через перечисление _SYSTEM_HANDLE и штурмом овнершипа(не нашёл подходящего русского слова), как и ProcessExplorer, по крайней мере до недавних пор.
     
  18. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    Видел даже (стартует первый процесс, читает из ресурсов, записывает, запускает второй, закрывается; второй меняет файл)
    Да реализуемо, но
    • Programm Files - доступ с правами администратора на запись,
    • нужны будут дополнительные права для работы программы,
    • есть возможность повредить код и получить непредсказуемые результаты,
    • трудно будет отличить изменения от повреждений,
    • БСОД если будет некорректность в драйвере (вопрос будет ли запускаться)

    а В общем нестабильная, небезопасная и подозрительная штука.
    Серьезные разработчики подписывают свои программы и препятствуют изменению программы.
     
  19. ivandry

    ivandry New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2011
    Сообщения:
    7
    Классная у вас подпись))
     
  20. Praetor11

    Praetor11 New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2009
    Сообщения:
    80
    Вооо...этот вопрос меня всегда интересовал. Ведь реально столько раз есть необходимость в качестве настроек программы юзать одно или два значения типа int. При этом можно даже найти сами переменные в файле образа и конкретно их изменить. Я кажется создавал тут уже тему с таким вопросом. Правда я тогда не думал о ресурсах, желание было получить в процессе дескриптор файла-образа с правом на запись...