代码安全-exe的代码签名和代码混淆加密

信息安全相关 - 建设篇


系列文章回顾

第一章 传输安全-LDAP协议安全加固
第二章 安全审计-Linux用户命令全审计
第三章 主机安全-Windows&Linux的SSH安全加固


代码安全-exe的代码签名和代码混淆加密

前言

本案例仅实测CSharp(C#)的程序集、C/S架构的EXE程序包,其他编程语言的程序包未实测。

实施步骤

1. C#程序的程序集引用使用强命名(可选)
2. Windows Server AD CA 制作自定义的证书模板,用于代码签名
3. 生成拥有自签名CA的代码签名证书和私钥文件
4. C#程序的代码进行混淆加密
5. 给C#的EXE程序文件加数字签名


C#程序的程序集引用使用强命名(可选)

sn.exe /?				# 帮助信息
sn.exe -k keyPair.snk	# 生成强命名密钥文件

### C# Program程序集设置exe程序集的强命名
<SignAssembly>True</SignAssembly>
<AssemblyOriginatorKeyFile>keyPair.snk</AssemblyOriginatorKeyFile>

Windows Server AD CA 制作自定义的证书模板,用于代码签名

使用PowerShell制作自签名代码证书
参考 创建自签名证书, 对exe文件进行数字签名 完成



Windows Server AD CA 证书模板制作代码签名证书

mmc.exe --> 添加/删除管理单元 --> 证书模板

0
1
2
3



mmc.exe --> 添加/删除管理单元 --> 证书颁发机构

4
5



生成拥有自签名CA的代码签名证书和私钥文件

mmc.exe --> 添加/删除管理单元 --> 证书 - 当前用户

6
7
8
9

代码证书注册的证书属性配置参数如下

使用者名称
公用名=xxx Technology Inc.	# CN
组织单位=xxx Department		# OU
单位=xxx Technology Inc.	# O
省/市/自治区=GuangDong		# S 
区域=GuangZhou				# L
国家/地区=CN					# C
电子邮件=xxx@.xxx.com		# E
域组件=domain				# DC(选填)
域组件=com					# DC(选填)

备用名称
用户主体名称=custom			# 必填
用户主体名称=custom.exe		# 必填

其他名称
对象ID=1.3.6.1.4.311.60.2.1.3
值=43 4e							# 选填. 43 4e 是CN的十六进制

对象ID=1.3.6.1.4.311.60.2.1.2
值=47 75 61 6e 67 44 6f 6e 67		# 选填. 47 75 61 6e 67 44 6f 6e 67 是[省]的十六进制, 本案例写GuangDong

对象ID=1.3.6.1.4.311.60.2.1.1
值=47 75 61 6e 67 5a 68 6f 75		# 选填. 47 75 61 6e 67 5a 68 6f 75 是[市]的十六进制, 本案例写GuangZhou

完整配置如下图
10
11
12
13
14

综上步骤完成代码签名证书的证书模板生成、代码签名证书的生成、私钥的导出和设置私钥密码
15



C#程序的代码进行混淆加密



给C#的EXE程序文件加数字签名

signtool.exe /?		# 帮助信息  软件加签工具
signtool sign /f <pfx代码签名证书的绝对路径> /p <私钥密钥> /v /fd SHA256 custom.exe		# 软件加签
signtool timestamp /t http://timestamp.digicert.com custom.exe		# 给数字签名证书添加时间戳, 由timestamp.digicert.com提供可信时间戳
signtool verify		# 软件验签


参考来源

  1. Sn.exe(强名称工具) - .NET Framework | Microsoft Learn
  2. SignTool.exe(签名工具) - .NET Framework | Microsoft Learn
  3. 为Windows Defender应用程序控制创建代码签名证书 - Windows Security | Microsoft Learn
  4. 创建自签名证书, 对exe文件进行数字签名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歪果仨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值