给文件加密并执行

a1584604816 2021-03-01 11:12:27
使用场景是:先通过工具或者c#代码对指定文件加密,然后能通过自己的管理软件或者C#代码打开此文件。不能以其他形式或单独执行此加密后的文件。
之前没有做个这方面,不知道有什么解决方案,请大神们给点意见
...全文
731 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
changjiangzhibin 2021-03-05
  • 打赏
  • 举报
回复
ConfuserEx是你要的么?
wanghui0380 2021-03-05
  • 打赏
  • 举报
回复
当然我觉着,你甚至都不想做啥加密。你恐怕只是想做个“保险箱” 如果是保险箱,其实根本就逻辑,也没难度 1.你的保险箱程序.exe 2.把你要保护的exe拖动到保险箱程序。直接DES加密后直接覆盖原来的exe,虽然他还是exe,还是那个名字。但是他的PE文件头早就破坏了,所以在点击运行,系统会弹框非PE可执行文件 3.现在想运行他,只能在打开你的保险箱,然后通过解密释放(当然解密释放可以释放到内存,也可以释放到成一个不在可见文件系统的影子文件。) 4.你要C#打开,没问题啊。还是一样的,DES是你加密的,当然你能解密。同样释放到内存后加载,还是释放到影子文件里加载,你自己看着办
wanghui0380 2021-03-05
  • 打赏
  • 举报
回复
额,如果你不打算接触文件系统的话。我建议你结帖直接购买成品 因为你不打算接触那块东西,只是不停回复需求无助解决问题。 加密/解密,加壳/解壳另外说-----------最起码,我把一个exe用记事本打开,然后在头部写入200个“5”字符,他就破坏了PE的文件结构,系统无法识别自然不能正确识别PE文件头。 如果说我在打开的时候,把找个200个“5”去掉,自然系统又能识别了 所以,问题在系统文件系统的“打开”-“关闭”过程 所以你无需在重复贴需求了。这种只能是在玩 系统打开文件过程----------调用win32api------向文件系统驱动请求(IRQ)-------文件系统驱动通过DMA进行直接内存缓冲写入(IO载入)--------IO载入完成返回IRQ请求成功IO----------win32api拿到结果 so,你想玩这个就很明确了。 大概2种手段 一种手段:拦截文件系统的win32api 做api hook(当然你自己要有一个守护服务去hook)-------ring3级别开发 另一种手段,编写文件系统过滤驱动,拦截IRQ请求,把IO载入过程替换成你自己的过程-----------ring0级别开发--------楼上有人提了windows自带的bitlock其实就是一个文件系统驱动器驱动,他提过磁盘透明加密功能 当然前端还需要有个配置管理,比如需要加密的文件或通配符,配置特权白名单进程。 总体上就是,拦截文件请求过程,根据特权白名单,分别向系统缓冲区提供不同的数据。(也就是前面那个文章一直提的双缓冲) 当然后面还有缓冲区清除问题-------如果缓冲区不及时清除,那么就会想楼上那位说的,cracker可以直接从缓冲区拿数据
a1584604816 2021-03-05
  • 打赏
  • 举报
回复
引用 16 楼 加油馒头 的回复:
[quote=引用 9 楼 a1584604816 的回复:][quote=引用 5 楼 hztltgg 的回复:][quote=引用 3 楼 收藏专家 的回复:]自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
文件是用户自己产生的吗?我感觉关键不是加密,加密算法已经有很多了。关键确实是“打开”,比如word文件加密了,打开是可以office打开编辑另存为?还是只能在你自己的软件里看?[/quote]文件是任意文件,一般是exe。所说的文件打开就是执行exe的意思,目的是保护exe不被单独传播,只能由自己的管理软件打开执行。[/quote] 打开EXE 输入密码才能试用行不行???[/quote]不需要再输入密码了。
加油馒头 2021-03-05
  • 打赏
  • 举报
回复
引用 9 楼 a1584604816 的回复:
[quote=引用 5 楼 hztltgg 的回复:][quote=引用 3 楼 收藏专家 的回复:]自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
文件是用户自己产生的吗?我感觉关键不是加密,加密算法已经有很多了。关键确实是“打开”,比如word文件加密了,打开是可以office打开编辑另存为?还是只能在你自己的软件里看?[/quote]文件是任意文件,一般是exe。所说的文件打开就是执行exe的意思,目的是保护exe不被单独传播,只能由自己的管理软件打开执行。[/quote] 打开EXE 输入密码才能试用行不行???
finalfantasy_xu 2021-03-05
  • 打赏
  • 举报
