purebasic.info

PureBasic forum
Текущее время: Ср окт 17, 2018 11:03 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Ср авг 01, 2018 6:14 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Здравствуйте, подскажите, пожалуйста, как добиться следующего результата:

1. Скомпилированная программа при запуске считывает данные из собственного ехе-файла.
2. Меняет их в процессе работы.
3. Записывает измененные данные в тот же ехе-файл.
Главная особенность в том, что работа должна вестись именно с ехе-фалом самой программы, а не с каким-либо сторонним файлом-ресурсов.

Выглядеть это должно примерно так:

Изображение

Подскажите, пожалуйста, как делается сей хитрый фокус ?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 01, 2018 7:20 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Сей фокус с записью делается так:
1. переименовать файл ( exe сам себя)
2. создать копию исполняемого файла с оригинальным именем.
3. пишите в копию что угодно.
4. запускаете новый фал с этими записями (если при записи его не испортили :( )
5. останавливаете свой файл и после удаляете с диска (это может сделать новый запущенный файл)

Чтение из файла не требует ни каких трюков.
Код писать лень, готового примера нет - сам такими глупостями не занимаюсь.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 01, 2018 8:41 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Сей фокус с записью делается так:

Сама суть в том и заключается, что нужно не создавать ещё один файл, а после нажатия кнопки, чтоб верхний текст изменился на нижний, и в таком виде именно этот ехе-файл самосохранился. При следующем запуске сверху должен быть уже измененный текст.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 01, 2018 9:18 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Трофимов Андрей2 писал(а):
Сама суть в том и заключается, что нужно не создавать ещё один файл, а после нажатия кнопки, чтоб верхний текст изменился на нижний, и в таком виде именно этот ехе-файл самосохранился.

:D
Ну тогда претензии к создателям Винды напишите. Они, такие негодяи, запретили вносить изменения в исполняемый файл во время его работы. Хорошо, хоть разрешили его переименовывать, и за то спасибо.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 01, 2018 10:28 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Они, такие негодяи, запретили вносить изменения в исполняемый файл во время его работы.

А вообще, это возможно ? Если возможно, то как ?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 01, 2018 10:46 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11299
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Можно попробовать проделать следующее: Найти хендл открытого исполняемого файла в винде. Сделать его дубликат и возможно тогда получится что-то записать.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 01, 2018 2:53 pm 
Не в сети
док

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 105
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Квиталли, а лет 10 назад, помню, ты что-то делал с чтением и изменением файла встроенной в ХР какой-то игры.
Типа, всегда выигрывать у винды, посмотреть ответ в игре, прочитать его в экзешнике.
Что-то такое у тебя было.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 01, 2018 4:04 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Дегтярёв писал(а):
Квиталли, а лет 10 назад, помню, ты что-то делал с чтением и изменением файла встроенной в ХР какой-то игры.
Типа, всегда выигрывать у винды, посмотреть ответ в игре, прочитать его в экзешнике.
Что-то такое у тебя было.

Нет, это было изменение информации в памяти процесса. А тут человеку надо на диске сделать замену, да ещё в работающим файле.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср авг 01, 2018 4:39 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 219
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Пункты репутации: 0
Цитата:
с чтением и изменением файла встроенной в ХР какой-то игры.
ага и игра называется минер, как выиграть за 3 секунды и потратить 5 минут на обдумывание :lol: /
нашел тута http://purebasic.info/phpBB3ex/viewtopi ... 3074#p7465.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 02, 2018 2:00 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Сей фокус с записью делается так:
1. переименовать файл ( exe сам себя)
2. создать копию исполняемого файла с оригинальным именем.
3. пишите в копию что угодно.
4. запускаете новый фал с этими записями (если при записи его не испортили :( )
5. останавливаете свой файл и после удаляете с диска (это может сделать новый запущенный файл)

Чтение из файла не требует ни каких трюков.
Код писать лень, готового примера нет - сам такими глупостями не занимаюсь.


Я извиняюсь, немного не так понял. Да, перезаписать exe действительно не сложно. Вопрос состоит в том, в какое место вписать данные, не повредив исполнение и работоспособность файла ?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 02, 2018 6:57 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 684
Благодарил (а): 75 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
А может экзешник не трогать? а сохранить в ини-файле индекс? они для этого и придуманы, так или иначе изменить работу программы после старта. Сохранение настроек это и есть модификация работы программы.
Зачем лезть в него? ради интереса или защиту пытаешься сделать?
Код:
1
2
3
4
5
6
7
8
9
 
проверяем что нужно сделать на сей раз
if index=1
 
else
 
endif
 
 



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 02, 2018 7:23 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Трофимов Андрей2 писал(а):
Вопрос состоит в том, в какое место вписать данные, не повредив исполнение и работоспособность файла ?

Самое простое в конец файла. Размер exe можно внести в виде константы в код. Обычно размер не меняется при незначительных изменениях в исходнике. Потом устанавливаешь указатель позиции FileSeek на это место и пиши-читай.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 02, 2018 11:36 am 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 219
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Пункты репутации: 0
Цитата:
в какое место вписать данные
Какие еще даные и главное зачем? Это екзешник, там есть блоки даных, иногда их можно прочитать как текст, но если и текст править то следует менять его байт в байт(только заменять, и нивкоем случае невставлять) иначе прога перестанеть быть прогой, а в вирусятину превратится :lol: . А насчет числовых даных, то нужно знать точно где они и за что отвечают. Большинство даных прямо неувидить, только когда прога розпакуется в памяти, както в ДОСе тренироваля, есть такм такая функция загрузить ехе файл и незапускать, и смотрел что далеко не одно и тоже что в файле ехе записано. В память может совсем записаться например килобайт, а прога иметь несколько сотен кило, вот и голову ломай почему так. Например расширение биоса IO.SYS и сама ДОСя MSDOS.SYS большая(в винде пустая мож несмотреть, надо загрузочную дискетку делать) но грузится только кажется 1 кБ и запускается, а чё дальше творится, самому Богу известно. Однажды транслировал загрузчик с дискетки, доходит до одного прерывания и дальше немог никак транслировать толи какието блокировки прерываний происходят толи проц отсекает таких любопытных как я, ну вобщемто я уже оказываля либо выброшеным из транслятора либо в затыке какомто и дальше ничего непроисходило, а хотелось посмотреть внутренности операции загрузчика. Однажды писал прогу на асемблере для чтения секторов с дискетки или винта, так намахался, и и итоге выдавало не все даные, кудато часть терялась, уже и прерывания блокировал и танци с бубном были вокруг коста, вот текст выдает имен файлов правильно и часть даных, причем все имена верно и даные, но точно не сектор 512 байт а гораздо поменьше например 300 байт, так и ничего ненашел. Если прерывание то даные какбудто вырезаные касками с этим поборолся запретом прерывания, но почему дальше неидет. кажется эта структура - Дескрипторы файлов
Как мы уже говорили, любой каталог содержит 32-байтовые элементы - дескрипторы, описывающие файлы и другие каталоги. Приведем формат дескриптора:Смещение Размер Содержимое
0 8 Имя файла или каталога, выровненное на левую границу и дополненное пробелами
8 3 Расширение имени файла, выровненное на левую границу и дополненное пробелами
11 1 Байт атрибутов файла
12 10 Зарезервировано
22 2 Время создания файла или время его последней модификации
24 2 Дата создания файла или дата его последней модификации
26 2 Номер первого кластера, распределенного файлу
28 4 Размер файла в байтах
часто на диске перед и после стоят ноли вот их прога начисто отказывалась читать, было это давно и ковырятся уже почти нереально да и зачем, да и дискетки отошил в Рай :D

_________________
искатель истины


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 02, 2018 1:44 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
balex1978 писал(а):
следует менять его байт в байт(только заменять, и нивкоем случае невставлять) иначе прога перестанеть быть прогой, а в вирусятину превратится

Если бы всё было так просто, то все бы вирусы писали. Это братец искусство, тут не каждый сможет.

Прямо даже стало самому интересно, сколько антивирусов среагируют на дописывание информации в конец исполняемого файла? В общем то реагируют малоизвестные антивирусы,
но они и на пустой файл примерно так же реагируют:

Baidu -> Win32.Trojan.WisdomEyes.16070401.9500.9971

Cylance -> Unsafe

Qihoo-360 -> HEUR/QVM05.1.E9D7.Malware.Gen

SentinelOne -> static engine - malicious

Symantec -> ML.Attribute.HighConfidence

Полный анализ

Настоящим антивирусам эта тема не интересна, да оно и понятно, чтение и запись в файл вроде не преступление.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт авг 02, 2018 3:49 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 219
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Пункты репутации: 0
Цитата:
вирусы писали. Это братец искусство, тут не каждый сможет
ну это для красного словца. Хотя твоя практика показала, наличие ТРОЯНА Win32.Trojan, пипец какойто :shock: я тупо ржал :lol:.
А чего собственно нереагировать, некая прога, лезет переписать екзешник, так действуют только вирусы, правда в конец бесполезно писать, нужно еще кусок вируса который это будет отискивать и выдирать с ексешки и запускать, бывало у меня такой вирусик залетел. Розмножил свой код по куче файлов один вирус, а основной сканировал винт на свое детище чтобы запустить, причем копий себя еще в злачных местах сделал, даже если удалял он из памяти как процес востанавливал, прям птица Феникс какаято :? , короче грохнул сразу процес и два места где они хранились как копися и запущеная прога, только тогда успокоился.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB