中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一个加壳的批处理竟无法破解(已结)
« [1] [2] [3] »
作者:
标题: 一个加壳的批处理竟无法破解(已结) 上一主题 | 下一主题
wjdidi
初级用户





积分 175
发帖 55
注册 2007-4-30
状态 离线
『第 31 楼』:  

从这个贴子学到不少东西啊

2008-7-7 15:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 32 楼』:  

根据我的分析
那句@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 引用批处理自身时
就是出错!

2008-7-8 12:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: