导航:首页 > 源码编译 > netcore31dll防止反编译

netcore31dll防止反编译

发布时间:2022-05-29 00:32:10

A. 如何让C++写的dll不被反编译

简单回答:
1、理论上不能保证程序不被反编译。
2、一些加壳软件可以做到加大被反编译的难度,迫使操作者先解壳才能做反编译,但同时会降低程序的运行效率。
3、当前的技术条件下,一般而言,反编译出的“源代码”一般而言并不能作学习,参考的源代码,多数情况下只能用于分析区部片断分析,主要用于破解或小范围类修改。
4、一些简单的加壳软件:ASPACK、UPX、PECompact等,如果想尝试,自个去搜索下载后试试。加壳后的软件还有可能被某些杀软当成恶意软件。
5、这也正是很多对安全要求高的系统使用“三层架构”(类似访问网页/网站)的原因。因为在三层架构中,核心软件、数据不被用户直接接触。

************以下是相关知识,有耐心可看看************
一、关于反编译与破解。
1、以当前的技术来说,理论上,所有的程序都存在被反编译的可能。
2、但是反编译出来的代码并不一定能被技术不高的人看懂,因为反编译出来的“源代码”与编写者写出的原代码在80%以上是不同的。这是因为反编译的原理是根据机器码(或中间码),让机算机进行反向生成高级语言,而不是找出编写者原有的代码,找出原有的代码是不可能的。反编译出来的代码在可理解性、可阅读性上,一般而言是非常差的。
3、但是,这并不代码反编译出来的“源代码”没有价值,对于内行来说,分析反编译出来的代码中的某些特定片段,就可以对程序进行破解,找出程序的关键点、口令、数据来源等等。因为破坏总是比建设要容易,分析局部比规划全局要容易得多。
4、如果考虑到被反编译将关键代码进行特殊处理的话,可能加大相关的难度,比如将特定的字符串分成多个字串在程序中存储,或是进行加密后存储,在使用时合成/生成,不用时即时在内存中清除等等……。
5、反编译后对关键部分的定位往往是根据字符串来进行的,比如在用户没有注册时,跳出一行对话,告诉用户“请注册后再使用”,破解者就会在反编译后追查这个字串所在,然后查到这个字串对应的变量与地址,再追查调用这个变量或地址的代码,然后再延伸查到什么情况下调用“调用这个变量或地址的代码”,最后,设定跳过语句。这就是最典型的破解注册的方法。破解完再将修改了的“源代码”进行编译,或是根据“源代码”直接修正程序中对应的代码,OK,破解版正式完成。
二、关于加壳。
1、理论上,同样,没有破解不了的壳。
2、但是有些加壳软件使用了一些特别的方法,使得破解壳的难度变得非常难,技术不够的朋友很难下手,比如将原程序代码拆分、变型、植入自校验等等技术。
3、但加壳软件同样是程序,它自身就存在被反编的可能,加了壳可以类比成,在一个木箱外面再加个保险柜。但千万别以为保险柜就一定是保险的,面对各种技术开锁、暴力开箱,再强的保险柜也只能是加大难度而已。
4、越复杂的加壳,就会使得程序运行时效率降得越低,这是必然的,因为原本只关注目标任务的程序现在还要时时提防着被提取、被监测。

B. 用.NET做了一个dll文件,我想对dll文件加密(不能让该文件被反编译成代码)怎么做才能实现

据我了解,好像可以加个什么签名字符串,具体的我也不清楚。正好我也要做这方面的要求设置,相互学习一下

C. C# dll 文件有什么好的混淆工具防止反编译

强力推荐Postbuild2007,方便简单,混淆时不仅能通过变量名混淆,还能通过流程跳转混淆,实乃加密混淆,防反编译之居家旅行之必备良药。
关键现已到年末,年底大酬宾,不要三四千,也不要一两千,免费破解版,免费,免费,免费!
亲,选择Postbuild2007就是选择安全,选择Postbuild2007就是选择放心,安全放心,拒绝三牛奶制品,Postbuild2007,你不二的选择!

D. 如何对编译的dll文件进行加密来防止反编译

使用过.NET的程序员都知道,.NET是一个巨大的跨时代进步,它开发效率高、功能强、界面美观、耐用、新的语言C#已经提交为行业规范、CLR共公运行库资源丰富,这所有的特点标志着它成为主流编程语言是必然的。
可是他也有一个缺点,那就是编译好的程序集可以完全被反编译成源代码,这给一些不法份子提供了很好的机会,试想想,您辛苦的劳动成果就这样轻易的给别人利用,是多么不公平的事阿?所以如何保护我们的知识产权成了一个大问题。
MAXTOCODE 已经完全超越了传统的混淆手段来保护源代码的方式,他将完全加密您的代码,使您的代码完全没有办法反编译。保护强度已经不是混淆器可以与之抗衡,是目前保护强度最大,最完美的.NET产品保护方案。
MAXTOCODE 是 Aiasted.SOFT 完全自主开发的一款 .NET 代码保护工具。它是目前世界上高强度保护工具之一。
第一种代码保护方案是混淆,这是一个不错的方案,可惜强度还是无法保证,如果要做一个大的逆向工程有一定困难,但针对某个算法或功能进行解读还是很容易的。反观混淆原理则发现,混淆其实只是一个与障眼法差不多的技术。第二种就是MAXTOCODE的保护技术了,MAXOTCODE 采用了难以理解的机器语言来加密您的.NET程序集,(特别注意:MAXTOCODE的强度建立在加密算法之上,而不上简单的混淆。)在程序集运行时运态解放源代码,所以在原理上已经比混淆强度提高了许多。我们保护您所有的代码,不让不法份子看到您任何一个有效的代码,使不法份子完全无法被反编译。

