|
来源:lam's blog
& ~% A, y) I8 j# w# D# S3 o4 J最近好象又开始流行播放器里插木马了,我于是在网上转了转,看有没有什么好东西能预防的. 9 {& |/ N! \+ G( R( }
结果在安天CERT小组 看到了这个:
& S/ [2 [9 }9 a) k. F软件名称:exe2swf3 S6 @9 P$ @9 B( F7 n
适用系统:WIN 9x/ME/2000/NT
+ j* X/ L* f8 {文件大小:11K
# [ Z" S$ ]' d! C* k: q( m- d文件说明:FLASH格式文件转换器为了防止有人在可执行的FLASH格式文件(.exe)中夹插木马,或者用flash图标的木马冒充flash文件,编写了一个简单的工具。
* v" U& `$ F: n+ n. x下载:http://soft.hackbase.com/37/20050319/6389.html
2 B, n# G$ m$ R. P4 R/ U @; Z哈,但是还有还想不到的呢,我找到了一段可以实验这个功能的代码
5 v. R( u( u9 P2 x' N9 _! x2 ^作者:海娃
4 H6 l6 h, ]3 b+ _9 C用法: 9 V7 n7 p3 W. }
6 r7 D0 H. L$ \1 h# E- D. C2 T
- 将下面代码存为 exe2swf.vbs : H7 V3 m0 q, O# `
- 将exe格式的flash拖放在此文件上,即可生成swf文件,
. B* n" F6 E7 @ }6 ^7 x
% x6 m+ C3 s E7 B$ L'haiwa@http://www.51windows.Net
" Q J9 C! n8 }+ ~0 W! x'感谢jimbob提供帮助.1 x3 J/ R* t" u" B% q3 u6 W! t
dim AsoR,FlashFileName) D9 b$ E1 D" N" C8 p9 n; V
Set ArgObj = WScript.Arguments 6 W' D0 ^ `7 Q0 i5 a. V$ ]
dim PositionStart,OKed,Tag,EndSize0 y- T& Y7 q. l, c% |( n
PositionStart = 920000'flash 4的播放器的大致字节数
: f" ^' Q) P. {6 z/ ]EndSize = 8 'exe文件结尾字节数,其它版本可以设置为05 D4 ?0 n8 l( s* n; B
FlashFileName = ArgObj(0)'传递路径 . p9 B% L; E" p. m
set AsoR=CreateObject("Adodb.Stream")4 l' L2 F0 x2 {4 O& ~: d
AsoR.Mode=3 ( I1 {" B1 F) D2 a, c* f; V1 S* Z5 W C
AsoR.Type=1 % j/ |. ~7 y7 l7 S! E- @
AsoR.Open
! p/ |: ]$ V: p: w! nset AsoW=CreateObject("Adodb.Stream")/ _4 N! R6 |) R
AsoW.Mode=3
3 \( T# D- L( E" B) {8 xAsoW.Type=1 9 m+ `$ q3 r5 A5 d) l- K
AsoW.Open
3 L% p4 L3 r1 C& N* ~0 i7 `AsoR.LoadFromFile(FlashFileName) % ?/ Q& i$ J4 q8 `& M& g
OKed = true
) b% Y% A$ N$ o/ ]1 C8 Z- ndim filesize: U# c" [1 c" P
filesize = AsoR.size " Z. a5 r. R: q% B
if filesize> ositionStart then, r3 H0 t" [7 w; W* r6 h
while OKed
& n8 }! x5 {3 n" r AsoR.Position = PositionStart I$ S2 m* g2 R0 Y$ h: x8 e a
Tag = Bin2Str(AsoR.read(20))
% E( x2 n( b$ ~6 N if instr(Tag,"0000000") >0 then d9 f7 N' q7 U; i7 d
PositionStart = PositionStart + 1
" f6 L8 X9 h8 y7 |; i! L else+ R$ S N8 U! y& ?$ L3 ]
PositionStart = PositionStart + 20. g8 S$ O7 t5 R2 d3 P- w4 j
end if
6 E) z3 f ^, M" j. t if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then, p% ~3 V( y2 ]
OKed = false% s z \0 {+ W- g2 n
end if
) j& A1 u% T# G& B8 U8 ]+ F( z 'if PositionStart > filesize then
- X5 T2 v r! P0 }5 {( ?7 h# [ W2 ? ' OKed = false4 z! ^- n3 i" Z' E1 _
'end if
( G# w1 X6 q- q7 s$ `( a wend
% ^$ R7 v3 [7 g" ^8 c: S# f$ Lelse
$ Z Q1 p4 x7 R& E; [+ w% | msgbox "文件错误"
5 B3 B4 e8 L% O& O$ Z: f1 Fend if
; p) K& j- V" m( I; a0 c- y+ ^PositionStart = PositionStart + 166 o1 ~% X9 O' y$ t3 t% A8 h
'msgbox PositionStart
0 _4 M' L' h5 IAsoR.Position = PositionStart; j; n7 N* y; \- k- c2 Q8 W. z
AsoW.write AsoR.read(filesize-int(PositionStart)-int(EndSize))
- e( x( H T6 V5 s, k'新文件名* q2 V% E4 l: M K4 d
dim newFileName: ?* x: U+ ^% Z5 ^; h/ F' u
'newFileName = left(FlashFileName,len(FlashFileName)-4) & ".swf"( E. R# O+ v1 V1 {: |
newFileName = FlashFileName & ".swf" 2 G* Z/ J# ~' U; P. w$ ~9 s
Set fso = CreateObject("Scripting.FileSystemObject")/ L* `6 X8 S1 X6 Y$ V# P
If (fso.FileExists(newFileName)) Then) y1 W: z* W2 c4 E- p1 \5 E
overwrite = msgbox(newFileName&" 已存在"& vbnewline &"要替换它吗?",308,"文件已经存在 - exe2swf脚本")
. e6 I9 E! ^1 }* R: q& |, r3 ] if overwrite=6 then
8 h3 y- y4 n F. F AsoW.SaveToFile newFileName, 2, M8 B& @/ A# C- g+ I
else
. o6 D% Q8 t3 w1 ?3 Y! {, N: B msgbox "操作被取消",0,"exe2swf脚本"$ R0 o- _* C' Z; ]
end if0 h: }) g L/ G9 L% f
else" b0 Y1 ~6 ]( g. F3 K5 b1 b
AsoW.SaveToFile newFileName, 1/ J6 H2 e' D9 _1 n
end if / B# F$ R, M/ L5 |7 A0 X6 c$ p
AsoR.close
$ }) f% @, E( V; W: Nset AsoR=nothing
! N, T% C3 e3 QAsoW.close( n. a+ s8 u: j7 n! @+ G
set AsoW=nothing
+ s& B4 H/ _6 Q* N; @; H+ Z7 y, ?Function Bin2Str(Bin), C% ]+ }1 L" s6 L+ }- b1 E
Dim I, Str
( n9 O/ m+ T6 c W( k7 o& M6 m For I=1 to LenB(Bin)
6 R: Z2 i, v% k% l# P4 O# Z) I clow=MidB(Bin,I,1)
) {, ^9 H. P. A if ASCB(clow)<128 then
# {3 |1 l+ Z0 w3 ] Str = Str & (ASCB(clow))
3 K" U. ~! b; ?3 @/ p2 w else
) c( M/ `4 U2 {+ I, M2 Z8 H: } I=I+1! n* b/ a h& [9 Z
if I <= LenB(Bin) then Str = Str & (ASCW(MidB(Bin,I,1)&clow))
! |# L/ R( w: _0 ?) @- @; h end if
" w# N( _( N4 Q: m, e: D Next
# a v$ T; i* {8 E Bin2Str = Str2 u% ]1 O, f: n' t0 C6 i& O
End Function 1 p" o7 o' d' H1 V' o& q! L
: N. f) {! r5 H* O |