回复
学习了,可以试试看了
luj_1768 2021-03-05
  • 打赏
  • 举报
回复
你的需求有许多种解答,但是据说都抗不过cracker。 比如:账目软件,(是数据库结合软件),可以使用bitlock写入识别、授权、使能数据,在程序中读取判断特征数据,然后判断是否运行;后来被黑客crack后,转向了使用专业加密公司的硬件加密技术。
a1584604816 2021-03-04
  • 打赏
  • 举报
回复
引用 5 楼 hztltgg 的回复:
[quote=引用 3 楼 收藏专家 的回复:]自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
文件是用户自己产生的吗?我感觉关键不是加密,加密算法已经有很多了。关键确实是“打开”,比如word文件加密了,打开是可以office打开编辑另存为?还是只能在你自己的软件里看?[/quote]文件是任意的,一般是exe文件。说exe文件打开就是执行的意思,目的是起到保护exe不被传播
a1584604816 2021-03-04
  • 打赏
  • 举报
回复
引用 10 楼 hztltgg 的回复:
[quote=引用 9 楼 a1584604816 的回复:][quote=引用 5 楼 hztltgg 的回复:][quote=引用 3 楼 收藏专家 的回复:]自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
文件是用户自己产生的吗?我感觉关键不是加密,加密算法已经有很多了。关键确实是“打开”,比如word文件加密了,打开是可以office打开编辑另存为?还是只能在你自己的软件里看?[/quote]文件是任意文件,一般是exe。所说的文件打开就是执行exe的意思,目的是保护exe不被单独传播,只能由自己的管理软件打开执行。[/quote] 问题是你的管理软件也是在用户哪儿呀,哪有什么意义呢?用户把管理软件一起传播怎么办? 如果那个exe是你的,正常情况你的需求不是应该网络校验吗?如果不是你的,那你的需求可能不是真不是这么简单了[/quote]这是另外的解决方案,暂时不影响
a1584604816 2021-03-04
  • 打赏
  • 举报
回复
引用 10 楼 hztltgg 的回复:
[quote=引用 9 楼 a1584604816 的回复:][quote=引用 5 楼 hztltgg 的回复:][quote=引用 3 楼 收藏专家 的回复:]自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
文件是用户自己产生的吗?我感觉关键不是加密,加密算法已经有很多了。关键确实是“打开”,比如word文件加密了,打开是可以office打开编辑另存为?还是只能在你自己的软件里看?[/quote]文件是任意文件,一般是exe。所说的文件打开就是执行exe的意思,目的是保护exe不被单独传播,只能由自己的管理软件打开执行。[/quote] 问题是你的管理软件也是在用户哪儿呀,哪有什么意义呢?用户把管理软件一起传播怎么办? 如果那个exe是你的,正常情况你的需求不是应该网络校验吗?如果不是你的,那你的需求可能不是真不是这么简单了[/quote]这个是另外的解决方案,暂时不影响
hztltgg 2021-03-04
  • 打赏
  • 举报
回复
引用 9 楼 a1584604816 的回复:
[quote=引用 5 楼 hztltgg 的回复:][quote=引用 3 楼 收藏专家 的回复:]自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
文件是用户自己产生的吗?我感觉关键不是加密,加密算法已经有很多了。关键确实是“打开”,比如word文件加密了,打开是可以office打开编辑另存为?还是只能在你自己的软件里看?[/quote]文件是任意文件,一般是exe。所说的文件打开就是执行exe的意思,目的是保护exe不被单独传播,只能由自己的管理软件打开执行。[/quote] 问题是你的管理软件也是在用户哪儿呀,哪有什么意义呢?用户把管理软件一起传播怎么办? 如果那个exe是你的,正常情况你的需求不是应该网络校验吗?如果不是你的,那你的需求可能不是真不是这么简单了
a1584604816 2021-03-04
  • 打赏
  • 举报
回复
引用 5 楼 hztltgg 的回复:
[quote=引用 3 楼 收藏专家 的回复:]自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
文件是用户自己产生的吗?我感觉关键不是加密,加密算法已经有很多了。关键确实是“打开”,比如word文件加密了,打开是可以office打开编辑另存为?还是只能在你自己的软件里看?[/quote]文件是任意文件,一般是exe。所说的文件打开就是执行exe的意思,目的是保护exe不被单独传播,只能由自己的管理软件打开执行。
wanghui0380 2021-03-02
  • 打赏
  • 举报
