![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 02.06.2016
Сообщений: 7
|
![]()
Здравствуйте форумчане. В общем я не разбираюсь в ассемблере, программирую на высокоуровневых яп. Но тут попросили помочь, да и самому стало интересно написать программу.
Вот условия задачи: Написать программу, которая модифицирует произвольный *.com файл таким образом, что при его запуске проводилась проверка пароля при входе. В случае несоответствия пароля производится аварийный выход из программы. Имя модифицируемого файла и пароль желательно вводить в командной строке.Нашел код на ассемблере, где нужно ввести пароль за несколько попыток. Но не понимаю само условие: "модифицирует произвольный *.com файл". Компилятор же сам компилируется комовский файл. Извините если запутано спрашиваю, в общем помогите пожалуйста) |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]()
Почитайте описание и про структуру com файлов - все стане понятнее
|
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Код:
Ну, по другому говоря, Вам надо использовать "вирусные технологии". Можно дописать свой код в конец COM файла, изменить первые байты файла на безусловный переход на свой добавленный код, а в конце своего кода выполнить переход на оригинальное тело программы. Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Производишь манипуляции с Any.com файлом. Меняешь первые 3 байта на jmp со ссылкой на конец файла. К концу этого файла прибавляешь свой TestPass.com, для проверки пароля. После восстанавливаешь первые 3 байта и выполешь уже основной код.
Читать Аппель. Ассемблер. Раздел про загрузку и исполнение COM файлов.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#5 |
Регистрация: 02.06.2016
Сообщений: 7
|
![]()
Если не сложно можете скинуть информацию, где это можно прочитать. Ну или пример кода. И в чем это делать, есть ли среда разработки или что-то типо того?
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
Не понятная задачка..
Если у юзера есть доступ к файлу, то он может просто запустить его без никакого пароля. Если доступа к файлу нет, то зачем химичить с его первыми байтами? Просто проверяй пароль со-своей облочки, и если пароль не утка, то идёшь на исполнение файла. В противном случае, обламываешь юзвера.
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]()
R71MT, вы о чем? задача как два пальца: есть com файл, надо чтобы программа изменила его так, чтобы при запуске этого com спрашивался пароль. Какой доступ юзера?
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
R71MT, в далекие годы DOS были даже программы для вакцинации файлов.
Это когда в каждый исполняемый файл (и COM и EXE) подвешивался кусок исполняемого кода, который при запуске проверял, что размер/контр.сумма файла не изменились. Если изменились - не давал программе запуститься. Так и тут. Сначала некто (администратор) обрабатывает COM файл, ставит пароль на его запуск. А уже потом пользователь, когда пытается запустить COM файл получает предложение ввести пароль. И, если неправильно вводит, программа не запускается! p.s. понятно, что это с помощью дизассемблера отламывается достаточно быстро. Хотя, если содержимое исходного файла шифрануть вводимым паролем, то и не отламывается! ![]() Но, в любом случае, задача то учебная! |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
Так он про отдельно взятый файл что-ли?
Я думал нужно организовать это дело из оболочки, для всех комок в дире.
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 02.06.2016
Сообщений: 7
|
![]()
Если задача как два пальца, напишите пожалуйста как сделать. Я тут с выводом простого сообщения парюсь, а чтобы еще подвесить еще кусок для проверки вообще что-то анреал)
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Десятично-двоичный преобразователь (хрестоматийная задача любой ЭВМ) | Sasha_Smirnov | Microsoft Office Word | 13 | 06.10.2013 11:01 |
Архитектура ЭВМ | Xronikov | Помощь студентам | 8 | 11.06.2012 09:36 |
задача на эвм | nata-107 | Помощь студентам | 0 | 15.05.2012 17:06 |
Синтез логических узлов ЭВМ (логические основы ЭВМ) | Одинокая Волчица | Фриланс | 7 | 26.04.2011 06:50 |