Главная страница
    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.008 c
14-27722
Карлсон
2003-09-20 18:45
2003.10.09
случайные и псевдослучайные числа.


3-27406
RDen
2003-09-18 12:17
2003.10.09
BDE выдаёт ошибку - At end of table


1-27506
Izyum
2003-09-26 14:19
2003.10.09
Самомодификация exe-файла


1-27431
BlackSun
2003-09-28 15:01
2003.10.09
Размер формы


3-27345
Sliften1
2003-09-12 23:28
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский