中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何把EXE文件的首行内容和尾行交换
作者:
标题: 如何把EXE文件的首行内容和尾行交换 上一主题 | 下一主题
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『楼 主』:  如何把EXE文件的首行内容和尾行交换

我是这么想的,先把D盘里面的所有.EXE修改为.TXT,然后把TXT格式后的EXE首行内容与尾行互相交换,请问这个能实现么?

我这里有一段交换的代码,是JM整理的,自己看的不是很明白,希望高手能帮忙写个事例..

比如:我要将D盘的123.EXE修改为123.TXT,然后在交换首尾行的内容.

决非用与不良企图,纯粹为了研究.希望大家能帮忙满足下!~

@echo off
:: 目的:把首行和尾行互换
:: 思路:
::     提取第一行和最后一行内容(若首行和最后一行是空行,则提取到的是非空的第一行和非空的最后一行内容),
:: 然后在新文本的首行写入提取到的最后一行,用 findstr 语句过滤掉原文本的第一行和最后一行,在最后一行
:: 之后添加提取到的第一行。
:: 因为 findstr 处理最后一行有条件限制,所以先在最后一行之后生成一个空行,以保证提取的准确性
:: 注意:请保证test.txt中没有敏感字符,没有内容重复的行,并且首行不能为空
:: code by jm 2006-11-5 CMD@XP
:: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24563
copy test.txt test.bak>nul
echo.>>test.txt
set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
    set str=%%i
    set /a num+=1
    if !num! equ 1 set var=%%i
)
>test_.txt echo.%str%
findstr /b /e /v /c:"%str%" /c:"%var%" test.txt>>test_.txt
>>test_.txt echo.%var%
move test.bak test.txt
start test_.txt
goto :eof

@echo off
:: 可以处理首行为空、行内容重复的情况,
:: 注意:因为 findstr /n 统计行数的时候,会忽略最后一个空行
:: 所以,若在最后有空行的话,请保证空行的个数大于1
findstr /n .* test.txt>tmp1.txt
for /f "tokens=1* delims=:" %%i in (tmp1.txt) do (
    if %%i equ 1 set str=%%j
    set line=%%i&set var=%%j
)
>tmp2.txt echo %line%:%var%
findstr /b /v /c:"1:" /c:"%line%:" tmp1.txt>>tmp2.txt
echo 1:%str%>>tmp2.txt
echo.>>tmp2.txt
cd.>result.txt
for /f "tokens=1* delims=:" %%i in (tmp2.txt) do >>result.txt echo.%%j
del /q tmp1.txt tmp2.txt
start result.txt



逍遥@浪子@反病毒
2007-12-8 17:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 2 楼』:  

你不会想二次"熊猫烧香"吧.大哥!

2007-12-8 17:48
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 3 楼』:  

exe文件里面有大量非ASCII字符,而且行对于exe文件的意义和对文本文件的意义不同,你用批处理修改后将无法还原。
P.S.你直接用记事本打开一个exe文件然后保存,那这个文件也就报废了

[ Last edited by dikex on 2007-12-8 at 07:34 PM ]



正在潜水修练的批处理小白
2007-12-8 19:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

3楼正解
真佩服楼主这种怪想法,能是能但绝对不是你说的方法。这种技术太邪门还是不说的好。



第一高手    第二高手

2007-12-8 21:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
halulove
初级用户





积分 43
发帖 19
注册 2007-8-19
状态 离线
『第 5 楼』:  

不知道你为什么要改?
不过建议看看PE文件格式!

2007-12-8 22:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 6 楼』:  

我是想写个病毒演示程序罢了,既然无法实现,只能全部感染了....
因为我写病毒演示都是留两条后路,方便朋友测试玩的
既然这个修改的办法没办法实现,只有全部备份到指定文件夹后,全部感染了...当然,这个写卸载是没办法写的了,因为无法判断原文件具体的位置,所以无法自动还原了...虽然如此,但还是感谢各位朋友的赏脸看我帖子,谢谢了!~



逍遥@浪子@反病毒
2007-12-9 17:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: