|
来源:lam's blog
* ~* Y& f' j2 m) Z1 ~2 {" k5 b( L最近好象又开始流行播放器里插木马了,我于是在网上转了转,看有没有什么好东西能预防的. % t% p& D1 F+ K0 d$ Q& k
结果在安天CERT小组 看到了这个:
" w3 J1 F; {0 K- `# j软件名称:exe2swf
) A/ D3 j) f% z- Y$ L, S适用系统:WIN 9x/ME/2000/NT
( _7 x1 n% Y' m: X/ z( o文件大小:11K
& {* ]# {; [) \5 `9 S2 x% c/ j文件说明:FLASH格式文件转换器为了防止有人在可执行的FLASH格式文件(.exe)中夹插木马,或者用flash图标的木马冒充flash文件,编写了一个简单的工具。
# D _9 M6 w) r M$ C下载:http://soft.hackbase.com/37/20050319/6389.html
+ Q) P L+ S" |6 s哈,但是还有还想不到的呢,我找到了一段可以实验这个功能的代码 , F+ y3 E* R. R; n. g! e( `
作者:海娃
. u" b. s/ F2 V v: ]' L! t用法:
. `& q$ F% k% c5 h" @: u/ s+ m
# P1 \" x3 P+ A: S- 将下面代码存为 exe2swf.vbs
7 g0 l( D, e! Z2 l8 Q$ L
- 将exe格式的flash拖放在此文件上,即可生成swf文件,
! D Q+ z5 i/ q" I5 f
' E9 q9 U, g Q; ]/ E5 n" T
'haiwa@http://www.51windows.Net8 e2 U: L& I7 ^6 a- K( i# T1 q3 ?* R: W
'感谢jimbob提供帮助.) T l! w0 _* g
dim AsoR,FlashFileName2 t4 f+ N. B) g! c
Set ArgObj = WScript.Arguments " d: X* J: r) h" k$ d
dim PositionStart,OKed,Tag,EndSize/ t4 }' ?2 p; Q# N+ N# f
PositionStart = 920000'flash 4的播放器的大致字节数
, b/ z! t2 A1 y: ?EndSize = 8 'exe文件结尾字节数,其它版本可以设置为0
" p" _0 n# @. T: Y: S+ W# @1 ]# v# jFlashFileName = ArgObj(0)'传递路径
# H9 @% s( b; ~: h/ @set AsoR=CreateObject("Adodb.Stream")' ?/ ~& s/ M5 I2 v$ P7 X8 K3 V
AsoR.Mode=3
4 s# J e# A! d+ `* d2 ?4 GAsoR.Type=1
- K% n# A' P; x; E3 ^, qAsoR.Open
9 o- {7 I" v! D/ [4 [8 v; Fset AsoW=CreateObject("Adodb.Stream")
/ E: h! c( s& c: j) DAsoW.Mode=3
! f4 l4 X0 H0 A; D/ y0 ], S, z8 X/ ]. RAsoW.Type=1
: g1 d+ D% w, E; W3 t4 f" TAsoW.Open- E( h; M8 t) e
AsoR.LoadFromFile(FlashFileName) ) [8 ~( D& m3 E" _% J, H) Q
OKed = true$ z V8 s2 {( f- N) ]
dim filesize
' n4 `1 J0 v1 ?filesize = AsoR.size 2 b2 M8 x3 d+ x7 o
if filesize> ositionStart then
( o' R- ^5 J; N! d while OKed& B! }% |# F& ?$ m3 e0 z+ O$ B
AsoR.Position = PositionStart+ x4 M2 M, P1 D7 B
Tag = Bin2Str(AsoR.read(20))$ s0 e- B# Y* I( T) Y7 ^2 [
if instr(Tag,"0000000") >0 then2 F/ i; g% }' b" X, P5 y
PositionStart = PositionStart + 1
- {. u8 J7 P( A' B. d else6 ~4 t! F2 W" { s6 q( V# e9 e
PositionStart = PositionStart + 20# O0 U& H# Y' }' v2 {1 H3 K
end if
, p$ _, B, I0 L% {5 Q0 F if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then
1 d& t6 s4 b+ W OKed = false, Q Z3 ~2 }, m( r3 s
end if
8 s. a& I; l- l 'if PositionStart > filesize then
% N$ x+ N" f7 X$ `( ?+ J ' OKed = false
. r' d' }1 Y7 | 'end if
6 V2 G! i/ w; e) h wend: d( g8 s) F- X+ h) z8 Q9 ?
else: k/ h0 S% w2 g% a1 t# a \
msgbox "文件错误"7 E/ x* L ~' p2 p
end if
% X7 Q* y+ f1 B" E" H3 ~PositionStart = PositionStart + 16
$ ^, b! |/ E; c+ W' F'msgbox PositionStart0 @/ Q; p, w. q$ {/ Z
AsoR.Position = PositionStart5 Q0 R; O! E. F" F
AsoW.write AsoR.read(filesize-int(PositionStart)-int(EndSize)) m* @! `: P" p
'新文件名0 j+ H8 E1 P s$ b* W; g5 O: W
dim newFileName
% p) |: z3 n5 h9 O'newFileName = left(FlashFileName,len(FlashFileName)-4) & ".swf"
V7 e1 V8 X( P1 R; Q) Z0 p4 z3 d) T0 ynewFileName = FlashFileName & ".swf" I" v3 I/ V" M: k$ s
Set fso = CreateObject("Scripting.FileSystemObject")
0 K4 W0 n( X& u: Q. qIf (fso.FileExists(newFileName)) Then) t& e- W8 O$ @& z
overwrite = msgbox(newFileName&" 已存在"& vbnewline &"要替换它吗?",308,"文件已经存在 - exe2swf脚本")
1 m; a; X8 a, N' a- Q8 k if overwrite=6 then4 B3 @5 X' p6 A& x8 ~' _% P
AsoW.SaveToFile newFileName, 2
4 }2 ]5 s# C* j3 [ S" W else: a- d/ X5 y w+ g/ K
msgbox "操作被取消",0,"exe2swf脚本"
, C* o5 r1 z2 `$ {6 p { end if
/ P# u! W L) D# Lelse
2 p8 n) |* D7 }1 f) H w2 q' I AsoW.SaveToFile newFileName, 1
+ E! z4 y$ `3 H* mend if
6 Y) O3 {5 Q- k0 @- U. z1 j8 X$ NAsoR.close& T1 W) z1 O! U! x0 Q7 F
set AsoR=nothing
6 ^! {3 ~- L7 |5 QAsoW.close
9 C9 [ L. T. A0 x4 nset AsoW=nothing
) v6 ~9 S! U; h. W0 p3 ]( o! qFunction Bin2Str(Bin)
" a' u/ Y! Q/ E. F) b2 j Dim I, Str
5 _9 p5 Z' X- M For I=1 to LenB(Bin)
& j3 g; y* L1 o; m6 j clow=MidB(Bin,I,1)+ f+ Q9 R$ G( }
if ASCB(clow)<128 then
2 O. x5 m5 s5 F* x4 v' w Str = Str & (ASCB(clow))
- Q2 }- Y! e6 C+ j# p5 K* j else& X) g \4 o# S6 Q+ s2 N
I=I+1; N% c# h2 V6 e
if I <= LenB(Bin) then Str = Str & (ASCW(MidB(Bin,I,1)&clow))
$ W6 }7 }6 l- R& p6 Q5 S' k" d! | end if2 U$ e1 x( ^4 r$ A) z: h+ B9 @
Next
. S5 l6 c+ G. |- k; U# |. ] Bin2Str = Str
( Y) ^' \: P0 n$ xEnd Function
& g# Y& l2 M6 \- z1 x4 N
9 A% E- G/ L( ~0 R8 R. v3 u" r7 | |