2016-03-22 104 views
0

这是我第一次在这里的问题混合模式DLL的本地函数的地址,所以请不要太为难我:)检索与IDA或奥利

我得到了什么:

混合模式的C#DLL,即具有C#代码进而调用在同一DLL一个本地方法,,即时通讯感兴趣

调用:

int num3 = <Module>.fn_GetBitArray((byte*)(&[email protected]), (byte*)(&$ArrayType$$$BY05E2), ref nHardwareType); 

如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

+0

有多好没有固定的偏移。该功能即时编译,每次运行程序时都会有不同的地址。该程序的作者没有使用C#,该语言被称为C++/CLI。用电话与他交谈。 –

+0

“用电话与他交谈”wtf ?! “该程序的作者没有使用C#,该语言被称为C++/CLI”,那么为什么任何反射器都可以从它生成vb/c#代码,还有IL?为什么IDA会给出两个选择呢?本地函数仍然在一个固定的地址,即使一些表链接到它改变地址,对吗?那么如何找出合适的? “函数可以及时编译”,所以你也可以说C++部分或者什么?!?!我也没有编译任何东西,这是一个现成的程序,不,我不知道作者 – WarrantyVoider

回答

0

寻找解决方案后,周围很容易。是的,代码被加载到不同的地方,但是段偏移量是相同的。所以我用ILDASM并加载的dll,现在我的函数表示:

.method public static pinvokeimpl(/* No map */) 
    uint32 modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl) 
    fn_GetBitArray(uint8* A_0, 
        uint8* A_1, 
        uint32* modopt([mscorlib]System.Runtime.CompilerServices.IsImplicitlyDereferenced) A_2) native unmanaged preservesig 
{ 
    .custom instance void [mscorlib]System.Security.SuppressUnmanagedCodeSecurityAttribute::.ctor() = (01 00 00 00) 
    // Embedded native code 
    // Disassembly of native methods is not supported. 
    // Managed TargetRVA = 0x0003FD80 
} // end of method 'Global Functions'::fn_GetBitArray 

所以我去了IDA,发现它在0x1003FD80,^^