.net 的商业软件如何做到不被其他人逆向出源码?

2017-04-22 20:42:03 +08:00
 phantomer

.net 的商业软件如何做到不被其他人逆向出源码? 楼主目前工作遇到一个甲方希望自己的.net 商业软件无法被逆。 楼主多方打听了几个好基友,搞二进制的大佬,他们对.net 这方便也是比较接触的少,问了几家安全公司也几乎没搞加固.net 这方面的产品。

所以我想问下大家,或大家所在的公司开发的.net 商业软件是如何加壳和混淆代码的?

7827 次点击
所在节点    .NET
31 条回复
phantomer
2017-04-22 20:43:36 +08:00
LZ 也给几个二进制大佬给的方案给了客户看,但是客户做依旧是可以被清楚的逆回来,看到源码
Cbdy
2017-04-22 20:48:12 +08:00
之前在 v 站看到过 Java 软件反逆向工程的讨论,可以去找来参考一下
我感觉无外乎动中间码,动编译器和运行时了
xenme
2017-04-22 20:48:18 +08:00
先混淆名称,即使逆向完,看起来也头疼
sun1991
2017-04-22 20:48:47 +08:00
keyword: .net obfuscator, 增加逆向难度. 要不考虑核心算法用 C 写.
coderfox
2017-04-22 20:49:53 +08:00
用 CoreCLR ,修改文件解析部分做加密。
可以参考腾讯做 Unity 加密的过程,以及 KLab 做 lua 加密的过程。
liyvhg
2017-04-22 20:50:30 +08:00
加多层壳上硬件 key 授权、上网络认证
然而都没有好的办法防破(和楼主的想法可能有点出入)
.net 是否是一种运行时解析的语言?
JustFuckingDoIt
2017-04-22 20:50:32 +08:00
混淆
JustFuckingDoIt
2017-04-22 20:52:18 +08:00
检测逆向工具,发现就崩溃或者格硬盘
lany
2017-04-22 20:53:03 +08:00
DNGuard 能起到一部分作用
h4x3rotab
2017-04-22 20:56:18 +08:00
混淆、加猛壳。关键代码能放服务器就放服务器,不能可以考虑用 c++写。
Pyjamas
2017-04-22 21:05:59 +08:00
混淆、反调试,目的在于增加逆向成本,当逆向成本过大的时候人家就不会来搞你了。
无法被逆感觉不可能啊
Mutoo
2017-04-22 21:08:57 +08:00
商业应用可以考虑硬件加密狗咯,关键代码放到加密狗里,其它部分被逆向也没什么用。
typcn
2017-04-22 21:12:27 +08:00
90% 以上的工具全是垃圾,没什么用处

我觉得唯一有难度的就是 DNGuard ,免费版也没用,那个商业版开了 HVM 之后效果非常强,之前遇到一软件,搞了一周多没搞定。
kokutou
2017-04-22 21:31:15 +08:00
搜索 任意加密工具的名字 + 看雪
就知道大概的强度了。。。
Magentaize
2017-04-22 22:13:20 +08:00
用 IL 写,逆向出来是不能被 MSBuild 编译的
hjc4869
2017-04-22 22:16:24 +08:00
这种需求一般混淆一下让逆出来的代码不可维护就差不多了吧
neoblackcap
2017-04-22 22:19:16 +08:00
纵观各家的解决方案,我认为还是硬件狗最实际,而且最好是要求客户签 EULA , EULA 里面写明不允许逆向否则走法律途径。
visonme
2017-04-22 22:41:30 +08:00
三四年前看雪论坛的关于 net 的安全讨论还是很火的,上面也有不少这方面的资料,楼主可以搜搜,或许能找到一些有用的东西。(记得看雪某牛还出了本关于 net 安全的书,也可以看看,有几年了)

说说自己以前公司的做法吧。
1. 加壳 /混淆是肯定的,买商业软件,这些钱省不得。
2. 对于部分核心的代码,自己内部做加密混淆或者模糊处理。
3. 不要直接启动 net 主程序,通过 shel (一个简单的 exe 应用) l 来启动, shell 的作用就是做到一个环境的检测(我们那时候主要做调试环境和相关进程的检测)。
4.通过 hack 技术,主要通过 hook 部分底层函数。
czkwg8
2017-04-22 23:25:04 +08:00
早已讨论过这个问题
核心部分改用 C\C++编写
.net 始终还是比较容易被逆的
shot
2017-04-22 23:25:42 +08:00
https://github.com/yck1509/ConfuserEx

功能非常强大,对付 中低水平的反编译和逆向工程绰绰有余。
但是由于被黑客用于病毒加壳,当混淆等级过高时有很大几率被杀毒软件误伤,特别是某国产数字厂。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356688

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX