中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 05:17
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 一个加壳的批处理竟无法破解(已结)
可打印版本  3,463 / 31
第1楼 jonsonqf 发表于 2008-06-29 15:18
初级用户 发帖 29 积分 65
一个加壳的批处理竟无法破解(已结)
前段时间看到批处理加解密的大讨论,批处理是难真正的加密的,一般都可以在临时文件夹找到源码,但是今天恰好看到这个加壳的exe,竟然无法找到源码,请有兴趣的朋友一起研究下。

貌似帖子中无法上传附件,我已经把附件上传到论坛的上传系统那里了,下载地址是:

(已结,多谢下面回复的几位朋友)

[ Last edited by jonsonqf on 2008-7-2 at 10:30 AM ]
第2楼 plp626 发表于 2008-06-29 15:44
银牌会员 发帖 1,020 积分 2,278
那个用汇编写的bat2exe.com转换后的exe不生成临时文件,非一般方法可以得到源码
第3楼 knoppix7 发表于 2008-06-29 16:04
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
用Ollydbg打开EXE. 插件=> Ollydump=K.O.
第4楼 quya 发表于 2008-06-29 16:37
高级用户 发帖 172 积分 558 来自 江苏
我似乎尚未发现有哪款BAT转EXE的工具能真正隐藏bat源文件。加壳的也一样。

除非源程序没有交互式的界面,而且执行速度非常快,快到你找到源文件来不及复制它就自动删除了。

所以找到源文件的简单办法就是, 执行转换了的exe文件,等到程序要你输入的时候,不理它, 到%tmp%目录找,总是能找到, 有时候还是隐藏的。

为了方便找到,在运行之前可以先清一下%tmp%目录, 把隐藏文件的选项关闭。

也许我孤陋寡闻, 所以希望哪个高手提供我一个如楼主说的找不到源文件的转换程序。(我无法下载楼主的附件,但我看了3楼帖的源码,相信在临时文件夹几乎能找到源码,因为那是个有交互界面的程序)

谢谢!

另外对于那些没有交互界面,执行速度较快的文件, 也许可以用下面的思路来抓住它。

编一个拷贝程序,加上一定的延时(延时多少视转换的执行程序的速度而定),不停的从%tmp%目录向不同目录拷贝, 然后启动那个程序,很有可能就抓住它了, 一次不行可以试多次。

[ Last edited by quya on 2008-6-29 at 09:44 PM ]
第5楼 mountvol 发表于 2008-06-29 16:56
初级用户 发帖 117 积分 186
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
autorun="dir *.bat&pause"
或者可以直接拷贝到你想拷贝的地方。
第6楼 knoppix7 发表于 2008-06-29 19:39
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
我说下我的结果吧.
利用If 进行命令注入的时候尝试过 Call type "%~0"
但是.这个值为空.%cd%指向执行目录.
所以..我怀疑..这个Bat执行时没有临时文件.

过几天试试filemon看看.
第7楼 jonsonqf 发表于 2008-06-29 21:09
初级用户 发帖 29 积分 65
Originally posted by quya at 2008-6-29 04:37 PM:
我似乎尚未发现有哪款BAT转EXE的工具能真正隐藏bat源文件。加壳的也一样。

除非源程序没有交互式的界面,而且执行速度非常快,快到你找到源文件 ...



佩服下3楼先,不过我这边临时文件夹temp确实是找不到这个的,我相信3楼应该不是在临时文件夹找到的吧?请恕我比较菜,不知道3楼的这位朋友能不能说明白一点呢?非常感谢你的解答!

[ Last edited by jonsonqf on 2008-6-29 at 09:13 PM ]
第8楼 jonsonqf 发表于 2008-06-29 21:10
初级用户 发帖 29 积分 65
Originally posted by knoppix7 at 2008-6-29 07:39 PM:
我说下我的结果吧.
利用If 进行命令注入的时候尝试过 Call type "%~0"
但是.这个值为空.%cd%指向执行目录.
所以..我怀疑..这个Bat执行时没有临时文件.

过几天试试filemon看看.


他如果没有临时文件的话,那天怎么执行的呢?他这个应该本来就是个批处理吧?
第9楼 quya 发表于 2008-06-29 21:47
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by jonsonqf at 2008-6-29 09:10 PM:


他如果没有临时文件的话,那天怎么执行的呢?他这个应该本来就是个批处理吧?


