![]() |
中国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 |