开发笔记:如何对【动态链接库】文件进行加密保护?

本文介绍了如何通过加密动态链接库(DLL)文件并将其解密到内存缓冲区中来提高安全性,避免文件被轻易反编译。在Windows系统下,作者利用开源代码实现了从内存加载加密DLL的功能,但在Linux系统中尚未找到类似解决方案。
摘要由CSDN通过智能技术生成

问题描述

昨天,因产品需求,需要在Windows操作系统下写一个小工具。

这个小工具中调用一个比较重要的DLL动态库文件,来完成一些重要的功能。

一般来说,最直接的做法就是调用Win32 API函数,来动态的加载、获取函数地址、释放:

LoadLibrary(...);

GetProcAddress(...);

FreeLibrary(...);

但是,由于这个动态库比较重要,如果直接把DLL文件放在文件目录中,就增加了文件被反编译的风险。

也就是说为了提高DLL文件的安全性,最好不要让用户看到/拿到文件;

即使拿到了文件,也不要让用户很容易的破解文件。

问题解决

关于分析过程就不多说了,这里直接给出目前的处理方式:

1.写一个小工具软件,对 DLL 文件进行加密

使用了AES对称加密算法,主要是为了管理秘钥简单。

 

加密后的文件liba_enc.png与可执行文件放在一起。

此时,如果用户获取到了这个动态库,由于没有秘钥,理论上是无法解开这个文件的。

不过,道高一尺魔高一丈。。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值