|
来源:lam's blog
; x( ]3 }$ `/ m) K ~' \ {最近好象又开始流行播放器里插木马了,我于是在网上转了转,看有没有什么好东西能预防的. 8 ~" G# i0 i& x5 i
结果在安天CERT小组 看到了这个:
3 K$ I I( X' H/ N/ ]软件名称:exe2swf' s0 y4 k' _0 }
适用系统:WIN 9x/ME/2000/NT1 X& t: W; \* i- R$ g+ M
文件大小:11K
. v0 |: J+ _/ }4 G文件说明:FLASH格式文件转换器为了防止有人在可执行的FLASH格式文件(.exe)中夹插木马,或者用flash图标的木马冒充flash文件,编写了一个简单的工具。
0 {" q3 g/ k& C: n7 ^; z5 a. F下载:http://soft.hackbase.com/37/20050319/6389.html / Q$ S/ _5 n0 N; ?: z3 M9 b. d. z
哈,但是还有还想不到的呢,我找到了一段可以实验这个功能的代码
4 i1 K# P$ d/ i! S' z6 P作者:海娃
. S+ `4 D5 @2 h z" d用法:
- q2 X; l' _3 L4 u9 d" ?! E" T( G+ I2 s
- 将下面代码存为 exe2swf.vbs
$ o0 {( W) ~$ Y% r3 d v! Y
- 将exe格式的flash拖放在此文件上,即可生成swf文件,
5 J/ d- l$ c2 M3 f7 x
# g8 C L3 n6 i# f+ _$ v'haiwa@http://www.51windows.Net; S) y6 U7 ~" d1 D0 m$ p
'感谢jimbob提供帮助.
5 @- d+ O+ s9 y% S' u7 Xdim AsoR,FlashFileName
7 |# m q8 O' gSet ArgObj = WScript.Arguments ; b9 A/ b3 F0 U; J1 A/ O
dim PositionStart,OKed,Tag,EndSize6 `9 v! w" V6 m4 I# J: [- D
PositionStart = 920000'flash 4的播放器的大致字节数
5 i, z1 D5 o' [2 GEndSize = 8 'exe文件结尾字节数,其它版本可以设置为0
- I3 o* \# m# Z& WFlashFileName = ArgObj(0)'传递路径
# t& s2 V% V$ w8 ]9 D4 X, u* ~0 sset AsoR=CreateObject("Adodb.Stream")
4 L( l: P3 U4 A& G# vAsoR.Mode=3
: M2 V4 y0 z6 o, A9 X, m/ B0 XAsoR.Type=1 ; i9 m) \% J. B, v
AsoR.Open 8 o8 V, h# A$ \5 b% b5 J* J, ?
set AsoW=CreateObject("Adodb.Stream")5 O2 }4 f, {/ ?8 _$ M9 s
AsoW.Mode=3 # e; ~% `& o5 j1 ?' n, c) k
AsoW.Type=1 # s: M% R( \* V
AsoW.Open
n, G. Z. P& c J5 e! l5 V' ~AsoR.LoadFromFile(FlashFileName) + o! I4 c$ ?! Q8 Y! y3 j+ K3 \
OKed = true0 {* V" f$ n% [* A
dim filesize7 [: s O% Y6 S6 V4 y4 e2 ^1 z8 a
filesize = AsoR.size
5 f/ D' O5 S2 A$ B. y; n; Uif filesize> ositionStart then+ y! H% o7 s, U9 |& O
while OKed5 n; ~9 T/ ?5 P4 b$ G8 Z. E
AsoR.Position = PositionStart" o5 L o& M* I3 n' ~
Tag = Bin2Str(AsoR.read(20))4 t7 L7 M' }" O: k
if instr(Tag,"0000000") >0 then/ B6 i* }% F6 L1 Y) {
PositionStart = PositionStart + 19 ]4 z: K0 U; r6 m+ V# y+ ^
else% x4 v: A3 J" P5 h1 @
PositionStart = PositionStart + 20
/ D! r' T: {! f) G end if
% j6 `. [$ f4 z4 D- ]( H7 q. u if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then( n" E" O/ B, m8 N
OKed = false
! Y! U3 }$ j9 }9 p+ r6 f1 f end if
$ L" V/ X0 w$ L; q- D 'if PositionStart > filesize then
* f! @6 _" i5 H2 y. I1 h ' OKed = false' |; J% P+ J7 i9 o3 J, ]$ a
'end if
8 P" \1 T4 @: z% ^% ?5 S wend1 E' A( s/ E# Q* V$ F5 g, Z- ~9 W
else3 |7 ^2 n' u) }; Y
msgbox "文件错误"
! F- v! e; v# W. [/ Pend if' Q7 J% D* \# n$ k2 s' N) ]* ?
PositionStart = PositionStart + 16
! y' ^" |$ ~$ K; {+ ^'msgbox PositionStart+ R+ g" ], x/ c3 R; `( ]
AsoR.Position = PositionStart/ H6 O! G' L2 A9 I
AsoW.write AsoR.read(filesize-int(PositionStart)-int(EndSize)) # L/ p4 Y! ?0 S Y% K6 n1 X+ F4 g
'新文件名 z$ B5 E5 f4 Q O" G
dim newFileName/ M) x1 t% | D/ }7 J3 l
'newFileName = left(FlashFileName,len(FlashFileName)-4) & ".swf"1 U6 }5 a1 U& `. e5 @
newFileName = FlashFileName & ".swf"
3 h" O- r v! A2 b( r; d+ H4 fSet fso = CreateObject("Scripting.FileSystemObject")
$ V# V. N5 e2 |) G& }If (fso.FileExists(newFileName)) Then1 ?5 j4 s( ~& ^
overwrite = msgbox(newFileName&" 已存在"& vbnewline &"要替换它吗?",308,"文件已经存在 - exe2swf脚本")
* |4 ?4 M7 g' q1 p) I$ D9 R( P4 G" l if overwrite=6 then
8 y9 S% _7 d, \1 T0 ? AsoW.SaveToFile newFileName, 21 S( m, z) K# R5 S3 x
else
3 ?5 I: \: A+ R msgbox "操作被取消",0,"exe2swf脚本", e% r6 g4 y8 i8 E; l
end if. ~1 K% s! N4 i
else- u4 K$ d% {) Y9 \ V
AsoW.SaveToFile newFileName, 1 y4 N3 Z6 O5 g9 R% q& h
end if
9 l. E6 N {* \AsoR.close5 _# |/ u0 b/ x/ `
set AsoR=nothing0 \4 e9 i2 u8 t
AsoW.close4 B% ]! \4 O+ A( x( H
set AsoW=nothing # F5 ?' T- q% u( r
Function Bin2Str(Bin)
6 U& t, p: s/ _# E2 h Dim I, Str! X1 N# ^" V1 o5 k
For I=1 to LenB(Bin)* r! X. a$ L; f
clow=MidB(Bin,I,1)
- L( g, r( k q7 V) m if ASCB(clow)<128 then
) v3 m- Q: M, Z) i( F2 C Str = Str & (ASCB(clow))
1 D* r/ H6 j8 S else8 c* l! u# |% h1 Q1 j
I=I+1! j7 k: x0 N6 E3 W3 X; ~
if I <= LenB(Bin) then Str = Str & (ASCW(MidB(Bin,I,1)&clow)) O5 U4 e( |( V1 m8 _0 m- {
end if4 J' m" |2 S& N# u
Next 2 P& p2 D( A! \& A2 _: H1 I8 W
Bin2Str = Str1 k2 ~6 h$ l: y: w+ X1 n4 g
End Function
7 u2 Q% `7 Q3 T1 K, J+ x% E0 J
3 p0 z( ]0 j( c+ m, Y. a |