首页
社区
课程
招聘
[转帖]c#程序防止反编译
发表于: 2019-6-4 12:11 7750

[转帖]c#程序防止反编译

2019-6-4 12:11
7750

当前C# .net语言的应用范围越来越广泛,IIS 的服务器架构后台代码、桌面应用程序的 winform 、Unity3d 的逻辑脚本都在使用。C# .net 具备强大的便捷特性,使得开发成本极低。而作为一款.net 语言,也有它让开发者头疼的弊病——非常容易被反编译。市面上的 Dnspy, ILspy,de4dot等工具可以非常容易反编译出被混淆保护的C# .net 程序。

未经深思加壳保护的 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)直接拖入加壳工具即可完成保护操作,十分方便。并且在效果上已经完全看不到源码中的逻辑。

加密技术:代码加密/代码混淆/碎片代码执行

代码加密:针对dotNet程序,保护IL代码:一种动态运行方法解密被保护代码。把当前代码加密存储为密文,存储起来,当程序运行到被保护函数时候自动解密并且执行,执行之后再擦除代码,执行之后再擦除代码,运行到哪里才解密哪里的代码,黑客无法获得原始的中间语言的指令和内存完整性的代码,由于是纯内存操作所以运行速度快, 性价高的保护手段,建议全加


代码混淆:将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。

· 重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归,精简中间变量,等等。

· 打乱代码的格式。比如删除空格,将多行代码挤到一行中,或者将一行代码断成多行等等。

· 添加花指令,通过特殊构造的指令来使得反汇编器出错,进而干扰反编译工作的进行。

代码混淆器也会带来一些问题。

主要的问题包括:

· 被混淆的代码难于理解,因此调试除错也变得困难起来。开发人员通常需要保留原始的未混淆的代码用于调试。

· 对于支持反射的语言,代码混淆有可能与反射发生冲突。

· 代码混淆并不能真正阻止反向工程,只能增大其难度。因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。


碎片代码执行:深思自主知识产权的最新技术:基于 LLVM 和 ARM 虚拟机技术,自动抽取海量代码移入 SS 内核态模块,极大的降低了使用门槛, 不再需要手动移植算法,可移植的算法从有限的几个增长到几乎无限多,支持的语言也不再限于 C, 这是加密技术的一次综合应用,效果上类似于将软件打散执行,让破解者无从下手。


加密后的效果

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 文件


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 5451
活跃值: (3844)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
2
      
最后于 2019-6-9 01:53 被littlewisp编辑 ,原因:
2019-6-4 13:26
0
雪    币: 3712
活跃值: (1441)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
有木有demo可以体验
2019-6-4 15:53
0
雪    币: 914
活跃值: (2548)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
4
所以是个广告贴?
2019-6-4 17:10
0
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
真的这么虎的马? 。。。。发出来demo吧。。。。
2019-6-4 19:29
0
雪    币: 284
活跃值: (230)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
广告吗
2019-6-4 20:12
0
雪    币: 9613
活跃值: (1670)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
看起来有点牛
2019-6-5 12:36
0
雪    币: 3935
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
没有记错的话,看雪大神就写了一个,并且商业化了
2019-6-8 13:33
0
雪    币: 267
活跃值: (545)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
这个还是算了吧,我见过你们的壳加的几个软件,强度没文章中的那么玄乎,最多就是个动态方法,我随随便便就给你DUMP下来,说白了就是加强版ILProtector。在.NET里面,这个壳和其它.NET的强壳完全不是一个水平的。不是为了喷而喷,确实看不下去了,你们官网的宣传完全是忽悠,https://shell.virbox.com/ 你拿dnspy在2个不同tab下的截图说是加壳前后?这个是糊弄小白还是什么?这么一点强度,居然卖得比其它.NET强壳还贵,能讲点诚信么?
最后于 2019-6-8 17:36 被wwh1004编辑 ,原因:
2019-6-8 17:33
4
雪    币: 237
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
牛逼
2019-6-8 18:09
0
雪    币: 10568
活跃值: (4073)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
看着还不错
2019-6-10 12:54
0
雪    币: 82
活跃值: (715)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
同意9楼看法,现在软件商的节操呢???
2019-6-12 15:46
0
雪    币: 396
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
好像一般般啊
2019-6-12 17:31
0
雪    币: 219
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
nqxcwl 没有记错的话,看雪大神就写了一个,并且商业化了
大佬 能引路下加密软件的名称吗
2019-7-1 14:23
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
15
wwh1004 这个还是算了吧,我见过你们的壳加的几个软件,强度没文章中的那么玄乎,最多就是个动态方法,我随随便便就给你DUMP下来,说白了就是加强版ILProtector。在.NET里面,这个壳和其它.NET的强壳 ...
那么请问有.net强壳推荐不?
2019-7-2 22:36
0
雪    币: 3935
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
NightGuard 那么请问有.net强壳推荐不?
DNGuard HVM  看雪大神  rick  写的~~
最后于 2019-7-3 18:15 被nqxcwl编辑 ,原因:
2019-7-3 18:15
0
雪    币:
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
wwh1004 这个还是算了吧,我见过你们的壳加的几个软件,强度没文章中的那么玄乎,最多就是个动态方法,我随随便便就给你DUMP下来,说白了就是加强版ILProtector。在.NET里面,这个壳和其它.NET的强壳 ...
这个好像主打U3D,UE4的。U3d使用这个加壳不会这么轻易就破解掉的吧。
这个我也不太懂
2019-11-11 17:58
0
雪    币: 123
活跃值: (316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
所以是个广告贴??
2020-7-27 22:45
0
游客
登录 | 注册 方可回帖
返回
//