本帖最后由 Love0912 于 2024-10-13 17:10 编辑
首先看我贴的代码
@echo off
setlocal enabledelayedexpansion
:Variables
set InputPrompt=请输入密钥以继续:
set CorrectKeyMsg=密钥正确,继续执行...
set WrongKeyMsg=密钥错误,请重新输入或按X键退出...
set RetryPrompt=是否重新输入(Y/N)?:
set InvalidInputMsg=无效输入,请重新选择...
:PasswordLoop
set /p UserKey=!InputPrompt!
if "%UserKey%"=="erhudiannao" (
echo !CorrectKeyMsg!
goto start
) else (
echo !WrongKeyMsg!
set /p Choice=!RetryPrompt!
if /i "%Choice%"=="Y" goto PasswordLoop
if /i "%Choice%"=="X" goto EndScript
echo !InvalidInputMsg!
goto PasswordLoop
)
rem 以下信息需要正常显示
set 服务器主机端IP=192.168.0.241
set 服务器主机端用户名=Administrator
set 服务器主机端密码=""
rem 需要显示信息结束,以下信息需要隐藏
IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
if /i "%choice%"=="1" goto ckpj
if /i "%choice%"=="2" goto cjypj
if /i "%choice%"=="3" goto cjptpj
if /i "%choice%"=="4" goto scxypj
if /i "%choice%"=="5" goto scraspj
if /i "%choice%"=="6" goto zjrcpdk
if /i "%choice%"=="7" goto cjypjguest
if /i "%choice%"=="8" goto cjptpjguest
if /i "%choice%"=="9" goto kqlbzh
if /i "%choice%"=="0" goto gblbzh
if /i "%choice%"=="m" goto cxjj
if /i "%choice%"=="Z" goto end
if /i "%choice%"=="X" goto spjc
echo 选择无效,请重新输入
echo.
goto cho
我首先对这个批处理进行了加密,以确保其在没有密码的情况下无法运行,同时加密时也进行了一定的混淆,避免纯小白进行修改。
现在的问题是如果采取文本编辑的话所有代码都可以被直接观看到,并且被修改,依旧无法起到加密作用
而且最关键的是,这个代码里有部分代码是不能被加密的,因为在应用时需要修改这部分代码才能正确使用(就是代码中标红写着可编辑的部分)
现在我的需求是将不需要展示的部分进行加密使其无法修改或者无法被观测到,不知道有没有什么好的办法可以解决这个问题。
最后,我也指点C# C++编写效果更好,奈何手残,就会一点点的批处理还不是狠精通,所以请各位大佬不吝赐教 |