防止反向工程的方法1(C#)

   

反向工程的简单方法:  

    使用软件:.NET Reflector 。

    如图,随便打开一个DLL或者是EXE

    

    所有代码,包括实现细节可以很清楚的看到,该软件还提供了人性化的导出代码功能,软件使用者无需手动复制代码即可获取所有源码。


  

原因:

 

  基于.Net的编程语言一般都运行在CLR环境上,为了生成可运行在CLR下的DLL,或EXE。需要做一些前期处理:
  将各个语言文件编译成为托管模块。 托管模块由元数据与IL构成。
  

   

 

   

  托管模块由如下几个部分构成,通过元数据可以找到代码的引用关系,通过IL可以拿到所有源码。
  

    

  
  与C/C++等非托管语言生成的指令不同,为了达到良好的兼容性,IL是不直接操作寄存器的,由CLR解析生成相应的操作寄存器的机器语言,故:IL是一种较易反向的机器语言。
  

    

  每一个DLL/EXE都是由一个或多个托管模块构成的,导致与非托管语言相比,.NET生成的DLL/EXE较易反向。
  

  

 
 
 
 

  

基本解决方案:
 
  1.使用代码混淆器 如:Dotfuscator,xeoncode,foxit,.NET Reactor
  2.在1的基础上,核心代码使用C/C++编写
   

  

 
 
 

转载于:https://www.cnblogs.com/E-WALKER/articles/4338393.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值