问题描述
昨天,因产品需求,需要在Windows
操作系统下写一个小工具。
这个小工具中调用一个比较重要的DLL
动态库文件,来完成一些重要的功能。
一般来说,最直接的做法就是调用Win32 API
函数,来动态的加载、获取函数地址、释放:
LoadLibrary(...);
GetProcAddress(...);
FreeLibrary(...);
但是,由于这个动态库比较重要,如果直接把DLL
文件放在文件目录中,就增加了文件被反编译的风险。
也就是说为了提高DLL
文件的安全性,最好不要让用户看到/拿到文件;
即使拿到了文件,也不要让用户很容易的破解文件。
问题解决
关于分析过程就不多说了,这里直接给出目前的处理方式:
1.写一个小工具软件,对 DLL 文件进行加密
使用了AES
对称加密算法,主要是为了管理秘钥简单。
加密后的文件liba_enc.png
与可执行文件放在一起。
此时,如果用户获取到了这个动态库,由于没有秘钥,理论上是无法解开这个文件的。
不过,道高一尺魔高一丈。。。