首页
社区
课程
招聘
[求助]请教.NET反编译和MSIL的问题
2011-10-9 18:16 4595

[求助]请教.NET反编译和MSIL的问题

2011-10-9 18:16
4595
初次对.NET的程序进行反编译,也不知道有什么debugger可以用,所以有些地方不是很清楚。
分别使用了reflector和IDA,结果如下:

private void a(i.a A_0)
{
        // This item is obfuscated and can not be translated.
        int num;
        bool flag;
        goto Label_0037;
   Label_0005:
        switch (num)
        {
                ……
        }
   Label_0037:
        this.d.Text = "";
        flag = A_0 != i.a.a;
        num = 3;
        goto Label_0005;
        if (1 != 0) { }
        num = 7;
        goto Label_0005;
}
---------------------------------------------------------------------------------------------------------------------------
38 32 00 00 00                    br  loc_25F7
……
                        loc_25F7:                               // CODE XREF: sub_25C0j
00                          nop
02                          ldarg.0
7B 22 00 00 04              ldfld class [System.Windows.Forms]System.Windows.Forms.Label i::d
72 B1 00 00 70              ldstr ""
6F 6F 00 00 0A              callvirt void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(class System.String)
00                          nop
03                          ldarg.1
16                          ldc.i4.0
FE 01                       ceq
16                          ldc.i4.0
FE 01                       ceq
0B                          stloc.1
19                          ldc.i4.3
0A                          stloc.0
2B B0                       br.s loc_25C5
---------------------------------------------------------------------------------------------------------------------------
问题1:在这里arg0,arg1分别是i.a和A_0吗?
问题2:ceq前的ldc.i4.0有什么用?
        push arg.0
        this.d.Text = "";
        push arg.1
        push 0
        ceq
        这时堆栈里应该有3个值,分别是arg0, arg1和0,那么ceq的对象应该是arg1和0才对,为什么会是A_0 == i.a.a呢?

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 122
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
chenxiaolu 1 2011-10-11 14:16
2
0
i.a是类名
A_0是参数
i.a.a是类中的某个Property
A_0 == i.a.a 返回bool型,对比两者是否相等。
游客
登录 | 注册 方可回帖
返回