中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 03:14
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 一个加壳的批处理竟无法破解(已结)
可打印版本  3,455 / 31
第31楼 wjdidi 发表于 2008-07-07 15:41
初级用户 发帖 55 积分 175
从这个贴子学到不少东西啊
第32楼 qzwqzw 发表于 2008-07-08 12:41
银牌会员 发帖 636 积分 2,343
根据我的分析
那句@shift是没用且有害的蛇足之笔

因为程序在释放出批处理源码后
是使用以下方式来调用批处理的
cmd /c "批处理名 批处理所需命令行参数"

如果以 setup.exe 1 2 3 4 5 6 7 8 9 的方式执行加密程序
执行至批处理内部后

环境变量 cmdcmdline 为 cmd /c "" CMD5254.CMD" 1 2 3 4 5 6 7 8 9"
命令行参数矩阵 %* 为 1 2 3 4 5 6 7 8 9
命令名 %0 为 " CMD5254.CMD"
命令行参数1 %1 为 1
其余参数依次排列

其中的批处理文件名是以 (0xA0)CMD 起始
再加随机的四位十六进制数组成

而在 @shift 之后
cmdcmdline、%*均不变
唯一变化的是 %0 ~ %9
也就是 %0 变为 1
%1 变为 2
其余依次排列

可见在@shift之后
本来是命令名的%0变为了命令行参数1
而当在程序中使用 %0 引用批处理自身时
就是出错!
上一页  1 2 3
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023