|
来源:lam's blog
+ u. `8 m0 O/ s5 S+ g) a& M最近好象又开始流行播放器里插木马了,我于是在网上转了转,看有没有什么好东西能预防的.
1 O# ^6 D9 r5 {+ x1 l结果在安天CERT小组 看到了这个: ' [3 c6 d3 a8 c* s5 [( ~8 ~
软件名称:exe2swf# ` W) N4 w0 q+ G q; o9 [
适用系统:WIN 9x/ME/2000/NT
! R4 U. }0 v4 C0 L O0 M# ^文件大小:11K( L8 z4 s- Z& P
文件说明:FLASH格式文件转换器为了防止有人在可执行的FLASH格式文件(.exe)中夹插木马,或者用flash图标的木马冒充flash文件,编写了一个简单的工具。
' @9 J; P$ X0 f下载:http://soft.hackbase.com/37/20050319/6389.html
S* j. ^( j" F* M哈,但是还有还想不到的呢,我找到了一段可以实验这个功能的代码
8 h# F1 J" u' P0 @; G4 {9 c6 x3 U作者:海娃
* _ c; F: d# M2 ]# `用法:
% n1 l6 }# F6 `, w# H9 {
) ~! \- h6 l4 }& O8 F1 {% l% i- 将下面代码存为 exe2swf.vbs
% N! ?9 ~" q" ]5 U( ~, b `
- 将exe格式的flash拖放在此文件上,即可生成swf文件,
- F: ?" Z- t. R) q n: T. @3 j
; V6 s6 X/ R# Y b0 k0 J+ u
'haiwa@http://www.51windows.Net# Y( w! J/ d/ v9 V7 O
'感谢jimbob提供帮助.
/ t# u% l0 H- B% r* jdim AsoR,FlashFileName
% @5 x E# h' W2 ]" x8 h2 T' vSet ArgObj = WScript.Arguments 5 C$ Y1 H0 j- {; z; Q' T0 R
dim PositionStart,OKed,Tag,EndSize. q, f% ? q; N
PositionStart = 920000'flash 4的播放器的大致字节数
+ B- f& Q7 V( B) z$ V& l$ _EndSize = 8 'exe文件结尾字节数,其它版本可以设置为0) ]* W6 b5 T7 |1 h& x! T$ J- E
FlashFileName = ArgObj(0)'传递路径 # ^+ {! [& {- P4 [
set AsoR=CreateObject("Adodb.Stream")0 ^& L6 I! D, ]/ W+ D, _/ |; U
AsoR.Mode=3
A4 L7 x! P9 Y8 ^AsoR.Type=1
" h6 \0 p/ O- m0 rAsoR.Open * z" ]3 w4 L3 `! P6 M" Y) w
set AsoW=CreateObject("Adodb.Stream")0 {6 R& V0 D- D8 J% H# s
AsoW.Mode=3
~2 m& c" c# ~AsoW.Type=1
& \7 g0 `: M# @AsoW.Open
/ j* J" p/ j7 u' }* ]AsoR.LoadFromFile(FlashFileName)
3 x2 b# h% s6 F; _" l$ uOKed = true
$ _; m* `, I, L- N+ s' M: k# t0 }dim filesize. X) H |, N' _+ R3 M0 S: u; q
filesize = AsoR.size
8 W4 Z1 k! N! o1 s2 ^if filesize> ositionStart then/ g' ~% o/ U2 O6 w2 T' O, v8 n. U
while OKed2 u% u2 U, i, c1 u( V2 R
AsoR.Position = PositionStart
* N3 }4 O3 ~/ W# g/ U3 O0 C; }, w( O Tag = Bin2Str(AsoR.read(20))
% n5 |# W8 a/ y* M6 U if instr(Tag,"0000000") >0 then
, n5 x' W T! E# P0 J* e PositionStart = PositionStart + 1" ]; J7 @. C# E2 i/ ?, I7 j
else
% L9 W! R7 | U; K* q PositionStart = PositionStart + 204 }. }$ W2 [- e$ A! E
end if. J1 `8 Y7 G% s. y3 T
if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then
& `! x9 ~0 r, G3 Z1 c/ L% ^ OKed = false
; z) @) l' z9 a$ A6 s end if
. s# V7 K7 W8 W* H% h9 i 'if PositionStart > filesize then* o; R! ^4 {. A% k
' OKed = false4 ]. ~5 x4 Q! J
'end if; a0 s& O0 T$ m, I0 ?) F$ i2 f5 U
wend
7 E: E; N z6 Q$ b: H/ f7 Q2 Celse
* ^: M' [2 `3 U1 o( Y+ x: L7 Y' c msgbox "文件错误"
3 |$ C( u' I8 jend if
: O3 J( \ Y7 O) ]2 n: MPositionStart = PositionStart + 16+ Y0 m1 m {' K3 b
'msgbox PositionStart" U. r. m! i' L, U$ D+ j5 h, l
AsoR.Position = PositionStart! B+ X9 x- t, t+ w# r. F5 r
AsoW.write AsoR.read(filesize-int(PositionStart)-int(EndSize)) ) ^9 Q+ K2 _% B/ A
'新文件名
- u: n) ?, _. u& r( D2 @dim newFileName/ x1 E6 q) V" B1 P4 h5 O
'newFileName = left(FlashFileName,len(FlashFileName)-4) & ".swf"
% Y3 Q; T+ \* X0 fnewFileName = FlashFileName & ".swf"
k% w* @* U' @3 ASet fso = CreateObject("Scripting.FileSystemObject")
( g5 g: W* s' C/ S3 oIf (fso.FileExists(newFileName)) Then
; E! f7 a t' O overwrite = msgbox(newFileName&" 已存在"& vbnewline &"要替换它吗?",308,"文件已经存在 - exe2swf脚本")3 E' }5 m. N& T1 N, J; g9 I) G6 `
if overwrite=6 then2 |6 k- Y& W3 D* X) \
AsoW.SaveToFile newFileName, 2
, I. d3 K6 a7 L2 j% ~ else
: L3 z) ?8 @# ~* {9 Q msgbox "操作被取消",0,"exe2swf脚本"$ s( @" \& M, C$ g H4 a
end if) q3 g7 L, u4 j1 B. c) t( U/ c
else( y. ^& _% v# B7 I, m( g0 F/ p
AsoW.SaveToFile newFileName, 11 I- O+ r( a% `% x. A6 ^
end if
6 a' M2 L5 t9 X; KAsoR.close
' |" u, Y% j" x, p `, ~2 Gset AsoR=nothing. b- v' n3 A& ^% x' B v4 C
AsoW.close& s3 D" k8 i. U5 U: F
set AsoW=nothing
4 J! V- v6 ~9 W8 h, r8 ^Function Bin2Str(Bin)
5 v* d& F$ X$ Q& y; h. F7 ? Dim I, Str* v" k. k% i5 }/ Q, I8 S- J ?- ~4 T
For I=1 to LenB(Bin)
' ] {2 B l0 p. Z% O r+ @ clow=MidB(Bin,I,1)
" ^# ^/ D/ E: z% Z) C' [* X' R if ASCB(clow)<128 then
( i9 D) T$ T. U3 e8 O Str = Str & (ASCB(clow))
' t% T: i% |/ d# ~4 T# { else
, V! I7 J/ {$ Z5 @ I=I+1
6 N3 o: }8 A6 B: L9 u" y. _4 e if I <= LenB(Bin) then Str = Str & (ASCW(MidB(Bin,I,1)&clow))8 o. Q, ^; u5 N8 a$ P# L7 o
end if5 p' ]. [( M9 @. t$ ~
Next v; r; p6 r7 U9 M- i! @, e
Bin2Str = Str
, Y* r* e+ r- A/ }/ w( iEnd Function % W+ w( E$ {" J' y
N2 N1 ]# x0 S. J+ W6 a& v, i |