Ну, блин, дожили, раньше, чтоб попасть в «контору» нужно было диплом из солидного вуза с очень положительными оценками, а сейчас… Правда, поработав не один десяток лет на предприятии, многие (это знаю точно!!!) своим детям советуют туда ни в коем разе не соваться!..
MASM не поддерживает такую запись unicode текста, поэтому по каждой такой записи правой кнопкой мыши — Undefine.
А кто сказал, что это unicode-текст? Похоже Вы переходили на более новую версию ИДЫ и потребовалось автоматическое преобразование. А вот при автоматическом преобразовании в формат «7.0» из предыдущих версий, ИДА и выкидывает такое представление для строк.
Там же только ASCII символы в строках. Тогда уж используйте «U», а затем «A».
Правда, в примере могут быть реально не строки, но это отдельная песня!
Если у вас не так и нет библиотечных функций. Вероятно стоит попробовать открыть файл с другими настройками, например как MS-DOS executable или выбрать другой тип процессора, например 486й.
Для той версии IDA, которой Вы пользовались (и для более поздних) достаточно использовать тип процессора «MetaPC (disassemble all opcodes)». Все остальные варианты для 86 процессоров в настоящее время практически являются архаизмами, этакими историческими и архитектурными памятниками этапов развития как процессоров, так и самой ИДЫ. Авторы их оставляют в описании большей частью «до кучи», чтоб списки выбора были «побольше».
Единственным вариантом применения этих «процессорных модулей» может являться случай, когда Вы желаете «сократить» число обрабатываемых опкодов, а не расширение, которое представлено в MetaPC. Но можете нарваться на ошибки в «старых» модулях, MetaPC-то регулярно обновляется и подправляется.
Интересно, а Ваш ИТ руководитель сможет справиться с задачкой правильной расстановки в тексте запятых (на примере Вашего сообщения)?
Попробуйте подкинуть ему эту тему! Заодно проверим уровень Вашего руководителя!
И это исследование будет не менее интересно, чем тема, заявленная в заголовке.
Было бы ещё совсем не лишним действием исправить пяток-другой орфографических ошибок и опечаток в тексте!
Не просто перевели, ещё и материал подали так, что читать нормально можно. Не то, что в данном варианте!!! Сами переводы (качество) и сравнивать нет желания. Да и прочитать-то больше третьей части опуса — тот ещё подвиг!
Может изменить заголовок на «Не---практичный ...»
Будет ещё круче!
Чтобы с самого начала было всем и совсем понятно, что правила русского языка к этому опусу не имеют никакого отношения!
Да, пометка стоит, но при всём при этом не грех отделить сам перевод от сопутствующей рекламы, которой (я полагаю) в оригинале не было, хотя бы строкой с именем автора. Типа:
«Шикарное» изложение! Осталось только разбить все слова на слоги и обозначить ударные слоги в словах (проставить/обозначить ударение). И сразу станет всё предельно ясно и понятно!
Благодаря успеху таких людей, как Стив Джобс, Билл Гейтс, Марк Цукерберг, профессия программиста стала популярной и востребованной у многих людей.
Это шутка? Вы всерьёз так думаете? Они вообще-то очень мало программисты, а больше уникальные (талантливые) менеджеры.
Даже если они и занимались программированием, то заработали отнюдь не на тех строках кода, которые они собственноручно написали!
Не надо путать «мягкое» с «тёплым» и вводить в заблуждение окружающих!
Один из таких способов – это дизассемблирование, анализ, внесение изменений и трансляция дизассемблерного текста обратно в EXE-файл.
Смешно, когда предлагают такие способы. Печально, когда предлагают подобные извращения не в шутку, а всерьёз! Тем более, если идёт речь об ядре ОС!
Даже не стоит обсуждать уровень подобных советчиков (специалистов)!
На мой взгляд дискуссия уехала совсем в сторону. Ну пересборка тут совсем ни при чем.
Открою маленький секрет. Когда разбираюсь с прошивкой, то она вся в памяти и дизассемблирую и декомпилирую всё сразу (ну 32 и 64 отдельно, хотя тоже можно сразу), при этом вся память (все файлы под руками), и PCD базы и NVRAM и RAW и FREEFORM файлы.
Вот почему описываю уже результат некоторой аналитики (простейшей).
На самом деле подобной аналитики вариантов можно напридумывать.
Кому такие инструменты были бы полезны… Флаг в руки, думайте, мечтайте…
Это и фишка и проблемы, та же ИДА работает в этом случае через… (не скажу через что).
Но Ильфак вряд слушать будет, чего не хватает. Ну глюки он правит. Когда мне не лень, напрягаю его, с поддержкой у него не плохо налажено, особенно если не с ним лично взаимодействуешь!!!
Честно говоря, на последних прошивках, когда они всё в динамику толкают, даже имена файлов (нет UI-секций), с отдельным файлом разбираться — вряд ли просто.
Но полезный анализ никто не отменит.
Задачи надо правильно ставить.
Ну пытается же Интел что-то получить/доказать, используя символьную информацию.
Просто ещё один подход, кстати, как показывает практика, вполне реальный.
Не говоря уж о той проблеме, что иногда просто интересно, а соответствует ли бинари тому исходному коду, который тебе выдали?..
Извините, не понял идею, очень уж она сумбурно выражена. Ну меняйте изменённый модуль, есть для этого MMTool или UEFITool (в тех случаях, когда она работает — но в PEI томе у неё как раз проблемы). Кто мешает-то?
Вообще-то информация типа последнего списка наиболее полезна как раз разработчикам.
Она покажет, какие интерфейсы вообще не работают, где перекосы, возможный «мёртвый» код.
Дело в том, что увидеть по исходникам подобные вещи — весьма нетривиальное занятие.
Те, кто видел даже древние утекшие исходники Aptio IV, тот это должен понимать.
Я не останавливался на том, где может понадобиться подобного рода информация, но для аналитиков из команды разработчиков подобная информация была бы не заменима.
Даже с точки зрения информационной безопасности, подобные дыры — это дар, место, где можно размещать свои поделки, т.е. места «повышенного внимания».
Вообще-то я уже не в первый раз пишу, что описанные результаты — это всего-навсего бонус, дополнительная возможность, реверс позволяет получать дополнительную информацию, проводить доп. анализ.
На PEI-фазе, например, можно проанализировать, кто и какие HOB-ы создаёт и как их использует, а потом посмотреть это же и на DXE фазе.
И это так — самые простенькие идеи.
Другое дело, что я не описывал, как в реалити это можно делать, но там места надо раза в 2-4 больше, если только кратенько.
Результаты определённые есть, идей хватает, возможно и продолжение (развитие).
Статический анализ бинарного кода — штука весьма занятная.
В настоящий момент мне проще «выдать» готовый результат (по запросу), чем решение. В данный момент это больше набор методик решения задачи. Кое-где надо напильничком! Хотя практически всё можно на автомате решать!
А публичных готовых решений и не будет! Вот в этом я точно уверен!
А законченных решений и не может быть вообще!
В принципе, для того, чтоб получить описанный результат, мне понадобилось немало времени. Да и работа не закончена!
Кстати, как написал в «Заключении», задача была не в получении графа зависимостей, он — бонус.
Да, для DXE объём побольше, а методически всё попроще.
"...Knife" смотрел мельком, но там вроде точность невысокая…
Естестественно, это было понятно, что и как, но не у всех такой богатый опыт, как у Вас, Николай!
Кто-то ещё только начинает, пусть это будет просто Tutorial.
Да, основная задача — реверс. Решил начать не с него — небольшая интрига!
Я и сам начинал не с исходников типа «Teano...», а именно с реверса.
Кстати, всё не так уж и тривиально там сделать. И, например, даже готового скрипта на чем бы то ни было будет не достаточно. Очень существенная вещь при дизассемблировании/декомпиляции — «метаданные». Как они выглядят, как организованы — будет существенно зависеть от средства, которым пользуемся… Но это отдельная тема — есть планы, но время покажет…
А кто сказал, что это unicode-текст? Похоже Вы переходили на более новую версию ИДЫ и потребовалось автоматическое преобразование. А вот при автоматическом преобразовании в формат «7.0» из предыдущих версий, ИДА и выкидывает такое представление для строк.
Там же только ASCII символы в строках. Тогда уж используйте «U», а затем «A».
Правда, в примере могут быть реально не строки, но это отдельная песня!
Для той версии IDA, которой Вы пользовались (и для более поздних) достаточно использовать тип процессора «MetaPC (disassemble all opcodes)». Все остальные варианты для 86 процессоров в настоящее время практически являются архаизмами, этакими историческими и архитектурными памятниками этапов развития как процессоров, так и самой ИДЫ. Авторы их оставляют в описании большей частью «до кучи», чтоб списки выбора были «побольше».
Единственным вариантом применения этих «процессорных модулей» может являться случай, когда Вы желаете «сократить» число обрабатываемых опкодов, а не расширение, которое представлено в MetaPC. Но можете нарваться на ошибки в «старых» модулях, MetaPC-то регулярно обновляется и подправляется.
Попробуйте подкинуть ему эту тему! Заодно проверим уровень Вашего руководителя!
И это исследование будет не менее интересно, чем тема, заявленная в заголовке.
Было бы ещё совсем не лишним действием исправить пяток-другой орфографических ошибок и опечаток в тексте!
Будет ещё круче!
Чтобы с самого начала было всем и совсем понятно, что правила русского языка к этому опусу не имеют никакого отношения!
Да, пометка стоит, но при всём при этом не грех отделить сам перевод от сопутствующей рекламы, которой (я полагаю) в оригинале не было, хотя бы строкой с именем автора. Типа:
_________________________________________________________________Julia Evans
А то "... Смешались в кучу кони, люди ..."
и
интересное сочетание
может лучше в конце добавить, что перевод, а автор ...
перед всякими рекламными пассажами, естественно!
Это шутка? Вы всерьёз так думаете? Они вообще-то очень мало программисты, а больше уникальные (талантливые) менеджеры.
Даже если они и занимались программированием, то заработали отнюдь не на тех строках кода, которые они собственноручно написали!
Не надо путать «мягкое» с «тёплым» и вводить в заблуждение окружающих!
Смешно, когда предлагают такие способы. Печально, когда предлагают подобные извращения не в шутку, а всерьёз! Тем более, если идёт речь об ядре ОС!
Даже не стоит обсуждать уровень подобных советчиков (специалистов)!
Открою маленький секрет. Когда разбираюсь с прошивкой, то она вся в памяти и дизассемблирую и декомпилирую всё сразу (ну 32 и 64 отдельно, хотя тоже можно сразу), при этом вся память (все файлы под руками), и PCD базы и NVRAM и RAW и FREEFORM файлы.
Вот почему описываю уже результат некоторой аналитики (простейшей).
На самом деле подобной аналитики вариантов можно напридумывать.
Кому такие инструменты были бы полезны… Флаг в руки, думайте, мечтайте…
Это и фишка и проблемы, та же ИДА работает в этом случае через… (не скажу через что).
Но Ильфак вряд слушать будет, чего не хватает. Ну глюки он правит. Когда мне не лень, напрягаю его, с поддержкой у него не плохо налажено, особенно если не с ним лично взаимодействуешь!!!
Честно говоря, на последних прошивках, когда они всё в динамику толкают, даже имена файлов (нет UI-секций), с отдельным файлом разбираться — вряд ли просто.
Но полезный анализ никто не отменит.
Задачи надо правильно ставить.
Ну пытается же Интел что-то получить/доказать, используя символьную информацию.
Просто ещё один подход, кстати, как показывает практика, вполне реальный.
Не говоря уж о той проблеме, что иногда просто интересно, а соответствует ли бинари тому исходному коду, который тебе выдали?..
Вообще-то информация типа последнего списка наиболее полезна как раз разработчикам.
Она покажет, какие интерфейсы вообще не работают, где перекосы, возможный «мёртвый» код.
Дело в том, что увидеть по исходникам подобные вещи — весьма нетривиальное занятие.
Те, кто видел даже древние утекшие исходники Aptio IV, тот это должен понимать.
Я не останавливался на том, где может понадобиться подобного рода информация, но для аналитиков из команды разработчиков подобная информация была бы не заменима.
Даже с точки зрения информационной безопасности, подобные дыры — это дар, место, где можно размещать свои поделки, т.е. места «повышенного внимания».
Вообще-то я уже не в первый раз пишу, что описанные результаты — это всего-навсего бонус, дополнительная возможность, реверс позволяет получать дополнительную информацию, проводить доп. анализ.
На PEI-фазе, например, можно проанализировать, кто и какие HOB-ы создаёт и как их использует, а потом посмотреть это же и на DXE фазе.
И это так — самые простенькие идеи.
Другое дело, что я не описывал, как в реалити это можно делать, но там места надо раза в 2-4 больше, если только кратенько.
Результаты определённые есть, идей хватает, возможно и продолжение (развитие).
Статический анализ бинарного кода — штука весьма занятная.
А публичных готовых решений и не будет! Вот в этом я точно уверен!
А законченных решений и не может быть вообще!
В принципе, для того, чтоб получить описанный результат, мне понадобилось немало времени. Да и работа не закончена!
Кстати, как написал в «Заключении», задача была не в получении графа зависимостей, он — бонус.
Да, для DXE объём побольше, а методически всё попроще.
"...Knife" смотрел мельком, но там вроде точность невысокая…
Кто-то ещё только начинает, пусть это будет просто Tutorial.
Да, основная задача — реверс. Решил начать не с него — небольшая интрига!
Я и сам начинал не с исходников типа «Teano...», а именно с реверса.
Кстати, всё не так уж и тривиально там сделать. И, например, даже готового скрипта на чем бы то ни было будет не достаточно. Очень существенная вещь при дизассемблировании/декомпиляции — «метаданные». Как они выглядят, как организованы — будет существенно зависеть от средства, которым пользуемся… Но это отдельная тема — есть планы, но время покажет…