Как найти метки в файле
Перейти к содержимому

Как найти метки в файле

  • автор:

Как найти все доступные метки в файлах сборки?

Я работаю над программированием инструмента, предназначенного для разделения ассемблерных кодов на разные разделы и метки. Я пытаюсь добавить рекурсивный режим.

Если я хочу печатать коды одной конкретной этикетки и коды в символах содержимого этикетки других этикеток, рекурсивный режим должен печатать этикетки, на которые ссылаются одновременно. Например:

Для приведенных выше кодов, если я хочу печатать коды на этикетке A в рекурсивном режиме, коды на этикетке A и B должны быть напечатаны одновременно. Для этого мне нужно найти все обозначения меток для каждой строки.

Некоторые из инструкций могут быть важными, например call , lea , jmp . Но перечислить все условия непросто. Любые идеи? Спасибо за вашу помощь!

1 ответ

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

Обычный/самый простой способ перехода от одной метки к другой — просто провалиться. Нравиться

Если последняя инструкция перед следующей меткой не является безусловным переходом (например, jmp или ret , но не call , который в конечном итоге может вернуться), вы также должны после выполнения в этот следующий блок. ret должен закончить обработку, jmp можно продолжить, если хотите, jnz может не пройти.

Для условных ветвей вам, вероятно, нужно следовать обеим сторонам.

Попытка отследить косвенные переходы после того, как код загружает указатель на функцию в регистр с RIP-относительным LEA или MOV, вероятно, слишком сложна. Вы действительно хотите иметь возможность отслеживать foo(callback_func, 123) и распечатывать код для foo и код, который он может вызвать в callback_func ?

Если аргумент передается в регистр (например, соглашения о вызовах x86-64), и он не сохраняет его в стеке и не перезагружает его, то довольно легко сопоставить его с jmp rdi , увидев, что были никаких промежуточных записей в RDI между ними. Но если это более сложно, например, встроенная отладка, сохраняющая RDI в стек и перезагружающая где-то еще, вам в основном нужен симулятор x86-64 для отслеживания значений.

Я думаю, что было бы лучше даже не пытаться отслеживать непрямые переходы, а не иметь что-то, что иногда работает (простые случаи), а иногда нет. Так что, вероятно, вам следует забыть о lea , если только вы не думаете о сбросе объявлений данных для статических данных, на которые ссылаются LEA или MOV.

Некоторые int 0x80 или syscall не возвращаются (например, _exit или sigreturn ), но большинство — нет. Поведение зависит от значения RAX/EAX (и от ОС). Обычно EAX устанавливается довольно скоро перед системным вызовом, поэтому вы можете захотеть указать особый случай для тех, которые не возвращаются, иначе вы провалитесь мимо выхода в другой код, который не обязательно должен выполняться.

То же самое относится к вызовам библиотечных функций, таких как call exit .

Какой есть способ организовать метки или тэги для файлов под windows?

У меня есть структура папок на внешнем сетевом диске. В каждой папке сотни файлов: мои фото и видеоархивы. Папки и подпапки названы по дате или по событию. Мне хочется уметь делать из этих файлов определенные выборки которыми, в идеале, можно управлять с любого компьютера моей домашней сети. Но подойдет с одного компьютера. Выборки, например, такие: «Про друга Колю», «Путешествия», «Удачные кадры» и т.п. Хочется создать большое количество пересекающихся множеств из имеющихся файлов.

Чтобы потом можно было с этими множествами удобно работать: скопировать все, добавить в них файлы или удалить. По сути мне нужна возможность пакетно добавлять теги к файлам и работа с тэгами.

Скажем, в Windows 7 есть «Библиотеки», но у них минимальная сущность это папка, а не файл. Поэтому Библиотеки тут не подходят. Или есть «Ключевые слова» к jpg, но их нужно индивидуально прописывать к каждому файлу. А хочется пакетно и к любому типу файлов. Пробовал Tagg — неудобно.