回复
引用 6 楼 a1584604816 的回复:
文件就是普通的可执行文件(就是理解为加壳),但通过我的平台要绕过或者穿透壳和密码,这样对用户其实是无感的,只是打开方式不是直接执行这个exe,而是通过我的平台调用执行的。但如果单独把这个文件直接执行就需要密码了。等于是平台管理着这些执行文件的打开执行权。
哦,透明加密。 这样把,先给你一个文章 https://www.cnblogs.com/bbsno1/archive/2013/08/12/3253833.html 看完这篇,有个大概印象在说别的,就像文章里说的,目前这种要求一般采用minifilter驱动方式开发。 具体过程那文章也讲了个七七八八,虽然没有半点代码,但该有的他都有 1.加密标识(修改PE文件的头尾,这个参考壳软件) 2.minifilter驱动过滤拦截(编写文件系统过滤驱动,识别特权进程,识别加密标识,进行文件解密) 3.系统缓冲-----解密后进入系统缓冲 这是目前最正统方式,当然编写驱动这东西,一般程序员麻烦点。所以也会有使用miniHook拦截SSDT过程的(这种就比较早了,资料更多) ps:如果想写驱动可以参考《Windows内核编程》这本书(书是新书,资料嘛属于WDK驱动开发) http://www.wsgph.com/bookshow.asp?id=1841860 其中第11,12,13章就是相关技术说明
引用
第11章 文件系统的过滤与监控 209 11.1 文件系统的设备对象 210 11.1.1 控制设备与卷设备 210 11.1.2 生成自己的一个控制设备 211 11.2 文件系统的分发函数 212 11.2.1 普通的分发函数 212 11.2.2 文件过滤的快速IO分发函数 213 11.2.3 快速IO分发函数的一个实现 215 11.2.4 快速IO分发函数逐个简介 216 11.3 设备的绑定前期工作 217 11.3.1 动态地选择绑定函数 217 11.3.2 注册文件系统变动回调 219 11.3.3 文件系统变动回调的一个 实现 220 11.3.4 文件系统识别器 221 11.4 文件系统控制设备的绑定 222 11.4.1 生成文件系统控制设备的 过滤设备 222 11.4.2 绑定文件系统控制设备 223 11.4.3 利用文件系统控制请求 225 11.5 文件系统卷设备的绑定 227 11.5.1 从IRP中获得VPB指针 227 11.5.2 设置完成函数并等待IRP 完成 228 11.5.3 卷挂载IRP完成后的工作 231 11.5.4 完成函数的相应实现 233 11.5.5 绑定卷的实现 234 11.6 读/写操作的过滤 236 11.6.1 设置一个读处理函数 236 11.6.2 设备对象的区分处理 237 11.6.3 解析读请求中的文件信息 238 11.6.4 读请求的完成 241 11.7 其他操作的过滤 244 11.7.1 文件对象的生存周期 244 11.7.2 文件的打开与关闭 245 11.7.3 文件的删除 247 11.8 路径过滤的实现 248 11.8.1 取得文件路径的三种情况 248 11.8.2 打开成功后获取路径 249 11.8.3 在其他时刻获得文件路径 250 11.8.4 在打开请求完成之前获得 路径名 251 11.8.5 把短名转换为长名 253 11.9 把sfilter编译成静态库 254 11.9.1 如何方便地使用sfilter 254 11.9.2 初始化回调、卸载回调和 绑定回调 254 11.9.3 绑定与回调 256 11.9.4 插入请求回调 257 11.9.5 如何利用sfilter.lib 259 第12章 文件系统透明加密 263 12.1 文件透明加密的应用 263 12.1.1 防止企业信息泄密 263 12.1.2 文件透明加密防止企业信息 泄密 263 12.1.3 文件透明加密软件的例子 264 12.2 区分进程 265 12.2.1 机密进程与普通进程 265 12.2.2 找到进程名字的位置 266 12.2.3 得到当前进程的名字 267 12.3 内存映射与文件缓冲 268 12.3.1 记事本的内存映射文件 268 12.3.2 Windows的文件缓冲 269 12.3.3 文件缓冲:明文还是密文的 选择 270 12.3.4 清除文件缓冲 271 12.4 加密标识 274 12.4.1 保存在文件外、文件头还是 文件尾 274 12.4.2 隐藏文件头的大小 275 12.4.3 隐藏文件头的设置偏移 277 12.4.4 隐藏文件头的读/写偏移 277 12.5 文件加密表 278 12.5.1 何时进行加密操作 278 12.5.2 文件控制块与文件对象 279 12.5.3 文件加密表的数据结构与 初始化 280 12.5.4 文件加密表的操作:查询 281 12.5.5 文件加密表的操作:添加 282 12.5.6 文件加密表的操作:删除 283 12.6 文件打开处理 284 12.6.1 直接发送IRP进行查询与 设置操作 285 12.6.2 直接发送IRP进行读/写操作 287 12.6.3 文件的非重入打开 288 12.6.4 文件的打开预处理 291 12.7 读/写加密和解密 296 12.7.1 在读取时进行解密 296 12.7.2 分配与释放MDL 297 12.7.3 写请求加密 298 12.8 crypt_file的组装 300 12.8.1 crypt_file的初始化 300 12.8.2 crypt_file的IRP预处理 301 12.8.3 crypt_file的IRP后处理 304 第13章 文件系统微过滤驱动 308 13.1 文件系统微过滤驱动简介 308 13.1.1 文件系统微过滤驱动的由来 308 13.1.2 Minifilter的优点与不足 309 13.2 Minifilter的编程框架 309 13.2.1 微文件系统过滤的注册 310 13.2.2 微过滤器的数据结构 311 13.2.3 卸载回调函数 314 13.2.4 预操作回调函数 314 13.2.5 后操作回调函数 317 13.2.6 其他回调函数 318 13.3 Minifilter如何与应用程序通信 320 13.3.1 建立通信端口的方法 320 13.3.2 在用户态通过DLL使用通信 端口的范例 322 13.4 Minifilter的安装与加载 325 13.4.1 安装Minifilter的INF文件 325 13.4.2 启动安装完成的Minifilter 326
  • 打赏
  • 举报