凡是批处理的开头有 这一句的,肯定是从临时文件夹里找出来的, 源文件都没有这句!

我已经尝试了很多办法,都无法不生成临时文件!

请你按照我5楼的办法仔细找, 其实只要按照我的办法,用不着仔细找,应该说轻而易举就可以找到。
第10楼 jonsonqf 发表于 2008-06-29 22:26
初级用户 发帖 29 积分 65
Originally posted by quya at 2008-6-29 09:47 PM:


凡是批处理的开头有 这一句的,肯定是从临时文件夹里找出来的, 源文件都没有这句!

我已经尝试了很多办法,都无法不生成临 ...



多谢这位朋友的帮忙,开头的@shift这个确实和平常不同的,我找到他释放的文件了,我也奇怪,我知道的也是没有不释放的。

但是,朋友,我传上来的这个比较特殊,其实也不算特殊,只是用了其他的小把戏,我建议你下载下来研究下,对你不无裨益的,呵呵。这个释放的目录不是在临时文件夹下的哦,难怪我之前找不到了

顺便我想请教下,开头的这个@shift这个的作用我不是很理解,是为了解释什么命令么?

[ Last edited by jonsonqf on 2008-6-29 at 10:29 PM ]
第11楼 quya 发表于 2008-06-29 22:41
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by jonsonqf at 2008-6-29 10:26 PM:



多谢这位朋友的帮忙,开头的@shift这个确实和平常不同的,我找到他释放的文件了,我也奇怪,我知道的也是没有不释放的。

但是,朋友,我传 ...


我无法下载,虽然我很想知道。

我想他可能用某种办法改变了TMP目录,最后运行完毕再改回来。
第12楼 dikex 发表于 2008-06-29 23:32
高级用户 发帖 366 积分 788
运行某批处理时,执行下面的命名即可找出对应的批处理文件在哪里了
wmic process where name="cmd.exe" get commandline

shift 能把%0 参数改变,可能用于防止某些利用%0 取得当前批处理路径的方法
第13楼 quya 发表于 2008-06-29 23:59
高级用户 发帖 172 积分 558 来自 江苏
谢谢楼主, 我下载下来看了看。 他的临时文件还是在 %tmp%目录中,它先WINRAR自解压, 然后释放一个cmd文件,不过这个CMD的第一个字符估计是带特殊字符的,所以在Window界面无法看到,但在DOS命令行可以看到。

文件名的形式是 ?cmd????.cmd (第一个看不到,最后4个字符随机)

然后我就 ren *.cmd 1.cmd, 打开1.cmd 就完事了。

[ Last edited by quya on 2008-6-30 at 12:03 AM ]
第14楼 jonsonqf 发表于 2008-06-30 01:06
初级用户 发帖 29 积分 65
Originally posted by quya at 2008-6-29 11:59 PM:
谢谢楼主, 我下载下来看了看。 他的临时文件还是在 %tmp%目录中,它先WINRAR自解压, 然后释放一个cmd文件,不过这个CMD的第一个字符估计是带特殊字 ...



呵呵,是的,我也找到了,不过我现在想的是怎么可以确切的得知他这个第一个字符是什么,我用了attr看了,是个很特殊的字符,我现在有几个疑问:

1.他是怎么建立这个特殊字符的文件夹,也就是说怎么打出来这个字符的,那个字符我用attr看了,好像是y是吗有2点的

2.这个文件夹既然用了这种方法隐藏了(我想应该是利用了attr的加隐藏属性),但是为什么还可以执行呢?就是@shift这句话的作用?

3.我前段时间用了一些加密工具加密,但是有些加密工具加密后,可以运行,但是加壳后却无法运行了
第15楼 jonsonqf 发表于 2008-06-30 01:12
初级用户 发帖 29 积分 65
Originally posted by dikex at 2008-6-29 11:32 PM:
运行某批处理时,执行下面的命名即可找出对应的批处理文件在哪里了
wmic process where name="cmd.exe" get commandline

shift 能把%0 参数改变,可能用于防止某些利用%0 取得当前批处理路径的方法



又学到了一招,非常感谢这位朋友的指点

另外想请教下,对于“shift 能把%0 参数改变,可能用于防止某些利用%0 取得当前批处理路径的方法”这句话不解,利用%0可以取得当前批处理路径?具体的操作是?

因为偶比较的菜,诚心请教,还望可以再次指点一二,谢谢!
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023