Решение нужно под виндовс (знаю что в убунте и макоси такое есть, не надо предлагать пересесть).

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как посмотреть метаданные файлов MS Word. Как удалить и редактировать метаданные Word

Метаданные в файлах Word

В файле MS Word и вообще во всех офисных документах MS Office содержится множество метаданных.

Если нужно извлечь метаданные из файлов MS Word без открытия файла в редакторе Word, то можно воспользоваться специальными утилитами.

При этом популярный инструмент mat, который используется для показа и очистки метаданных, работает с файлами MS Word не очень хорошо:

На самом деле, мало что понятно и показанная информация кажется скорее мусором. Но полезные данные имеются, это строки:

В них говориться, что файлы docProps/core.xml и docProps/app.xml содержат потенциально пагубное содержимое. Но самих данных с помощью этой программы мы увидеть не можем.

Если попытаться проанализировать файл .docm (документ MS Word с поддержкой макросов):

То программа просто напишет, что не может обработать этот файл:

Это при том, что формат .docm имеет минимальное отличие от формата .docx — пара дополнительных файлов внутри (с описанием макросов и второй файл с самими макросами).

Имеется ещё одна версия mat2. Попробуем её:

Здесь всё намного лучше, выведены почти все метаданные файла.

Попробуем проанализировать формат .docm:

Как посмотреть метаданные файла .docm

Программа mat2 не в курсе, что .docm это такой же файл, как и .docx. Зато мы это знаем и можем пойти совсем простым путём — просто изменим (или добавим) расширение файла на .docx:

Теперь метаданные отлично извлекутся:

Как сделать выводимую в mat2 информацию более читаемой

Можно заметить, что вывод команды mat2 преимущественно состоит из строк, не несущих особой смысловой нагрузки:

Выводимая информация станет намного более ясной для восприятия, если мы просто уберём показ этих строк:

Что показывает mat2

Программа mat2 выводит название узлов XML файлов, которые имеют говорящие имена. А именно:

  • AppVersion — версия приложения
  • Application — приложение
  • Characters — всего символов
  • CharactersWithSpaces — всего символов с пробелами
  • DocSecurity — безопасность документа
  • HyperlinksChanged — ссылки изменены
  • Lines — всего строк в документе
  • LinksUpToDate — ссылки обновлены
  • Pages — всего страниц в документе
  • Paragraphs — всего параграфов в документе
  • ScaleCrop — масштабирование/обрезка
  • SharedDoc — совместный документ
  • Template — используемый шаблон
  • TitlesOfParts — имена частей
  • TotalTime — общее время правки
  • Words — всего слов в документе
  • cp:lastModifiedBy — кем последний раз изменён документ
  • cp:lastPrinted — дата последней печати документа
  • cp:revision — всего редакций документа (количество правок и сохранений)
  • dc:creator — кем документ создан

Как посмотреть метаданные документов MS Office без дополнительных программ

На самом деле, новый формат документов, например, файлов Word .docx представляет собой zip архив, в котором собраны преимущественно xml файлы (также там могут быть изображения, макросы, другие бинарные файлы).

Для ручного анализа я создал новый файл file3.docx и добавил туда картинку с GPS координатами и другими метаданными. Программы mat и mat2 показали присутствие изображения, но сами метаданные из него не вывели.

Итак, к файлу file3.docx можно добавить расширение .zip и после этого распаковать его содержимое как архив.

Медиафайлы при распаковке находятся в папке /word/media/.

Программа mat2 не смогла найти в изображении метаданных:

Программа mat также ничего не нашла:

Видимо, при вставке изображений в документы Word, они пересохраняются программой и при этом все метаданные теряются. Но их хотя бы можно просто открыть и посмотреть:

