2016-08-08 3 views
0

Я занимался исследованием программы (исполняемого файла). Я декомпилировал программу, используя ILSpy. В то время как я рассмотрел исходный код, я обнаружил функцию, которая выглядела так:Как я могу декомпилировать native внутри C#

/ <Module> 
[SuppressUnmanagedCodeSecurity] 
[MethodImpl(MethodImplOptions.Unmanaged | MethodImplOptions.PreserveSig)]  
internal unsafe static extern PointerObject* Function(sbyte*); 

Реализации не было. Как я могу разобрать это?

ответ

0

Метод с ключевым словом extern означает, что реализация этого метода указана в каком-то внешнем файле. Вы можете узнать больше о extern в MSDN Docs. Обычно вы увидите DLLImportAttribute который бы указать имя сборки, что метод реализован в.

MethodImpOptions.Unmanaged означает, что вызов делается для неуправляемого кода (C, C++, и т.д.) и MethodImpOptions.PreserveSig означает, что способ бытия имеет точную подпись метода.

Помимо этого, я не могу сказать вам многого.

0

Поскольку это нативный вызов, вам нужен собственный дизассемблер. Есть много возможностей выбирать с невероятно разным уровнем вывода, но вам, скорее всего, потребуется хорошее понимание сборки x86 и программирования Windows, чтобы получить любую полезную информацию от разборки - например, это не что-то вроде дизассемблированного кода на C#.

Нативный код может быть в отдельной DLL или в собственном модуле в той же сборке - вам нужно будет проверить, указывает ли это определение extern.

Дисклеймер: разборка и/или использование каких-либо знаний, полученных таким образом, могут быть незаконными, если вы находитесь; убедитесь, что вы знаете о применимых законах.

Смежные вопросы