回复
任何文件都可以转换成二进制流,可以先将二进制流进行加密后存储到文件里.解密的时候先将文件里的二进制流读取出来,然后再解密.
a1584604816 2021-03-01
  • 打赏
  • 举报
回复
文件就是普通的可执行文件(就是理解为加壳),但通过我的平台要绕过或者穿透壳和密码,这样对用户其实是无感的,只是打开方式不是直接执行这个exe,而是通过我的平台调用执行的。但如果单独把这个文件直接执行就需要密码了。等于是平台管理着这些执行文件的打开执行权。
hztltgg 2021-03-01
  • 打赏
  • 举报
回复
引用 3 楼 收藏专家 的回复:
自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
文件是用户自己产生的吗?我感觉关键不是加密,加密算法已经有很多了。关键确实是“打开”,比如word文件加密了,打开是可以office打开编辑另存为?还是只能在你自己的软件里看?
wanghui0380 2021-03-01
  • 打赏
  • 举报
回复
有些东西我们不太清楚含义,比如“然后能通过自己的管理软件或者C#代码打开此文件。不能以其他形式或单独执行此加密后的文件”, 1.不能打开-------含义是什么?不能用记事本打开么,还是打开是乱码 2.不能以其他形式或单独执行此加密后的文件--------执行什么?他没加密以前是什么?是可执行文件还是非可执行文件 这东西,可大可小。你的含义决定你要深入的内容。 1.比如一个mdb后缀可以用Access打开,用其他的打不开(当然如果其他exe专门支持也能打开),所以这种就是常规开发,主要技术是:文件格式,文件关联 2.比如他可以运行,那么他是PE文件,只是有壳。而且这个壳只能用你的软件解开,那么正常情况下是编写加密驱动(Minifilter) 所以我们不想乱带节奏,所以你最好写规定好含义,免得一下就跑到的“透明加密”(Minifilter,minihook)这类非常规开发上了
  • 打赏
  • 举报
回复
自己研究一种加密方式,然后操作执行,最好是由用户掌握密钥的
hztltgg 2021-03-01
  • 打赏
  • 举报
回复
对文件加密,又通过自己的管理软件解密,这个不是正常的加密需求吧。 正常的加密,是你加密,用户解密,用户有自己的密钥,解决的是传输被泄漏的问题。 你的需求就是限制别人打开自己的文件,不管怎么加密,密钥如果只有一个,始终很容易被人破解的,因为你最终必然还是要自己解密。

110,477

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