это мой первый вопрос здесь, поэтому, пожалуйста, не будьте слишком строги ко мне :)
Что я имею:
dll C# смешанного режима, в которой есть код C#, который, в свою очередь, вызывает собственный метод в той же dll, которая меня интересует
Вызов:
int num3 = <Module>.fn_GetBitArray((byte*)(&$ArrayType$$$BY0DC@E), (byte*)(&$ArrayType$$$BY05E2), ref nHardwareType);
as IL
IL_0117: stind.i1
IL_0118: ldloca.s 9
IL_011a: ldloca.s 8
IL_011c: ldloca.s 7
IL_011e: call uint32 modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl) '<Module>'::fn_GetBitArray(uint8*, uint8*, uint32* modopt([mscorlib]System.Runtime.CompilerServices.IsImplicitlyDereferenced) )
с таким определением (ILSpy)
// <Module>
[SuppressUnmanagedCodeSecurity]
[MethodImpl(MethodImplOptions.Unmanaged | MethodImplOptions.PreserveSig)]
public unsafe static extern uint fn_GetBitArray(byte*, byte*, uint*);
Я не уверен, как продолжить отсюда. Когда я загружаю это в IDA, я могу выбрать загрузчик .NET, где я вижу весь код C # и вызов, но не смещение «внешней» функции, а затем я могу выбрать режим x86, но все функции пронумерованы через (sub_XXXXXXXX), поэтому мне НУЖНО смещение.
Вопрос: Как я могу узнать, как именно разрешается этот вызов и получить целевую функцию?
PS: я почти уверен, что он действительно не импортируется, потому что никакая другая dll не содержит строку имени функции (написал быстрый инструмент для поиска по шестнадцатеричным шаблонам), и весь импорт связан с другими вещами. также ollydbg чертовски смущает меня в отношении IL, нормальный c/c++ в порядке, но (может быть, как побочный вопрос), как мне найти там имена функций IL ?!
Спасибо заранее за ваше время
приветс WV