-
-
[原创]用ida调试.net clr相对容易
-
发表于: 2015-10-14 14:47 4411
-
一般跟踪compileMethod可以得到il代码。
相比其它debugger来说ida可以支持32位和64位调试,加上ida的反编译功能就很方便用来调试clr。
例如:
打开mscorjit.dll,直接在PreJit::compileMethod添加断点,
__int64 __usercall PreJit::compileMethod@<rax>(struct ICorJitInfo *a1@<rdx>, struct PreJit *a2@<rcx>, __int64 a3@<rdi>, __int64 a4@<rsi>, struct CORINFO_METHOD_INFO *a5@<r8>, unsigned __int32 a6@<r9d>, unsigned int a7@<r12d>, unsigned int a8@<r13d>, _QWORD *a9, _DWORD *a10)
struct CORINFO_METHOD_INFO
{
int *ftn;
int *scope;
BYTE *ILCode;
unsigned int ILCodeSize;
unsigned __int16 maxStack;
unsigned __int16 EHcount;
CorInfoOptions options;
};
运行
ILCode 0x13B740Di64 BYTE * 字节码的地址
ILCodeSize 0xEu unsigned int 字节码的长度
用idc来dump字节码的十六进制数据
auto ILCode = 0x13B740Di64;
auto ILCodeSize = 0xEu;
auto i;
for (i = ILCode; i<ILCode+ILCodeSize; i++)
Message("%02X ", Byte(i));
得到:
FE 09 00 00 FE 09 01 00 6F 85 00 00 0A 2A
反编译:
IL_0000: ldarg 0x0
IL_0004: ldarg 0x1
IL_0008: callvirt instance string [mscorlib]System.Text.Encoding::GetString(uint8[] )
IL_000D: ret
相比其它debugger来说ida可以支持32位和64位调试,加上ida的反编译功能就很方便用来调试clr。
例如:
打开mscorjit.dll,直接在PreJit::compileMethod添加断点,
__int64 __usercall PreJit::compileMethod@<rax>(struct ICorJitInfo *a1@<rdx>, struct PreJit *a2@<rcx>, __int64 a3@<rdi>, __int64 a4@<rsi>, struct CORINFO_METHOD_INFO *a5@<r8>, unsigned __int32 a6@<r9d>, unsigned int a7@<r12d>, unsigned int a8@<r13d>, _QWORD *a9, _DWORD *a10)
struct CORINFO_METHOD_INFO
{
int *ftn;
int *scope;
BYTE *ILCode;
unsigned int ILCodeSize;
unsigned __int16 maxStack;
unsigned __int16 EHcount;
CorInfoOptions options;
};
运行
ILCode 0x13B740Di64 BYTE * 字节码的地址
ILCodeSize 0xEu unsigned int 字节码的长度
用idc来dump字节码的十六进制数据
auto ILCode = 0x13B740Di64;
auto ILCodeSize = 0xEu;
auto i;
for (i = ILCode; i<ILCode+ILCodeSize; i++)
Message("%02X ", Byte(i));
得到:
FE 09 00 00 FE 09 01 00 6F 85 00 00 0A 2A
反编译:
IL_0000: ldarg 0x0
IL_0004: ldarg 0x1
IL_0008: callvirt instance string [mscorlib]System.Text.Encoding::GetString(uint8[] )
IL_000D: ret
赞赏
他的文章
- [求助]易语言程序编译后的(exe)窗体怎么修改? 7798
- [求助]<跟踪调试易语言静态编译支持库的方法> 3408
- [原创]用ida调试.net clr相对容易 4412
- [原创]汇编调用mfc42.dll 4106
- [分享]反汇编notepad.exe重新编译运行 6378
看原图
赞赏
雪币:
留言: