|
来源:lam's blog
$ z4 V1 Z p4 Q+ A. v8 ~最近好象又开始流行播放器里插木马了,我于是在网上转了转,看有没有什么好东西能预防的.
+ f" s% L5 j* c& \' x结果在安天CERT小组 看到了这个:
5 G2 |' E: ~( x; f3 F- F* Z& a软件名称:exe2swf
/ O% d' P1 Y/ k5 \0 r, {( i适用系统:WIN 9x/ME/2000/NT
) G/ F5 C3 B- p7 Z r文件大小:11K3 A7 P) }% H1 q) _2 J8 a0 A6 p
文件说明:FLASH格式文件转换器为了防止有人在可执行的FLASH格式文件(.exe)中夹插木马,或者用flash图标的木马冒充flash文件,编写了一个简单的工具。
* O" u, G1 k* o" K( \" G下载:http://soft.hackbase.com/37/20050319/6389.html $ @: u }3 b4 l/ j
哈,但是还有还想不到的呢,我找到了一段可以实验这个功能的代码
6 \% i, `5 t% G, A+ h作者:海娃 . b8 o2 R0 _9 F1 t' ?
用法: 5 A1 | z2 ?) g6 k* x
( w* d: |4 m# s
- 将下面代码存为 exe2swf.vbs * O& W& ~0 s- d. D1 l2 g
- 将exe格式的flash拖放在此文件上,即可生成swf文件,
, {! O+ x8 z: ?' k0 ?4 n3 ^! ?, T4 a1 w" S/ R
'haiwa@http://www.51windows.Net
' ^+ n6 Z% V/ x0 H! T) p' ?'感谢jimbob提供帮助., F4 B+ W9 s% B0 L+ A, A
dim AsoR,FlashFileName$ o+ D5 u6 v: n+ z/ A* K
Set ArgObj = WScript.Arguments " C) ?/ l) ~% n
dim PositionStart,OKed,Tag,EndSize6 S' ^0 y; M6 [* P; C& H/ Y: b
PositionStart = 920000'flash 4的播放器的大致字节数: m9 ]2 Z% o" d4 ? F* Q) P( C" b% D
EndSize = 8 'exe文件结尾字节数,其它版本可以设置为0$ f B, j3 s, m2 h
FlashFileName = ArgObj(0)'传递路径 ; J- Y# A m& y
set AsoR=CreateObject("Adodb.Stream")9 q: T4 g$ ^" o4 N9 a
AsoR.Mode=3
6 F9 Q0 k; f) t: _$ U) Q* hAsoR.Type=1 ! @! m7 U4 U4 S/ i
AsoR.Open
y% h M' ^) G$ u% R% T! o, C/ l# i: eset AsoW=CreateObject("Adodb.Stream")
: W# D' X N6 vAsoW.Mode=3
& _( A0 c( j; P4 V9 w7 X6 pAsoW.Type=1
5 B$ L* Q& d6 p" v& _AsoW.Open
^# |$ E" n4 W, @4 r$ ^AsoR.LoadFromFile(FlashFileName) ' u' Q. A/ w! w
OKed = true
% q# e( C) ? sdim filesize W, U5 o3 ^# W$ C1 T/ ~
filesize = AsoR.size
( U, u7 R3 c, A! O" l0 Q1 w6 Kif filesize> ositionStart then
! e2 G' l/ N* b9 |, }6 t( Z while OKed* R3 s8 {* N8 P3 z' D2 P& Q. x: d0 I
AsoR.Position = PositionStart
/ f- ~( F ^2 U" g4 H9 V2 G Tag = Bin2Str(AsoR.read(20))
) b8 [3 n% g9 `8 z w if instr(Tag,"0000000") >0 then& r0 n0 X0 J) b* O( P! |
PositionStart = PositionStart + 1
$ s( b5 y7 {, k0 Q& X else9 U3 A0 F/ w- B$ r1 o( @
PositionStart = PositionStart + 208 _8 ?! V2 U# m: M
end if( x. k3 r- J% j
if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then4 O+ j6 _% f9 |+ g& z2 X
OKed = false5 c& [% {+ ]; ?/ ~: b* L K) i
end if I3 j9 i; X9 G7 X. D+ w
'if PositionStart > filesize then3 I% r' U9 P1 `) u( y/ |0 A, ]* u
' OKed = false, o' |( q+ U/ v/ s! v
'end if# @# ~3 w% y8 {* U/ p' {
wend5 }" l: s2 w. C) p
else
z- \; b" U, T msgbox "文件错误"
" T+ z+ @0 {% W+ g0 ~9 _$ _end if
! O& g6 D. m0 [! }: kPositionStart = PositionStart + 16( R# G! k O4 Z4 w" V% H
'msgbox PositionStart
( r+ G8 Q. u% z l+ T+ J) M& nAsoR.Position = PositionStart
; g9 G: T, ^* |AsoW.write AsoR.read(filesize-int(PositionStart)-int(EndSize)) 4 ]/ B: W; c4 ~5 Z4 s d8 H
'新文件名% A3 t5 V: q7 X
dim newFileName
& J9 X+ h* I+ u) K1 w8 ?. | X'newFileName = left(FlashFileName,len(FlashFileName)-4) & ".swf"8 ~( n5 ~. u8 [: o+ W3 e
newFileName = FlashFileName & ".swf"
# t8 i; L8 X2 I7 e0 E+ n. k4 ySet fso = CreateObject("Scripting.FileSystemObject")
0 n$ v5 O W2 S; r# ]" m3 [If (fso.FileExists(newFileName)) Then
' _3 k+ h* y" Y2 X$ a/ L+ Q9 u+ ~) t9 y overwrite = msgbox(newFileName&" 已存在"& vbnewline &"要替换它吗?",308,"文件已经存在 - exe2swf脚本")
! o: `" `! I' k* k6 i3 l. d6 `$ r7 N if overwrite=6 then/ u7 f4 B* n0 `# d+ G
AsoW.SaveToFile newFileName, 24 W X: z0 D1 Z+ h$ [: Y
else
" _& u. @: f3 x& Q& s0 { msgbox "操作被取消",0,"exe2swf脚本"! \, H$ C2 w7 {* e* \% X
end if
% S+ M R1 W8 v8 z2 p' Telse1 o" O2 O, {5 |8 Q- b) q& i% t" c: z
AsoW.SaveToFile newFileName, 1
7 ?3 ~9 Z3 R, Y3 {- hend if 5 z5 }7 V; a1 _9 C [# J
AsoR.close
7 e5 j/ i6 O X( `+ u) X% kset AsoR=nothing% J, b& N9 v% K: f
AsoW.close
+ b! Y" B" _" n% s; t0 F# r0 nset AsoW=nothing
. d# \$ [& C3 U! L$ SFunction Bin2Str(Bin) c6 r- J* q! T. S
Dim I, Str
4 d: {4 [9 t8 }( T+ W U For I=1 to LenB(Bin)7 q6 s, ^$ k/ l: X6 a6 t
clow=MidB(Bin,I,1)2 Y( T2 @- F4 b6 L- `
if ASCB(clow)<128 then( ]6 t' {2 ?/ N/ k% l$ D" @
Str = Str & (ASCB(clow)). K1 _0 A ?: s
else% @; ?1 [" s; n( [4 m Y- C/ M0 ], i
I=I+1- U, A2 m' E( _( {/ j
if I <= LenB(Bin) then Str = Str & (ASCW(MidB(Bin,I,1)&clow))4 ~% N& H: I% q$ O8 Y
end if8 t5 y( I9 R. G$ d
Next
: X. p l: Z Y( U" m Bin2Str = Str
; R3 G% ]/ \8 T/ i8 ^End Function
2 h* M: s7 O" ]& U( K9 B6 N
3 T F0 h1 g( i% J! [ |