E. 如何有效防止C#编写的DLL被反编译

为防止这类反向工程的威胁,最有效的办法是模糊。
模糊工具运用各种手段达到这一目标,但主要的途径是让变量名字不再具有指示其作用的能力、加密字符串和文字、插入各种欺骗指令使反编译得到的代码不可再编译。
例子:
对未经模糊处理的代码执行反向工程:
Private Sub CalcPayroll(ByVal employeeGroup As SpecialList)
While employeeGroup.HasMore
employee = employeeGroup.GetNext(True)
employee.updateSalary
DistributeCheck(employee)
End While
End Sub

同样的代码,经过模糊处理再执行反向工程:
Private Sub a(ByVal b As a)
While b.a
a = b.a(True)
a.a
a(a)
End While
End Sub

显然,两段代码的处理逻辑相同。但是,要说清楚第二段代码到底在做些什么极其困难,甚至要判断它正在访问哪些方法、哪些变量也很困难。
这种改变变量名称的功能是可配置的,例如,假设正在构造一个DLL,可以要求不改动API,有趣的是,这一处理过程显然只是简单地把大量变量的名称简缩成单个字符,但获得了非常好的模糊效果。

F. .NET 编译出来的DLL文件,如何才能不被反编译

1.有那种代码混乱器,其实也就是改改类名字等,常用的有
DotFuscator, .NET Reactor, xenocode 。。。你可以自己搜索下载了
2.当代码量很大的时候,反编译去读MSIL的代码也是很辛苦的,工程量很大
3.一般.net写的程序都是基于web的,放在服务器上,WebService,所以盗版破解也显得不是那么有意义了。。。

友情提醒:事先备份好你的代码!

G. C#如何防止被别人反编译

C# 编写的代码通过VS编译器生成 dll 或 exe ,很容易被一些反编译工具查看到源码或对源码进行修改。
为防止代码被反编译或被篡改,我们可以进行一定的防范措施。但不能杜绝,因为DotNet编写代码运行必须编译成IL 中间语言,IL是很规则,同时也很好反编译。

反编译防范措施:

H. .net 写的程序的DLL如何才能真正的无法反编译

先用混淆器混淆,然后用加壳软件加壳

没有什么能做到真正的无法反编译,你所做的只能是增加反编译工作量和难度,迫使别人放弃,哈哈

I. 如何防止程序员反编译

java从诞生以来,其基因就是开放精神,也正因此,其可以得到广泛爱好者的支持和奉献,最终很快发展壮大,以至于有今天之风光!但随着java的应用领域越来越广,特别是一些功能要发布到终端用户手中(如Android开发的app),有时候,公司为了商业技术的保密考虑,不希望这里面的一些核心代码能够被人破解(破解之后,甚至可以被简单改改就发布出去,说严重点,就可能会扰乱公司的正常软件的市场行为),这时候就要求这些java代码不能够被反编译。

这里要先说一下反编译的现象。因为java一直秉持着开放共享的理念,所以大家也都知道,我们一般共享一个自己写的jar包时,同时会共享一个对应的source包。但这些依然与反编译没有什么关系,但java的共享理念,不只是建议我们这样做,而且它自己也在底层上“强迫”我们这么做!在java写的.java文件后,使用javac编译成class文件,在编译的过程,不像C/C++或C#那样编译时进行加密或混淆,它是直接对其进行符号化、标记化的编译处理,于是,也产生了一个逆向工程的问题:可以根据class文件反向解析成原来的java文件!这就是反编译的由来。

但很多时候,有些公司出于如上述的原因考虑时,真的不希望自己写的代码被别人反编译,尤其是那些收费的app或桌面软件(甚至还有一些j2ee的wen项目)!这时候,防止反编译就成了必然!但前面也说过了,因为开放理念的原因,class是可以被反编译的,那现在有这样的需求之后,有哪些方式可以做到防止反编译呢?经过研究java源代码并进行了一些技术实现(结果发现,以前都有人想到过,所以在对应章节的时候,我会贴出一些写得比较细的文章,而我就简单阐述一下,也算偷个懒吧),我总共整理出以下这几种方式:

代码混淆

这种方式的做法正如其名,是把代码打乱,并掺入一些随机或特殊的字符,让代码的可读性大大降低,“曲线救国”似的达到所谓的加密。其实,其本质就是打乱代码的顺序、将各类符号(如类名、方法名、属性名)进行随机或乱命名,使其无意义,让人读代码时很累,进而让人乍一看,以为这些代码是加过密的!

