Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];

Вниз

Самомодификация exe-файла   Найти похожие ветки 

 
Izyum   (2003-09-26 14:19) [0]

Привет всем!
Задача такая: заставить exe-шник переписать часть кода в себе. Например, последним байтом в нем идет "1", при определенных условиях он должен затереть эту единичку нулем.


 
[lamer]Barmaglot   (2003-09-26 14:22) [1]

Создаешь второй файл в памяти, который начнет работать после завершения программы, после чего откроет файл exe породивший его программы и заменит 1 или 0


 
Izyum   (2003-09-26 14:34) [2]

Дам более конкретный пример: нужен счетчик запуска этого exe-файла, а по сему вариант, предложенный Barmaglotom, не подходит по той причине, что машина может повиснуть, юзер может нажать Reset - и счетчик не сработает. Нужен способ делать это сразу при запуске проги.


 
[lamer]Barmaglot   (2003-09-26 14:38) [3]

Во время работы программы переписать само себя нельзя.
Кстати чем не устраивает стандартный вариант сохранение данных о запуске - на диск, в реестр, в ini файл и т.д.?


 
Digitman   (2003-09-26 14:40) [4]

задача из разряда известных недокументированных трюков
причем устойчивая работа трюка не гарантирована

не проще ли пометить флаг-триггер не в EXE , а в DLL (в е ресурс) ? модификация ресурса вполне устойчива для NT-платформы и документирована


 
Izyum   (2003-09-26 15:01) [5]

В принципе, меня устраивают ВСЕ варианты хранения счетчика во внешних файлах (реестр, ini, dll, ...) Но вот захотелось все запихать в один файл. Где-то встречал описание работы упаковщика exe-файлов (в файле идет сначало код декомпрессора, а затем основной исполняемый код), го вот теперь не могу найти.

Можно было бы пойти таким путем: пишем небольшую прожку, задачей которой будет обеспечивать нужную функциональность. В конец этому файлу дописываем основной exe-шник. При старте полученого бутерброда, первая буудет вычленять код основной проги и создавать на диске файл, после чего его и запускать, а сама завершаться. Тогда второй прогой можно будет менять код первой. Файл второй проги можно создавать где-нибудь в укромном месте (v:\windows\temp), от глаз подальше, да еще и имя ему генерить случайным образом. А при старте "бутерброда", можно еще и хвосты подчищать от предыдущих запусков.

Может не совсем понятно, но... По свободе попробую реализовать такой алгоритм, если не обламает:-)


 
Reindeer Moss Eater   (2003-09-26 15:07) [6]

Баловство все это.
Достаточно иметь исходные версии самомодифицирующихся файлов что бы обойти всю эту премудрость.


 
panov   (2003-09-26 15:07) [7]

ни один из трюков не будет работать, если EXE-файл защищен системой от записи (Security)...


 
Anatoly Podgoretsky   (2003-09-26 15:09) [8]

Izyum © (26.09.03 15:01) [5]
Предмет пристального внимания для антивирусов.
Реестр не прибавляет тебе файлов


 
Izyum   (2003-09-26 15:58) [9]

Reindeer Moss Eater © (26.09.03 15:07) [6]

А я и не говорил, что это серьезный комерческий проект:-)
Иногда что-то делается просто так, ради удовольствия. Вот придумалась мне задачка - и сижу ее решаю. Если нет красивых и простых решений - это не значит, что их нет вообще.

Было время, когда никто (или почти никто) не мог и помыслить о том, что трояна можно засунуть в хинты к МП3, или отформатировать себе диски открыв какую-то web-страничку.

Не поймите меня привратно, вирей плодить в задачи себе я не записывал, просто сижу обдумываю [i]Anatoly Podgoretsky © (26.09.03 15:09) [8][/i], вот и пришло на ум сравнение с вирями.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.02 c
14-27687
Anatoly Podgoretsky
2003-09-04 21:54
2003.10.09
Хокку Пиво


14-27703
McSimm
2003-09-22 12:39
2003.10.09
Желание помочь сайту


14-27669
michael
2003-09-19 20:56
2003.10.09
C++ не могу понять почему верна такая запись int *p=&a;


3-27413
denis24
2003-09-17 17:29
2003.10.09
кодировка в ole db 4.0


4-27790
Vlad451
2003-08-04 16:38
2003.10.09
Как указатель мыши представить в виде песочных часов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский