反混淆后的.net文件编译

   因为工作的需要,研究一下别人的软件。这篇文章主要是分享一下过程,其中没有什么技术性的东西,只是想告诉那些和我一样深深被反编译出来的代码,在编译过程中显示出来的错误数量惊呆的小伙伴们,这些错误或许没有你想象的那么厉害,当然,你必须要要有足够的基础去修改那些错误。


   首先,打开reflector,发现代码被混淆过,看到那些乱七八糟的方法名称,你懂得。下载de4dot-3.0.3,反混淆后,将文件反编译成c#工程,本来想弄成mc++,但这种托管的c++和我最熟悉的vc6差距大着,悲剧,还是c#看着舒服。

    用vs2010打开工程编译一下,好家伙600多个错误,文件差不多有2000多个。花了一天时间一一校订。首先将跟目标代码无关的部分注释掉,目标是自己关心的那部分。现在把遇到的几个主要错误总结一下。

一提示类与方法没有定义,主要是未添加命名空间,小部分在上下文直接没找到定义的类,这部分直接注释掉,不管它
二很多类的属性获取,如class.get_Type_Num();尽管类里面有定义,但是总是提示方法出错,有一些并非直接返回一个属性值,而是做了一些运算,我只能用笨的办法写一个函数代替它或者直接pass。
三部分结构体转换失败,运算符号重载
四一些using()引起的问题,去掉using就好了。
五还有一些出来的是0++,1++,这样的问题,直接把++去掉
六vs2010类型转换的要求挺高的,不知道工程里面哪里可以设置,很多都是int和uint之类不能转换的错误
七百度求助,能删就删
         

  经过一番折腾,编译成功,但很快你会发现有一种然并卵的感觉。一运行遇到 “类型初始值设定项引发异常”的错误,好了,经过调试,定位到出错地点,问题得到解决,是静态成员初始化引起的问题。两个静态成员顺序反了,前者引用了还未初始化的后者。好了,打开,运行基本正确。

    只想说,在进步的路上,最大的障碍或许就是自己


       


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值