首页
社区
课程
招聘
[求助]怎么用Mono.Cecil获得函数中局部变量的名称
发表于: 2010-5-19 14:50 6648

[求助]怎么用Mono.Cecil获得函数中局部变量的名称

2010-5-19 14:50
6648
我通过MethodDefinition.Body.Variables获得了VariableDefinition

但是其Name属性得到的是V_0 ,V_1,V_2这样的名称,并不是真实的变量名

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 6772
活跃值: (3689)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
应该不能得到原先的变量名吧,因为在IL和元数据中并没有记录原变量名,
不知讲错了没有,楼下继续...
2010-5-19 15:02
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那怎么可能,你去看看Ildasm和Reflector的反编译结果...
2010-5-20 10:46
0
雪    币: 6772
活跃值: (3689)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ildasm中的变量是V_0...

Reflector中的变量是根据类型经过处理的(num1,text1...)
上传的附件:
  • 2.jpg (18.60kb,113次下载)
  • 1.jpg (11.63kb,115次下载)
2010-5-20 12:00
0
雪    币: 6772
活跃值: (3689)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
LZ,我最近也在学cecil,有QQ没,一起聊下...
2010-5-20 12:08
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不厚道,也不先留,我的是:544125362
2010-5-20 13:44
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我不知道你是啥版本的Ildasm,反正我这里有名字

.method private hidebysig instance void  Foo(int32 par) cil managed
{
  // 代码大小       37 (0x25)
  .maxstack  2
  .locals init ([0] int32 loc,
           [1] int32 i,
           [2] bool CS$4$0000)
  IL_0000:  nop
  IL_0001:  ldc.i4.3
  IL_0002:  stloc.0
  IL_0003:  ldloc.0
  IL_0004:  call       void [mscorlib]System.Console::WriteLine(int32)
  IL_0009:  nop
  IL_000a:  ldc.i4.0
  IL_000b:  stloc.1
  IL_000c:  br.s       IL_001b
  IL_000e:  nop
  IL_000f:  ldloc.1
  IL_0010:  call       void [mscorlib]System.Console::WriteLine(int32)
  IL_0015:  nop
  IL_0016:  nop
  IL_0017:  ldloc.1
  IL_0018:  ldc.i4.1
  IL_0019:  add
  IL_001a:  stloc.1
  IL_001b:  ldloc.1
  IL_001c:  ldc.i4.s   10
  IL_001e:  clt
  IL_0020:  stloc.2
  IL_0021:  ldloc.2
  IL_0022:  brtrue.s   IL_000e
  IL_0024:  ret
} // end of method Window1::Foo
2010-5-20 13:55
0
雪    币: 6772
活跃值: (3689)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你的Ildasm可以看到变量名?我的版本:2.0.50727

另外你的号码在群里已经有了.呵呵
2010-5-20 15:04
0
雪    币: 446
活跃值: (723)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
局部变量是不存在程序集中的,你看的这个应该是从.PDB中读出来的
还有Reflector是会自动生成变量名称的
2010-5-24 09:53
0
游客
登录 | 注册 方可回帖
返回
//