Как я могу научиться безопасно использовать шестнадцатеричный редактор?

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

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

РЕДАКТИРОВАТЬ: я должен указать, что я не планирую редактировать случайно; это просто гипотетически.

1 ответ

Если вы хотите уверенно использовать шестнадцатеричный редактор, это поможет понять структуру скомпилированной программы (в частности, исполняемого файла ELF, так как ELF является типичным исполняемым форматом в Linux в наши дни). Определенные места в файле на самом деле не являются частью самой программы, но представляют собой метаданные, которые говорят Linux, как загружать и запускать программу.

Вы также найдете бесценным знание машинного кода (или, по крайней мере, языка ассемблера) для центрального процессора вашей системы.

В любом случае, когда вы редактируете что-либо, что не является явно строковыми данными, вы изменяете либо метаданные, либо фактические инструкции, которые указывают процессору, что делать. Если вы делаете это, не зная точно, что делаете, если вам повезет, программа завершится сбоем. Если вам не повезло, вы можете просто заставить его молча и слегка испортить что-то каждый раз при запуске модифицированной детали, и вы можете не заметить это, пока не станет слишком поздно, чтобы отменить действие. Машинный язык, являющийся фактическим языком ЦП, не связан ограничениями библиотеки и т. Д.; он имеет столько же доступа к машине, сколько и вы (и иногда даже больше, если он настроен для работы с правами root или с определенными возможностями). Так что практически любой ущерб, который вы можете нанести, программа может сделать так же.

Другие вопросы по тегам