Board logo

标题: [加密解密] 批处理文件bat转exe加密之后的解密破解还原方法 [打印本页]

作者: Batcher    时间: 2009-2-14 22:49     标题: 批处理文件bat转exe加密之后的解密破解还原方法

方案一:映像劫持 VS 所有动态释放型的bat转exe软件
首发地址(作者HAT):http://www.cn-dos.net/forum/viewthread.php?tid=43057


1、此处以破解经过《批处理潜行者V5.0》转换的批处理为例;

2、转换后的批处理下载地址:http://rtngslin.moe.hm/cndos-up/img/771.rar,解压后的可执行文件名为CS.exe;

3、本例中用到不是系统自带的 find 命令,而是的 GNU for Win32 的 find.exe (下载地址:http://bbs.bathome.net/thread-1114-1-1.html)。

破解方法如下:
  1. @echo off
  2. rem 指定bat转exe之后可执行文件的所在路径
  3. set CodeFile=C:\test\aa.exe
  4. echo 正在搜索,可能需要几分钟时间,请稍候...
  5. set MyVbs=%temp%\a.vbs
  6. set FlagFile=%temp%\a.txt
  7. >"%MyVbs%" echo Set WshShell = WScript.CreateObject("WScript.Shell")
  8. >>"%MyVbs%" echo WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\cmd.exe\Debugger", "ntsd -d", "REG_SZ"
  9. >>"%MyVbs%" echo WScript.Sleep 5000
  10. >>"%MyVbs%" echo WshShell.Run "%CodeFile%"
  11. >>"%MyVbs%" echo WScript.Sleep 5000
  12. >>"%MyVbs%" echo WshShell.RegDelete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\cmd.exe\"
  13. >"%FlagFile%" echo.
  14. "%MyVbs%"
  15. for /f "delims=" %%a in ('find "%systemdrive%\\" -newer "%FlagFile%" -name "*.[bB][aA][tT]" 2^>nul') do (
  16.   set "BatPath=%%a"
  17. )
  18. echo %BatPath%
  19. if "%BatPath%" equ "" (
  20.   for /f "delims=" %%a in ('find "%systemdrive%\\" -newer "%FlagFile%" -name "*.[cC][mM][dD]" 2^>nul') do (
  21.     set "BatPath=%%a"
  22.   )
  23. )
  24. if "%BatPath%" neq "" (
  25.   echo 批处理路径:%BatPath%
  26.   echo 批处理内容:
  27.   type "%BatPath%"|more
  28. ) else (
  29.   echo 破解失败,请尝试其它破解方法。
  30. )
  31. pause
复制代码
方案二:OllyDBG VS 所有动态释放型的bat转exe软件(以批处理潜行者为例)
首发地址(作者HAT):http://www.cn-dos.net/forum/viewthread.php?tid=43499


1、此处以破解经过《批处理潜行者V5.0》转换的批处理为例;

2、转换后的批处理下载地址:http://rtngslin.moe.hm/cndos-up/img/771.rar,解压后的可执行文件名为CS.exe;

3、OllyDBG 的下载地址请自行 google 之。

破解方法如下:

1、用OllyDBG打开CS.exe

2、在OllyDBG的"反汇编"区域单击鼠标右键->"搜索"->"当前模块中的名称(标签)"

[attach]1290[/attach]

3、在弹出的搜索窗口中右键单击"WinExec"所在行->"在每个参考上设置断点"->关闭该搜索窗口

[attach]1291[/attach]

4、按F9键开始运行,到第一个断点处自动停止,在这里就能看到释放出来的批处理放在什么地方啦。此时批处理尚未被调用,所以我们大可不必担心批处理中可能存在的"危险性"代码给系统带来损害。

[attach]1292[/attach]

方案三:OllyDBG VS 所有动态释放型的bat转exe软件(以QBFC为例)
首发地址(作者HAT):http://www.cn-dos.net/forum/viewthread.php?tid=43502


1、此处以破解经过《Quick Batch File Compiler 3.1.5》转换的批处理为例;

2、转换后的批处理下载地址:http://rtngslin.moe.hm/cndos-up/img/875.zip,解压后的可执行文件名为CN-DOS.exe;

3、Quick Batch File Compiler 的下载地址请自行 google 之。

破解方法如下:

1、用OllyDBG打开CN-DOS.exe

2、在OllyDBG的"反汇编"区域单击鼠标右键->"搜索"->"当前模块中的名称(标签)"

[attach]1293[/attach]

3、在弹出的搜索窗口中右键单击"CreateProcessA"所在行->"在每个参考上设置断点"->关闭该搜索窗口

[attach]1294[/attach]

4、按F9键开始运行,到第一个断点处自动停止,在这里就能看到释放出来的批处理放在什么地方啦。此时批处理尚未被调用,所以我们大可不必担心批处理中可能存在的"危险性"代码给系统带来损害。注,释放出来的批处理文件加了隐藏属性。

[attach]1295[/attach]


方案四:Command Processor AutoRun VS 所有动态释放型的bat转exe软件
首发地址(作者tireless):http://bbs.bathome.net/viewthread.php?tid=3343#pid21164


1、此处以破解经过《批处理潜行者V5.0》转换的批处理为例;

2、转换后的批处理下载地址:http://rtngslin.moe.hm/cndos-up/img/771.rar,解压后的可执行文件名为CS.exe;

3、本例通过修改 Command Processor AutoRun 来防止exe所释放出来的bat被运行,并自动找出其所在路径。

破解方法如下:

1、导入以下reg文件。
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
  3. "AutoRun"="wmic PROCESS where Name=\"cmd.exe\" get CommandLine>%temp%\\路径.txt&start notepad %temp%\\路径.txt&exit"
复制代码
2、运行待破解的CS.exe文件,这时在自动打开的文本文件中即可找到exe所释放出来的bat(可能具有隐藏属性)的所在路径。

3、导入以下reg文件以恢复正常bat的运行。
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
  3. "AutoRun"=""
复制代码

作者: defanive    时间: 2009-2-14 23:51

我以前破解都很简单的,有个软件可以动态跟踪EXE对文件的操作,直接就找到路径了。。。
作者: Batcher    时间: 2009-2-15 00:03     标题: 回复 2楼 的帖子

本帖收集的例子最大特点是:可以避免exe文件中可能存在的恶意代码对系统造成的损害。

如果不考虑这一点,可以使用filemon之类的软件监控exe释放文件的路径,这样确实简单,但没啥技术含量,因此该类方案在本帖中不予收录。
作者: defanive    时间: 2009-2-15 00:28

设置断点么。。。

其实直接在注册表里面加那个CMD启动自执行的BAT,然后在BAT里面加句Pause,暂停的时候直接拿走文件就可以了么,然后直接终止掉就不会执行下面的代码了。。。
作者: defanive    时间: 2009-2-15 00:36

依照现在的软件来看,都是最普通的写BAT代码到EXE(或者重新编译EXE),然后EXE执行时动态释放。。。

网上有很多文章说更高级的做法是利用C里面的system函数,就是直接调用DOS命令的函数。。。

那都是纸上谈兵,system的问题很多,system函数就等于直接在CMD里面输入运行,不仅预处理有问题,而且不像用BAT文件一样可以有标签和CALL等等,所以system是不可行的。更重要的是,人家为了不让别人看到代码,下载一个附带C程序编译器的软件,几乎是不太可能的,头文件的动态链接库是很大的。。。

所以,现在,到目前为止,我还没有看过一个转换软件不是动态释放的,只要监视就可以了。。。
作者: Batcher    时间: 2009-2-15 01:08     标题: 回复 4楼 的帖子

原理上是这样,修改那个注册表项也是轻而易举的事情。但我不了解转换软件的内部工作原理,如果某些转换软件以 cmd /k 之类的方式来调用,则可能跳过我们设置的障碍,恶意代码仍有可能被执行。我觉得还是映像劫持比较可靠些,所以当时也没有收录这个方法。
作者: Batcher    时间: 2009-2-15 01:15     标题: 回复 6楼 的帖子

据说这个软件不是动态释放类型的,根据我当时的测试,确实没有发现动态释放。

C:\Test>bat2exec.exe

BAT2EXEC 1.5 (c) 1990, 1991 Ziff Communications Co.
PC Magazine ?Douglas Boling

Syntax: BAT2EXEC filename.ext


可惜的是,这个软件对很多批处理中的常用特性写法都不支持。后来,个中高手根据该软件的源代码得出结论:只要注意某些批处理编写技巧,完全有可能被该软件转换成功。但我觉得他总结的方法太过复杂,而我又对这个不太感兴趣,就没有再深入下去。
作者: defanive    时间: 2009-2-15 02:29

Batcher把那东西传上来吧,90年的东西啊,这么老了。。。
作者: BBCC    时间: 2009-2-15 07:56

网上有很多文章说更高级的做法是利用C里面的system函数,就是直接调用DOS命令的函数。。。

越高级,越累啊...
作者: Batcher    时间: 2009-2-15 17:17     标题: 回复 8楼 的帖子

可以到这里去下载一个
http://www.cn-dos.net/forum/viewthread.php?tid=25914
作者: 54cml    时间: 2009-2-15 19:11

http://bbs.verybat.org/thread-15664-1-1.html
这种方法也是挺不错的^_^
作者: Batcher    时间: 2009-2-15 19:16     标题: 回复 11楼 的帖子

顶楼方案一也是用的映像劫持,只不过修改注册表使用了VBS,目的在于摆脱对reg.exe的依赖。
你那个a.exe是自己开发的么?能否介绍一下?
作者: 54cml    时间: 2009-2-15 19:17     标题: 回复 12楼 的帖子

If Trim(Command) <> "" Then
MsgBox Command
Else
Exit Sub
End If
仅此而已
作者: tireless    时间: 2009-2-15 21:15

54cml 的读取 cmd.exe 的参数的方法不错。鉴于此,也可以用 wmic。
导入以下reg文件,再运行加密的exe:
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
  3. "AutoRun"="wmic PROCESS where Name=\"cmd.exe\" get CommandLine>%temp%\\路径.txt&start notepad %temp%\\路径.txt&exit"
复制代码
恢复注册表键值:
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
  3. "AutoRun"=""
复制代码

作者: Batcher    时间: 2009-2-15 21:27     标题: 回复 14楼 的帖子

这个无法防止exe中可能包含的恶意代码的执行吧?
作者: tireless    时间: 2009-2-15 21:35     标题: 回复 15楼 的帖子

尾部有个 exit,exe里面的bat应该不会被执行。要不你测试下 cs.exe
作者: zqz0012005    时间: 2009-2-15 23:26

exe里面释放的bat虽然不会执行,但exe本身可能含有恶意功能。
作者: zqz0012005    时间: 2009-2-15 23:36

我曾经也是用的给CMD加启动项的方法:
  1. reg.exe add "HKCU\Software\Microsoft\Command Processor" /v "AutoRun" /d "wmic process where \"name='cmd.exe'\" get commandline | findstr /irc:\"cmd[.exe]* /c\"&pause&exit" /f
复制代码
找到bat后拖到此解密脚本上
  1. attrib -s -h -r %1
  2. echo.>tmp.txt
  3. copy tmp.txt+%1 "%~dp0%~n1.crack.bat"
  4. del tmp.txt
复制代码

作者: tireless    时间: 2009-2-16 02:56

测试发现,利用映像劫持或者修改 Command Processor AutoRun 的方法都不太可靠。例如以下两个测试文件,用这两个方法就行不通:

关卡巴程序.exe 用OllyDBG解出来了,批处理工具箱.exe 没解出来...

[ 本帖最后由 Batcher 于 2009-5-9 21:52 编辑 ]
作者: Batcher    时间: 2009-2-17 15:00     标题: 回复 19楼 的帖子

经测试,批处理工具箱.exe使用方案三可以破解,其它方法还没试,最近工作比较忙。
  1. @shift 1
  2.               @shift 1
  3. @ECHO off
  4. color 0A
  5. MODE con: COLS=62 lines=24
  6. :main
  7. cls
  8. title 东拼西凑个人批处理工具   作者:冰剑  www.is28.cn
  9. echo.
  10. echo           www.is28.cn  ╭──────────────╮
  11. echo    ╭─────────┤    东拼西凑批处理工具箱    ├─╮
  12. echo    │ 主菜单           │                 V1.5.1027  │  │
  13. echo    │                  ╰──────────────╯  │
  14. echo    │ [1]系统优化     [2]系统安全     [3]系统修复        │
  15. echo    │ [4]系统个性化   [5]系统工具     [6]                │
  16. echo    │ [7]             [8]网络搜索     [9]其他功能        │
  17. echo    │                                                    │
  18. echo    │ [V]进入作者特别推荐的批处理学习与交流论坛!        │
  19. echo    │ [A]关于程序     [W]作者主页     [Q]退出程序        │
  20. echo    ╰──────────────────────────╯
  21. ::下面的代码省略了
复制代码

作者: zqz0012005    时间: 2009-2-18 20:58     标题: 回复 20楼 的帖子

用我18楼给CMD加启动项的方法可以得到。
cmd /c ""C:\WINDOWS\Temp\a00785.bat" "C:\Documents and Settings\user\桌面\关卡巴程序.exe" "
cmd.exe /c C:\DOCUME~1\USER\LOCALS~1\Temp\bt3410.bat "C:\Documents and Settings\user\桌面\批处理工具箱.exe"

其中关卡巴程序.exe启动的CMD是隐藏的,但我运行批处理工具箱.exe时,把两个都显示出来了。

[ 本帖最后由 zqz0012005 于 2009-2-18 21:01 编辑 ]
作者: xouou_53320    时间: 2009-3-16 00:01

用HIPS轻松拦截temp目录的bat文件
作者: xiaojinglf    时间: 2009-6-8 21:52

如果安装有hips软件。例如eq。可以轻易处理这个
bat或者cmd生成时会被其fd提示。允许创建,禁止删除。就可以在%temp%得到释放的bat。
作者: tireless    时间: 2009-6-28 19:39     标题: 方案四的第一个reg文件可改为

  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
  3. "AutoRun"="echo %cmdcmdline%>\"%temp%\\batpath.txt\"&start \"\" \"%temp%\\batpath.txt\"&exit"
复制代码

作者: hacker_    时间: 2009-7-5 19:05

救命啊!
我复制了楼主那段代码来运行之后CMD和所有的bat文件打不开!
有什么方法解决啊!
作者: weiyepin    时间: 2009-7-7 11:56

很好很强大的方法!呵呵,又学了一招
作者: dahual    时间: 2009-7-9 16:11

根据11楼 54cml 所述原理,动手写了个可检查 .exe动态释放.bat的;程序完全智能、绿色无污染,方便新手使用。
xp sp3下测试通过。

问题已解决,这里:http://dahual.ys168.com/   工具\DIY\
作者: huziivy    时间: 2010-1-29 15:15

谢谢  学习下  正在需要
作者: iamjyb    时间: 2010-12-6 19:55

不必这么麻烦,我已经发现了破解了QUICK BFC加密程序
作者: yzyd110    时间: 2011-6-28 08:18

这个要学习一下
作者: yhp1996    时间: 2011-8-2 21:50

木有必要啦
主要就三种加密方法
先看看能不能解压
再运行后全盘搜索*.bat或*.cmd看看又没有放出什么文件
最后不行就用winhex,直接把内容复制出来就行
屡试不爽
作者: Batcher    时间: 2011-8-2 23:31

回复 33# yhp1996


请看3楼第一句
再考虑下是否有必要
作者: ycxw2008    时间: 2011-9-6 19:56

樓主,我太愛你了,我就喜歡這樣的.万分感谢
作者: garyng    时间: 2011-9-30 16:49

回复 1# Batcher


    CS.exe下不了啊~
    链接失效了~
作者: strong12345    时间: 2011-10-3 10:32

虚拟机+监视 就可以了
也可用沙盘
作者: yefeng007520    时间: 2013-10-24 13:25

正在学习批处理,路过看到,看帖回复支持一个。。。。。。。
作者: tail88    时间: 2014-12-26 14:11

感谢分享啊。
作者: torrent151221    时间: 2015-12-29 09:39

链接都打不开呢
作者: cmd1152    时间: 2021-11-6 19:10

打开 任务管理器=>查看=>选择列=>命令行=>确定
然后运行程序,找到cmd.exe,就可以发现:C:\Windows\system32\cmd.exe /c ""C:\xxxx\xxxxx\xxxxxxx\xxxxx.bat" "
其中,红色字体是批处理路径,但不防恶意代码。
作者: shaokui123    时间: 2024-4-23 14:22

感谢分享谢谢了




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2