Вопрос NativeAOT и строки необычного формата.

Начинающий
Статус
Оффлайн
Регистрация
29 Июл 2022
Сообщения
101
Реакции[?]
28
Поинты[?]
29K
Приветствую всех. В раздел "C/C++" я добавил эту тему по очень специфичному желанию. Я хочу написать скрипт для IDA Pro, но к сожалению не силён в Python. Вы спросите: почему раздел не C#? NativeAOT же это фича си шарперов. А я отвечу: после компиляции сишарп - уже не си шарп:).

Я был приятно удивлён, когда узнал что C#, оказывается, может компилироваться в нативный код. Например: у нас имеется две строки. Одна для вывода в консоль, а другая, просто для того чтобы консоль моментально не закрылась:
1706022138495.png
Небольшие манипуляции в консоле разработчика, и мы получаем нативный x64 файл:
1706022195872.png
Его ни в коем случае нельзя декомпилировать, так-как там просто нет больше IL-кода. Сейчас покажу вид из дизассемблера. Хочу заметить, что тут нет большого количества extern-символов которые возможно задампить, так как почти все метаданные (названия методов и полей) стираются при компиляции (за исключением тех, которые остаются из-за рефлексии (её тоже можно выключить, но для этого вам придется исключить методы из вашего кода связанные с ней)).

Вид точки входа из IDA Pro:
1706022645200.png

И больше всего меня тут заинтересовал этот поинтер (unk_1400AEAC0) который уж больно приедается в глаза. Это и есть наша строка "Привет". Но почему он не показывается как обычная?
Строка в Native AOT не похожа на типичные строки на нативных языках: сначала идет указатель на виртуальную таблицу, затем размер строки, а затем символы. Вот для этого я и создал вопрос:
Наверняка у некоторых на этом форуме есть знания написания скриптов для иды. И наверняка получение строк можно автоматизировать для простого дебага. Если у вас есть желание и интерес к этому вопросу, не хочет кто-нибудь взяться за столь геройский поступок который поможет мне и многим другим?

Если вы бизнесмен и имеете ценник на такие вещи, то могу оставить телеграм в хайде).
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Если у вас есть желание и интерес к этому вопросу, не хочет кто-нибудь взяться за столь геройский поступок который поможет мне и многим другим?
нет

Строка в Native AOT не похожа на типичные строки на нативных языках: сначала идет указатель на виртуальную таблицу, затем размер строки, а затем символы.
почему не похожа то, в расте тоже самое происходит
 
Начинающий
Статус
Оффлайн
Регистрация
29 Июл 2022
Сообщения
101
Реакции[?]
28
Поинты[?]
29K
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Сверху Снизу