由其实现方式上可知,其实现原理只是扰乱正常的代码可读性,并不是真正的加密,如果一个人的耐心很好,依然可以理出整个程序在做什么,更何况,一个应用中,其核心代码才是人们想去了解的,所以大大缩小了代码阅读的范围!

当然,这种方式的存在,而且还比较流行,其原因在于,基本能防范一些技术人员进行反编译(比如说我,让我破解一个混淆的代码,我宁愿自己重写一个了)!而且其实现较为简单,对项目的代码又无开发上的侵入性。目前业界也有较多这类工具,有商用的,也有免费的,目前比较流行的免费的是:proguard(我现象临时用的就是这个)。

上面说了,这种方式其实并不是真正加密代码,其实代码还是能够被人反编译(有人可能说,使用proguard中的optimize选项,可以从字节流层面更改代码,甚至可以让JD这些反编译软件可以无法得到内容。说得有点道理,但有两个问题:1、使用optimize对JDK及环境要求较高,容易造成混淆后的代码无法正常运行;2、这种方式其实还是混淆,JD反编译有点问题,可以有更强悍的工具,矛盾哲学在哪儿都是存在的^_^)。那如何能做到我的class代码无法被人反编译呢?那就需要我们下面的“加密class”!

加密class

在说加密class之前,我们要先了解一些java的基本概念,如:ClassLoader。做java的人已经或者以后会知道,java程序的运行,是类中的逻辑在JVM中运行,而类又是怎么加载到JVM中的呢(JVM内幕之类的,不在本文中阐述,所以点到为止)?答案是:ClassLoader。JVM在启动时是如何初始化整个环境的,有哪些ClassLoader及作用是什么,大家可以自己问度娘,也不在本文中讨论。

让我们从最常见的代码开始,揭开一下ClassLoader的一点点面纱!看下面的代码:

Java代码

J. C#怎样防止反编译

我使用的方法是利用加壳工具:virboxProtectorStandalone。直接进行加壳。高级混淆、虚拟化代码、智能压缩等加密策略。如果要授权控制,可使用许可版本的virboxProtector。

未经加壳保护的 ILspy 反编译效果如下:

public int add(int a, int b){
return a + b;}public int div(int a, int b){
return a / b;}public int mul(int a, int b){
return a * b;}public int sub(int a, int b){
return a - b;}

解决方案:

深思自主研发了为 C# .net 语言做保护的外壳(Virbox Protector)。将C# .net 编译成的执行程序(.exe),动态库(.dll)直接拖入加壳工具即可完成保护操作,十分方便。并且在效果上已经完全看不到源码中的逻辑。

加密后的效果

public int add(int a, int b){
return (int)dm.dynamic_method((object)this, System.Reflection.MethodBase.GetCurrentMethod(), 16416u, 21, 16384u, 32u, 31516u, 5).Invoke(this, new object[]
{
this,
a,
b
});}
public int div(int a, int b){
return (int)dm.dynamic_method((object)this, System.Reflection.MethodBase.GetCurrentMethod(), 16956u, 21, 16924u, 32u, 31516u, 2).Invoke(this, new object[]
{
this,
a,
b
});}
public int mul(int a, int b){
return (int)dm.dynamic_method((object)this, System.Reflection.MethodBase.GetCurrentMethod(), 16776u, 21, 16744u, 32u, 31516u, 3).Invoke(this, new object[]
{
this,
a,
b
});}
public int sub(int a, int b){
return (int)dm.dynamic_method((object)this, System.Reflection.MethodBase.GetCurrentMethod(), 16596u, 21, 16564u, 32u, 31516u, 4).Invoke(this, new object[]
{
this,
a,
b
});}

架构支持

IIS 服务架构的后台逻辑 DLL 文件

windows PC 应用程序 EXE 文件

windows PC 应用程序动态库 DLL 文件

UG等第三方绘图工具使用的 DLL 文件

Unity3d 编译使用的 DLL 文件

阅读全文

与netcore31dll防止反编译相关的资料

热点内容
程序员那么可爱陆离跳水是哪集 浏览:15
如何制作cdn服务器 浏览:109
写java加密程序 浏览:657
菜鸟数据分析pdf 浏览:287
单片机做实用东西 浏览:647
我的世界最强斗罗服务器怎么觉醒武魂 浏览:925
密友圈app怎么切换用户登录 浏览:214
我把程序员当爱豆追 浏览:972
android判断电话接通 浏览:644
大孔文件夹 浏览:783
反诈骗app在哪里下载 浏览:525
军工程序员面试视频 浏览:811
质心算法原理 浏览:421
163smtpphp 浏览:667
java缓存使用 浏览:918
java验证码识别ocr 浏览:877
马云生产服务器 浏览:214
上哪里找app新用户 浏览:542
王陆807词汇pdf 浏览:966
linux命令行开设置窗口 浏览:132