HOPE2021

发短消息

加为好友

HOPE2021

当前离线

UID104164 帖子368 精华0 积分506 PB389 技术39 捐助0 阅读权限30 在线时间305 小时 注册时间2021-8-8 最后登录2025-5-11

少尉

帖子368 积分506 技术39 捐助0 注册时间2021-8-8

1楼

跳转到 »

倒序看帖

打印

字体大小: tT

发表于 2021-8-9 10:00

| 只看该作者

[文本处理] 关于批处理加密的新方法

本帖最后由 HOPE2021 于 2021-8-9 10:16 编辑

大家好,由于我是新人,发帖有些拘束,请谅解。

今天,我发现了批处理加密的一种新方法。[Tips:这种命令只有x64平台的一些操作系统可以使用,不过加密后的批处理x86平台也可以使用,测试环境:Windows 7 x64 ; Windows 10 x64;Windows XP Sp3 x86]

在了解这种加密方法之前,首先需要了解什么是Certutil,[传送门:用 certutil 实现 Hex2Bin 和 Base64 加解密 - BAT教程&资料 - 批处理之家 批处理_BAT脚本_PowerShell_VBS_CMD_DOS_Perl_Python - Powered by Discuz! (bathome.net)]

Certutil实质上是用来管理证书的,但由于可以将文本加/解密成Base64/十六进制机器码,所以有些“歪门邪道”的用法。

说了这么久,下面开始介绍这种加密的方法:

首先,我们准备一个 .bat 或 .cmd 文件,这里我采用Hello,World.bat做讲解,源码如下:Rem 第一条千万不要是有实际意义的语句,不然批处理会损坏!

@echo off

Rem 关闭回显

chcp 936 > nul

Rem 调整语言设置成中文简体,GBK字符编码

endlocal

Rem 关闭当前变量延迟的改动

setlocal disabledelayedexpansion

Rem 禁用变量延迟

Mode Con:Cols=80 Lines=25

Rem 调用 Mode.com 调整控制台窗体大小至长80个半角符号,宽25个全角符号

color 0f

Rem 调用 Color.exe 调整控制台窗体颜色,让背景色为黑色,前景色为白色

cls

Rem 清屏

title Hello,World!

Rem 将控制台窗体的标题改为" Hello,World! "

echo.&echo.&echo. Hello,World!

Rem 输出两个空行,以及" Hello,World! "

echo.&echo. 请按回车键退出...

Rem 输出一个空行,以及"请按回车键退出..."

pause > nul

Rem 按任意键(中文输入法下某些键需要再按一次回车,此处为了让不懂批处理的用户能够每次操作成功,所以帮助信息是"请按回车键退出...")

exit

Rem 退出复制代码然后,Win+r,打开命令提示符,进入到批处理的目录下,键入如下命令:Certutil -encodehex -f Hello,World.bat Hello,World.bat复制代码效果如下:G:\BatHome>Certutil -encodehex -f Hello,World.bat Hello,World.bat

输入长度 = 792

输出长度 = 3692

CertUtil: -encodehex 命令成功完成。复制代码这个时候,我们的批处理已经解析成了十六进制机器码,前两行如下:0000 52 65 6d 20 b5 da d2 bb cc f5 c7 a7 cd f2 b2 bb Rem ............

0010 d2 aa ca c7 d3 d0 ca b5 bc ca d2 e2 d2 e5 b5 c4 ................复制代码然后,我们将前两个字节改为 ff fe (千万不要改成 fe ff 否则用type 就可以解析一切) ,也就是:0000 ff fe 6d 20 b5 da d2 bb cc f5 c7 a7 cd f2 b2 bb Rem ............

0010 d2 aa ca c7 d3 d0 ca b5 bc ca d2 e2 d2 e5 b5 c4 ................复制代码接着,我们再还原批处理,键入以下命令:Certutil -decodehex -f Hello,World.bat Hello,World.bat复制代码效果如下:G:\BatHome>Certutil -decodehex -f Hello,World.bat Hello,World.bat

输入长度 = 3692

输出长度 = 792

CertUtil: -decodehex 命令成功完成。复制代码接着我们看加密过的 Hello,World.bat (乱码太长了,这里只取两行):�믒Ꟈ뮲꫒쟊탓뗊쪼��쒵�눬좻얻듺삦믭쯡믰ꎵඡ䀊捥潨漠晦਍敒�햱�퓏਍档灣㤠㘳㸠渠汵਍敒ﯕ퓑쏖즳탖쓎�겣䉇흋럖뇻신෫攊摮潬慣൬刊复制代码怎样,批处理加密成功!我们可以尝试运行批处理代码,看看批处理有没有损坏: Hello,World!

请按回车键退出...复制代码没有任何损坏!

但有没有解密的方法呢?有!

用 MsWord 365 打开bat 文件,编码选Windows默认,即可解读。

划重点:

1. 加密的原理,前两个字节储存着文件的编码信息,改变前两个字节即可改变文件的编码。

2. 加密的优劣:

优:

这种方法相较于将一大堆%%a加入文件的方法相比,用type指令无法解析,

劣:办公常备软件MsWord即可解析。

3. 请不要用这种加密方法做不法行当。

By HOPE2021

谢谢。

收藏

分享

cmd1152

发短消息

加为好友

cmd1152

当前离线

UID103864 帖子984 精华0 积分467 PB368 技术33 捐助0 阅读权限0 来自Minecraft 在线时间372 小时 注册时间2021-7-14 最后登录2024-2-22

禁止访问

帖子984 积分467 技术33 捐助0 注册时间2021-7-14

2楼

发表于 2021-8-10 21:32

| 只看该作者

这种方法我有解密程序了...

梦依旧在,只是,心有余而力渐有不足

年年岁岁花相似,岁岁年年人不同

TOP

cmd1152

发短消息

加为好友

cmd1152

当前离线

UID103864 帖子984 精华0 积分467 PB368 技术33 捐助0 阅读权限0 来自Minecraft 在线时间372 小时 注册时间2021-7-14 最后登录2024-2-22

禁止访问

帖子984 积分467 技术33 捐助0 注册时间2021-7-14

3楼

发表于 2021-8-11 21:38

| 只看该作者

解密方法:

输入Certutil -encodehex -f Hello,World.bat Hello,World.bat

把0000那一行删除

输入Certutil -decodehex -f Hello,World.bat Hello,World.bat

梦依旧在,只是,心有余而力渐有不足

年年岁岁花相似,岁岁年年人不同

TOP

HOPE2021

发短消息

加为好友

HOPE2021

当前离线

UID104164 帖子368 精华0 积分506 PB389 技术39 捐助0 阅读权限30 在线时间305 小时 注册时间2021-8-8 最后登录2025-5-11

少尉

帖子368 积分506 技术39 捐助0 注册时间2021-8-8

4楼

发表于 2021-8-11 22:03

| 只看该作者

回复 3# cmd1152

实际上用MsWord就可以解析了...

TOP

cmd1152

发短消息

加为好友

cmd1152

当前离线

UID103864 帖子984 精华0 积分467 PB368 技术33 捐助0 阅读权限0 来自Minecraft 在线时间372 小时 注册时间2021-7-14 最后登录2024-2-22

禁止访问

帖子984 积分467 技术33 捐助0 注册时间2021-7-14

5楼

发表于 2021-8-11 22:20

| 只看该作者

回复 4# HOPE2021

我没有

梦依旧在,只是,心有余而力渐有不足

年年岁岁花相似,岁岁年年人不同

TOP