Метаданные документа содержаться в файлах docProps/core.xml и docProps/app.xml. Я открыл их в IDE NetBeans и для удобства чтения выбрал опцию форматирования документа, поскольку в начальном виде весь документ записан в одну строку, трудную для восприятия.

Файл docProps/core.xml:

Файл docProps/app.xml:

В файле core.xml имеются даты создания и изменения, которые не выводит даже программа mat2. Возможно, есть ещё какие-то поля, которые невозможно увидеть кроме как открыв эти файлы.

В каком файле Word содержаться макросы

Информация о макросах записана в файл /word/vbaData.xml, а сами макросы сохранены в /word/vbaProject.bin — этот файл является бинарным.

В каком файле Word записан текст документа

Текст документа сохраняется в файл /word/document.xml. В этом документе используется особая разметка на основе открывающихся и закрывающихся тегов и их свойствах.

Как очистить метаданные файла MS Word

Очистить метаданные документов MS Office, в том числе Word, можно прямо в самой программе для редактирования. Далее показано на примере Word.

В меню нажмите Файл:

Далее во вкладке Сведения найдите кнопку Поиск проблем и в выпадающем меню выберите Инспектор документов:

Если документ не сохранён, то перед анализом будет предложено сохранить его.

Нажмите кнопку Проверить:

Обратите внимание на пункт Свойства документа и персональные данные — при желании, нажмите кнопку Удалить всё:

Удаление метаданных офисных файлов в Linux

Программа mat вроде бы как успешно удаляет метаданные из файла:

Об этом говорит вывод:

Но полученный файл невозможно открыть ни в одной программе…

Программа mat2 успешно справилась с задачей и удалила все метаданные:

Обратите внимание, что она не очищает файл, а создаёт новый без метаданных, в данном случае имя файла без метаданных будет file3.cleaned.docx, что касается файла file3.docx, то он останется без изменений.

Итак, если вам действительно нужно удалить метаданные файла .docx не открывая его в редакторе Word, то алгоритм действий следующий:

  1. Добавьте к файлу расширение .zip.
  2. Распакуйте полученный архив.
  3. Откройте файлы docProps/core.xml и docProps/app.xml и замените данные на нужные вам. После редактирования сохраните эти файлы
  4. Выберите все распакованные каталоги и файлы и запакуйте всё это в zip архив.
  5. К полученному архиву добавьте расширение .docx
  6. Нужно проверить, что документ не повреждён и сохранил свою работоспособность. Чтобы в него не сохранились новые метаданные, на всякий случай сделайте копию нового документа и проверьте его.

Кстати, таким образом можно не только удалять, но и спуфить (подменять) метаданные офисных документов:

Обратите внимание на даты создания, изменения, печати и номер редакции:

Много лет назад аналогичный «разбор» и «сборку» файлов я делал даже на PHP (я редактировал содержимое файлов Word для целей обхода Антиплагиата) — рабочие файлы Word получались при упаковке их с помощью класса ZipArchive при использовании метода сжатия по умолчанию.

Заключение

Метаданные могут содержать важную информацию, вплоть до ФИО автора документа, поэтому им нужно уделять особое внимание.

В плане показа и очистки метаданных из документов MS Office такими инструментами как mat и mat2, то первая их не показывает и портит файл при очистке, вторая их показывает, и успешно очищает файл.

Самый простой способ очистить метаданные в документе Word и в других офисных программах — сделать это прямо в соответствущем редакторе MS Office.

Как узнать адрес метки в lss файле?

При компиляции проекта на ассемблере в atmel-studio появляется .lss файл. В нём мне нужно найти адреса всех меток. Возможно ли это сделать программно или же придётся считать что-то руками? Открыв файл в notepad появились какие-то пары адресов, что это может быть ?

Здесь 00000a — это и есть адрес инструкции, e950 — это её представление в машинном коде. То есть отсюда можно заключить, что поскольку метка start: находится перед этой инструкцией, 0x00000A и есть адрес этой метки.

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

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *