-
Автор темы
- #1
Приветствую всех. В раздел "C/C++" я добавил эту тему по очень специфичному желанию. Я хочу написать скрипт для IDA Pro, но к сожалению не силён в Python. Вы спросите: почему раздел не C#? NativeAOT же это фича си шарперов. А я отвечу: после компиляции сишарп - уже не си шарп:).
Я был приятно удивлён, когда узнал что C#, оказывается, может компилироваться в нативный код. Например: у нас имеется две строки. Одна для вывода в консоль, а другая, просто для того чтобы консоль моментально не закрылась:
Небольшие манипуляции в консоле разработчика, и мы получаем нативный x64 файл:
Его ни в коем случае нельзя декомпилировать, так-как там просто нет больше IL-кода. Сейчас покажу вид из дизассемблера. Хочу заметить, что тут нет большого количества extern-символов которые возможно задампить, так как почти все метаданные (названия методов и полей) стираются при компиляции (за исключением тех, которые остаются из-за рефлексии (её тоже можно выключить, но для этого вам придется исключить методы из вашего кода связанные с ней)).
Вид точки входа из IDA Pro:
И больше всего меня тут заинтересовал этот поинтер (unk_1400AEAC0) который уж больно приедается в глаза. Это и есть наша строка "Привет". Но почему он не показывается как обычная?
Строка в Native AOT не похожа на типичные строки на нативных языках: сначала идет указатель на виртуальную таблицу, затем размер строки, а затем символы. Вот для этого я и создал вопрос:
Наверняка у некоторых на этом форуме есть знания написания скриптов для иды. И наверняка получение строк можно автоматизировать для простого дебага. Если у вас есть желание и интерес к этому вопросу, не хочет кто-нибудь взяться за столь геройский поступок который поможет мне и многим другим?
Если вы бизнесмен и имеете ценник на такие вещи, то могу оставить телеграм в хайде).
Я был приятно удивлён, когда узнал что C#, оказывается, может компилироваться в нативный код. Например: у нас имеется две строки. Одна для вывода в консоль, а другая, просто для того чтобы консоль моментально не закрылась:
Небольшие манипуляции в консоле разработчика, и мы получаем нативный x64 файл:
Его ни в коем случае нельзя декомпилировать, так-как там просто нет больше IL-кода. Сейчас покажу вид из дизассемблера. Хочу заметить, что тут нет большого количества extern-символов которые возможно задампить, так как почти все метаданные (названия методов и полей) стираются при компиляции (за исключением тех, которые остаются из-за рефлексии (её тоже можно выключить, но для этого вам придется исключить методы из вашего кода связанные с ней)).
Вид точки входа из IDA Pro:
И больше всего меня тут заинтересовал этот поинтер (unk_1400AEAC0) который уж больно приедается в глаза. Это и есть наша строка "Привет". Но почему он не показывается как обычная?
Строка в Native AOT не похожа на типичные строки на нативных языках: сначала идет указатель на виртуальную таблицу, затем размер строки, а затем символы. Вот для этого я и создал вопрос:
Наверняка у некоторых на этом форуме есть знания написания скриптов для иды. И наверняка получение строк можно автоматизировать для простого дебага. Если у вас есть желание и интерес к этому вопросу, не хочет кто-нибудь взяться за столь геройский поступок который поможет мне и многим другим?
Если вы бизнесмен и имеете ценник на такие вещи, то могу оставить телеграм в хайде).