Я понимаю, что когда функция вызывается в первый раз, JIT вызывается и компилирует код .Net IL в инструкцию x86 и сохраняет ее в где-то в памяти. Мне нужно знать, где находится этот код x86, чтобы я мог анализировать инструкции сборки x86 (цель в этом вопросе не очень важна). Может ли кто-нибудь сказать мне, как определить место памяти в который хранится переведенный код, или, возможно, какая функция в коде JIT делает это. У меня есть код JIT со мной (как .net исходный код опубликован в GitHub, но до сих пор меня поражает размер кода). Я был бы признателен за любую помощь. Заранее спасибо ...Где я могу найти код x86, скомпилированный .Net JIT
Это помогло бы, если бы кто-нибудь мог предложить дизассемблер, который мог бы дать дамп команды сборки x86 работающего .net exe, как и визуальная студия дизассемблера, но мне нужно запустить ее автоматически. Я знаю, что это можно сделать статически ngen. ngen может преобразовать в инструкции x86, а затем любой дизассемблер может получить дамп, но для меня важно, чтобы это было сделано после запуска exe.
Это потому, что причиной, по которой мне нужен дамп команды x86, - это найти сходство между несколькими .net exes. Задача с прямым просмотром статически разобранной сборки заключается в том, что она может быть упакована или запутана, и в этом случае они могут выглядеть несходными, даже если они внутренне похожи. Но во время выполнения они будут распакованы/деобфассированы программой упаковщика, а команды JIT, составленные с использованием x86, будут похожи.
Зачем вам место в памяти? Почему бы не посмотреть окно 'Dissasembly' в Visual Studio? –
Удаление ссылки на '[Java]', потому что этот вопрос касается .NET. – xanatos
Это, как правило, невозможно, адрес очень случайный и никогда не повторяется. Функция защиты от вредоносных программ. Только профайлер выстрелил в него. Избегайте задавать XY-вопрос, «анализировать» ничего не значит, и в этом контексте он действительно необходим. –