Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2011, 22:18   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию низкоуровневое редактирование файла на харде

подскажите люди добрые, у меня такой вопрос:

есть файл 'c:/programm.exe' размер 120 kb (не суть важно)
84-й байт в этом файле имеет значение 'R' (допустим)
я не сомневаюсь, что это возможно,
подскажите как изменить значение этого байта на 'd' ?
причем это надо сделать на низком уровне,
путем редактирования самого харда...
а не через reset(file); (программирую на delphi)

как написать вставку ассемблера в код на делфи?
я не очень то шарю по ассемблеру, подскажите?

и еще такой вопрос:
я надеюсь ассемблеру насрать, на то что 'c:/programm.exe' используется?

дело в том что вставка на ассемблере и будет вставлена в эту программу,
а 84-й байт будет принадлежать куску ресурса, зашитого в прогу,
но который никак не используется, т.е. его изменение не повлияет на ход программы (я ведь прав?)

т.е. программа будет изменять сама себя,
на низком уровне =)

примерно представляя принцип работы харда и файловой системы,
думаю это будет выглядеть так:
программа как-то обращается к MFT и узнает как записан 'c:/programm.exe' на хард.
далее, зная порядковый номер нужного байта программа вычисляет ячейку харда,
в которой записан этот байт и изменяет значение ячейки на нужное.

вот только не знаю как это на практике реализовать...

Последний раз редактировалось xrob; 20.01.2011 в 22:23.
xrob вне форума Ответить с цитированием
Старый 20.01.2011, 22:27   #2
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Ну всего то навсего надо написать свой модуль для работы с NTFS, FAT32, ну и на всякий случай для FAT16 (а вдруг с флешки запустят?)
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 20.01.2011, 23:03   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

+драйвер ядра, а то мозгам от системы получите
+...
p51x вне форума Ответить с цитированием
Старый 20.01.2011, 23:13   #4
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

создал консольное приложение с кодом
writeln('bugoga');
открыл файл с прогой в WinHex, нашел 'bugoga'
изменил! =) сохранил, запускаю прогу - работает! и 'bugoga' изменился! =)
но! =(
при запущеной проге WinHex не смог сохранить изменения! =(
видать не очень то это низкоуровневое программирование?...


у меня вопрос.
как послать винду н***й?
а то жить мешает...

хотя с другой сороны, может это WinHex шибко самостоятельный?
проверяет используется файл или нет?

Последний раз редактировалось xrob; 20.01.2011 в 23:16.
xrob вне форума Ответить с цитированием
Старый 21.01.2011, 03:39   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
как послать винду н***й?
откажитесь от нее.
Цитата:
я надеюсь ассемблеру насрать, на то что 'c:/programm.exe' используется?
асм тут не причем, хватит из асма панацею делать.
Цитата:
хотя с другой сороны, может это WinHex шибко самостоятельный?
проверяет используется файл или нет?
нет, запущенное приложение можно открыть лишь для Read.

и вообще запущенное приложение нет смысла менять, ибо оно в оперативке находится, так что до перезапуска изменений не заметите.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.01.2011, 10:30   #6
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
+драйвер ядра, а то мозгам от системы получите
+...
Драйвер имхо не обязательно. Винда позволяет читать/писать сектора прямо на диск. Единственное в семере неплохо иметь админские права (хотя 99,9% и так сидит под админом, поэтому проблем возникнуть не должно, бггг). И так же в семере для прямой записи секторов применять известный трюк с затиркой MBR нулями и последующим пере-открытием диска. Все просто, бггг.

Афтору не советую писать все процедуры для работы с NTFS на асме, ибо можно запросто поломать мозг при формировании бинарного дерева в MFT. Лучше на чем нить более высоком. FAT32/FAT16 - можно и на асме, хотя никакой выгоды в данном случае нет. Но если прет на асме - то можно, бггг.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 21.01.2011, 20:01   #7
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

3 метода работы с занятыми файлами, сайт васм, метод третий-считывание файла напрямую с секторов диска. Используются апи-функции предназначенные для дефрагментации, которые разумеется есть во всех версиях этих ваших винд. С помощью оных функций получают таблицу размещения файла по секторам. Далее с помощью КреатФайл открывается диск на запись, с помощью СетПойнтер перемещается указатель на нужные сектора, смещения, вычисляете нужный сектор, смещение и напрямую туда и делаете ВрайтФайл. Можно сделать хоть на бейсике, да, я гарантирую это
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 09.02.2011, 23:26   #8
interxor
Пользователь
 
Аватар для interxor
 
Регистрация: 09.02.2011
Сообщений: 12
По умолчанию

Как я понял автор пытается накодить самомодифицирующийся код?? это делается иначе. при выполнении программа находится в памяти, и если в своем сегменте то модифицировать ее не составляет труда.
...месяц в небе, год в книге, а день такой у нас, какой и у вас, и за сим...
interxor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и редактирование текстового файла sasha0123 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 04.12.2010 00:00
Редактирование файла ресурсов Alex2009 Общие вопросы Delphi 4 02.07.2009 01:10
Редактирование файла Лубышев Помощь студентам 4 04.03.2009 12:18
Редактирование файла в цикле Var17 Общие вопросы Delphi 1 13.12.2007 14:51
редактирование бмп файла kyuzo Мультимедиа в Delphi 7 01.08.2007 14:32