重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以通过加壳来防止反编译。。。
凌海ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
但是现在许多公开的反编译软件都只能反编译出窗体,所以您不用担心。。。
VB是直接编译成机器代码的,基本不用顾虑被他人反编译的问题。
如果你说的是VB.NET,那么它是被编译成中间语言的,则可以使用VS提供的一个混淆器阻止他人反编译。
.Net软件
特点,
些强
编译工具
.Net
执行文件进行反编译操作,并
相应
IL代码甚至
源代码
即使
采用混淆工具
及强命名工具
能
根本
解决问题,代码依
容易
Reflectoer等工具反编译源代码
软件加密狗:威步(WIBU)
CodeMeter,AxProtector(for.net)两款软件加密狗性能非
错
反编译
问题,与传统
代码混淆工具(Obfuscator)
同,AxProtector
完全阻止
.NET
程序集(由
C#,
VB.NET,
Delphi.NET,
ASP.Net…
等语言编写)
反编译
通俗
讲,AxProtector
破解者
您
.NET
代码
间构建
强
防破解保护屏障,
基于
Windows
基于
MSIL
兼容格式文件
原始
.NET
代码完整
加密
封装
本
代码内,
论何
都
释放
硬盘,
于破解者
见
与单纯
.net加密软件
同,AxProtector与CodeMeter硬件加密狗配套餐使用,采用
更
严密
密钥管理,及
先进
AES、RSA、ECC等加密算
存储或传输密钥,保证通讯安全
.Net代码编译
.class
包含
源代码
所
信息(
包括注释),尤其
其
保存
调试信息
候
所
按照
式编译
.class
文件
非
轻易
反编译
般软件
发商
采用
种叫做混淆器
工具
混淆器
作用
编译
代码进行混淆,使
其
反编译或者反编译
代码混乱难懂
由于混淆器
混淆
名称或流程,
能防止源代码
反编译,
混淆器
作用
增加
反编译
难度,
终
结
治标
治本
于
些掌握工具
说几乎
透明
AxProtector
款真
意义
加密源代码、防止反编译
.net软件加密软件
AxProtector加密
.net原代码,任何
候原代码都
能
原
硬盘
采用AxProtector加密
.net代码
程序调用或执行某
段函数
候,才能通
AxProtectorClass
内存
解密
返
程序
执行,运行
迅速立即加密
种随机加密、按需解密原代码
功能,能
防止.Net程序
反编译,同
能够
防止API加密点
摘除
效
保证
源代码
执行效率
安全性
如果你想开发商业软件还是别用.net了,速度慢,易被反汇编,目标机器也需要安装对应版本的.net架构,这几条就给程序判了死刑
C# 编写的代码通过VS编译器生成 dll 或 exe ,很容易被一些反编译工具查看到源码或对源码进行修改。为防止代码被反编译或被篡改,我们可以进行一定的防范措施。但不能杜绝,因为DotNet编写代码运行必须编译成IL 中间语言,IL是很规则,同时也很好反编译。
反编译防范措施:
设置项目代码反汇编属性
混淆
方法一:防止 Ildasm.exe(MSIL 反汇编程序) 反汇编程序集
方法很简单在项目文件AssemblyInfo.cs中增加SuppressIldasm属性。
当项目中增加SuppressIldasm属性后在使用ildasm.exe反编译代码,会提示:"受保护的模块 -- 无法进行反汇编"
ildasm.exe 读取项目中包含 SuppressIldasm 属性就不对此程序集进行反编译。但ILSyp,Reflector等反编译工具针对程序集设置SuppressIldasm属性置之不理,一样可以反编译源码。
缺点:可见SuppressIldasm 属性只针对ildasm.exe工具起效果,同时也能删除ildasm.exe工具的此项限制。参考:《去掉ILDasm的SuppressIldasmAttribute限制》
方法二:混淆
混淆原理:将VS编译出的文件(exe 或 dll)通过ildasm对文件进行重命名,字符串加密,移动等方式将原始代码打乱。这种方式比较常见。
VS2013 自带混淆工具:工具--PreEmptive Dotfuscator and Analytics
但VS2013自带Dotfuscator 5.5 需购买激活才能使用全部功能。目前百度提供 DotfuscatorPro 4.9 破解版版本下载。
打开 DotfuscatorPro 4.9 主界面
Settings-Global Options 全局配置常用功能配置:Disable String Encryption=NO 启用字符串加密
选择需混淆C#编译代码(dll 或 exe)其中Library不要勾选,否则有些类、变量等等不会混淆;
Rename 重命名配置常用功能配置: 勾选 = use enhanced overload induction 使用增强模式重命名方案 Renaming Scheme = Unprintable (不可打印字符,即乱码),也可以选择其他如小写字母、大写字符、数字的方式。
String Encryption 字符串加密勾选需要加密字符串文件(exe 或 dll)
可根据各自需求可进行其他相关配置。(如:control flow,Output,Setting -Build Settings,Settings -- Project Properties等)最后生成混淆文件 Build Project。
Build Project 生成混淆项目错误:Could not find a compatible version of ildasm to run on assembly C:\Users\***bin\Debug\WindowsFormsApplication1.exe.??This assembly was originally built with .NET Framework v4.0.30319.Build Error.
处理方法:ILASM_v4.0.30319 = C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exeILDASM_v4.0.30319 = C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ildasm.exe [安装VS版本不同对应目录会有所变化]
混淆代码对比
未使用混淆工具,反编译出的源码:
使用混淆工具,反编译出的源码:
效果很明显,很难看出反编译代码所写的真正逻辑。
缺点:C#代码通过混淆工具生成后,增加了很多转换过程。这使得反编译工具无法很直观看到源码真正逻辑。但源码代码过多转换会使软件本身运行效率降低,甚至会出现报错情况。
.net是中间语言十分容易被反编译,通常都使用混淆作为一种加密手段。不过混淆不是真正防反编译,只不过反编译后代码难读懂而已,并且现在破解混淆的方式也比较多。所以真正要防反编译还是需要通过加密代码的方式。比如德国威步他们提供一种对.NET代码完全加密保护的方式来防止反编译的,曾经测试过用Reflector(.net反编译工具)反编译他们加密软件加密的.NET程序,的确完全无法看到源代码了。