注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

.NET程序反汇编新贵——JustDeCompile  

2011-11-21 19:43:00|  分类: MSIL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

目前见得最多,名头最大的.NET反汇编利器当然是Lutz Roeder编写的Reflector了,不过自从被收购后,软件就变为收费的了,其实收费没什么不好,商业化的软件能够带来更好的产品和服务,可是试用到期了也就悲剧了,除非你很有钱。另外XenoCode Fox也是一款不错的反汇编软件,同样需要注册,我等穷码农码砖数月的收入,才能买一个licence。最近,Telerik公司的新作JustDecompile则是完全免费的,而且还有一些自己的特色。

首先就是,对于简单流程混淆的程序能够智能连接多个跳转,例如这是我写的一段IL程序:

//简单的Hello,World程序

//采用跳转的方式实现流程混淆,阻止反编译为C#等高级语言
.assembly Castor
{
 .ver 1:0:0:0
}

.class CCC extends System.Object
{
 .method public static void Entry()
 {
  .entrypoint
  br L1
  L2:
  call void [mscorlib]System.Console::WriteLine(string)
  br L3
  L1:
  ldstr "Hello World!"
  br L2
  L3:
  ret
 }
}

编译为EXE文件之后,试图使用Reflector反编译:

.NET程序反汇编新贵——JustDeCompile - Castor - 趁年轻,多折腾

Reflector典型的报错出来了,当然,这个是阻止反汇编为高级语言(例如C#),如果使用IL查看的话,还是能看到所有IL代码的:

.method public static void Entry() cil managed
{
    .entrypoint
    .maxstack 8
    L_0000: br L_000f
    L_0005: call void [mscorlib]System.Console::WriteLine(string)
    L_000a: br L_0019
    L_000f: ldstr "Hello World!"
    L_0014: br L_0005
    L_0019: ret
}
对比源代码,差别不大,这也算是体现了Reflector的基本功能吧,也反映出IL语言能实现高级语言所不具备的功能。
同样的程序,再看看JustDecompile的表现:
对于IL语言:
.method public static     void Entry () cil managed

{   

.entrypoint   

IL_0000: br IL_000f   

.loop   

    {       

        IL_0005: call void [mscorlib]System.Console::WriteLine(string)

        IL_000a: br IL_0019
        IL_000f: ldstr "Hello World!"       

        IL_0014: br IL_0005   

     }
        IL_0019: ret

}
这里就比较意思了,将跳转理解为循环语句,让这个循环只执行一次,呵呵,这个IL语言分析器还挺有意思的,不过还是没有Reflector精炼。然后看看高级语言选项:
public static void Entry()

{    

        Console.WriteLine("Hello World!");    

        break;

}

怎么样?除了那个break是多余之外(语法上完全正确),没有出现任何问题!

另一个优秀的地方是强大的查找功能:

.NET程序反汇编新贵——JustDeCompile - Castor - 趁年轻,多折腾

 可以使用类型查找,也可以使用变量符号查找。

Find Usage功能。这个功能和Reflector下的Analyze差不多,就是检验该方法被其他方法调用,自己又调用了其他的方法。

.NET程序反汇编新贵——JustDeCompile - Castor - 趁年轻,多折腾

总体上来说这款反编译程序还是很不错的,在某些方面虽然和Reflector略有差距,而且由于刚开始开发的原因,软件不能加载插件,所以功能有限。但是由于采用了有特色的反编译引擎,处理流程混淆的程序还是有一定的效果的,因此在Reflector搞不定的时候不妨试试,或许会有意想不到的效果。

想测试一下的朋友,可以到这里:http://www.telerik.com/products/decompiler.aspx
  评论这张
 
阅读(3296)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016