WINRAR自解压文件并自爆、自删除、删除自身、删除本身
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本人思考这个方法的初衷是在RAMOS内存系统下,将绿色软件压缩以节约空间,如果不运行,就是个压缩文件。
WINRAR自解压文件无法删除自身的原因在于自己不能给自己剃头,因为程序正在运行中,所以必须在进程中杀死它才能删除自身,因而思路是:建立一个批处理文件来完成这道工序。
在本人的内存系统下的思路是,做一个假的程序运行文件去运行这个批处理文件后,在系统进程中杀掉假运行文件,然后命令它解压WINRAR自解压文件,用真运行文件替换假运行文件,最后删除WINRAR文件,批处理文件也可删除自身,实现无痕迹解压并运行,总共分三步:
1. 建立一个批处理文件,用一个叫做BAT转exe的小软件将它转成exe文件,为了美化,可以用图标软件给它加上自己喜欢的图标,如果第二步的批处理文件名称不变,这个exe文件可通用于任何程序下。这样写:
@ECHO OFF
MLD.BAT
REM 运行的批处理文件起名为MLD.BAT,
EXIT
2.建立中介批处理文件MLD.BAT,示例如下(以KMPLAYER为例,压缩文件起名为SLF.EXE)
@ECHO OFF
if "%1"=="h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
for /l %%i in (1,1,300) do echo %%i >nul
rem 延时
NIRCMD.EXE KILLPROCESS KMPlayer.exe
rem 这是用的NIRCMD增强命令,不安装NIRCMD直接用DOS命令时,可这样写——TASKKILL /F /IM KMPlayer.exe /T
for /l %%i in (1,1,300) do echo %%i >nul
REM 延时
SLF.EXE
rem 运行压缩的自解压程序
for /l %%i in (1,1,300) do echo %%i >nul
rem 延时
del slf.exe /f
rem 删除自解压程序
del %0
rem 删除本bat文件自身,免留痕迹
EXIT
3. 压缩WINRAR自解压文件时,要注意解压后文件与前两个文件在同一目录下,以便于运行,在“高级”选项的“自解压选项”下,将“设置”下的“解压后运行文件”中填写上要运行的主程序名称.exe;将“模式”下的“安静模式”选“全部隐藏”;将“更新”下的“更新方式”选为“解压并替换文件”,“覆盖方式”选“覆盖所有文件”。
这样就成功了,这里给个示例,/share/link?shareid=445792&uk=2031006351 绝对没有病毒。这是很早以前做的,MLD.BAT批处理文件中没有最后删除自身的一句del %0,可自己加上
另一种制作单文件可删除自解压文件的方法:
若安装了nircmd,可用另一种方法制作自解压文件,实现单文件自解压并删除:做一个bat文件放在压缩包内,在压缩时的高级->自解压选项->设置->解压后运行中填写批处理文件名称,bat文件这样写(以压缩文件名称slf.exe为例):
@ECHO OFF
if "%1"=="h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
for /l %%i in (1,1,300) do echo %%i >nul
NIRCMD.EXE KILLPROCESS slf.exe
rem taskkill命令似乎不能终止进程,其它win自带命令或可,可自行测试。for /l %%i in (1,1,300) do echo %%i >nul
del slf.exe /f
for /l %%i in (1,1,300) do echo %%i >nul
del %0
EXIT