来源:lam's blog 7 o+ i q9 I; Z5 f+ z3 U
最近好象又开始流行播放器里插木马了,我于是在网上转了转,看有没有什么好东西能预防的. $ x$ ]7 V* A- s: _# n& _3 q2 l
结果在安天CERT小组 看到了这个: 6 R8 @* P" y, p+ M$ q/ K
软件名称:exe2swf
$ W" p, ?; {7 {; z, m适用系统:WIN 9x/ME/2000/NT
4 q) H q$ w5 y0 T文件大小:11K
& e- ]% c- G, O4 r2 k. E文件说明:FLASH格式文件转换器为了防止有人在可执行的FLASH格式文件(.exe)中夹插木马,或者用flash图标的木马冒充flash文件,编写了一个简单的工具。
* |! h0 @5 L! f8 ]下载:http://soft.hackbase.com/37/20050319/6389.html . k# C7 j9 A8 Q1 K5 M
哈,但是还有还想不到的呢,我找到了一段可以实验这个功能的代码
1 e6 M/ a+ C- I1 o+ t9 O作者:海娃
. V3 i- e/ k5 Z5 k! @用法: * A# n; S/ x v; w# q
+ s: {$ w N: w& I- `- v% b3 \- 将下面代码存为 exe2swf.vbs / f. Y( A" X- ?% ~% @4 M f. I
- 将exe格式的flash拖放在此文件上,即可生成swf文件,
/ L6 k& C1 _: |" |: G: V
0 n8 L5 b2 `2 l4 t9 `# {'haiwa@http://www.51windows.Net
6 \3 \* `: U: A0 V( b7 p( C4 e'感谢jimbob提供帮助.
y( d; \0 r6 Ddim AsoR,FlashFileName# m! x5 n9 H; g7 m% B
Set ArgObj = WScript.Arguments A( T b+ ? P' n$ ~
dim PositionStart,OKed,Tag,EndSize3 d3 H. h$ V# d" \6 u! f
PositionStart = 920000'flash 4的播放器的大致字节数+ o/ T; B0 Y3 t4 I* V+ }) }# B
EndSize = 8 'exe文件结尾字节数,其它版本可以设置为0
+ Z! e4 m$ h$ H) v0 BFlashFileName = ArgObj(0)'传递路径
8 V; T, [$ S' l5 A3 u5 J0 r7 ^set AsoR=CreateObject("Adodb.Stream")' L4 n$ ^, D4 z( h4 F
AsoR.Mode=3
) v$ f) T4 @9 M/ N, H2 OAsoR.Type=1
/ F; N1 F$ J( N5 G" NAsoR.Open ; a' _6 V9 ]+ o4 ]: y' I; b
set AsoW=CreateObject("Adodb.Stream")
! i- Z3 ~. S3 r4 n, ?AsoW.Mode=3 / i4 K$ U. Y) J. M) B. @4 ^
AsoW.Type=1
: [! S6 e# p( R. S3 jAsoW.Open9 X& r# e7 b- g+ S0 m& \
AsoR.LoadFromFile(FlashFileName)
2 B7 s7 i6 r$ ^& [( K0 J9 SOKed = true' \& v+ J" x+ ~+ z `2 q
dim filesize
6 j* h3 [" k! l/ B( d1 s/ ]filesize = AsoR.size & d& H/ j q; O5 N1 L7 Y
if filesize> ositionStart then8 B; [; |, x2 I
while OKed9 ^ y7 W+ Z+ m$ p: n' m& |5 K; M9 x
AsoR.Position = PositionStart: ]/ B4 m+ C/ z* n1 `
Tag = Bin2Str(AsoR.read(20))( E/ C7 S+ r. M
if instr(Tag,"0000000") >0 then
. ^; C9 ]3 r0 [9 C- H' g PositionStart = PositionStart + 17 P2 m" W# A# v! X
else- {7 n4 F3 t" R9 G# E( ^- E
PositionStart = PositionStart + 20
8 ?2 H S o- h% @7 \; h. v0 O( k end if* {0 V* n% Z* ~4 l/ ~) e
if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then
; M8 V- [' h% t1 r& T OKed = false+ U( F# m/ t( \. q7 D" ?5 G
end if
" g% n- f0 v6 I- @ 'if PositionStart > filesize then# v" C( A% o( ^1 U9 W5 E5 Z
' OKed = false
$ k% p) y& X# {) a! ^9 e# F' [# z 'end if
8 Y& |- g( |6 {6 m1 @' ~5 I wend% V' J8 s1 X0 N4 ]" K' \
else/ ~ }9 P# [0 u+ g: r
msgbox "文件错误"
_, t3 l6 s, L( Z& ~end if( |7 Q/ H" V2 P
PositionStart = PositionStart + 16) G$ z- m2 Y: q$ y
'msgbox PositionStart3 ]1 z9 M4 \- C8 p S
AsoR.Position = PositionStart
( A9 r5 w( t8 N) R* K# J. X& b$ ^) UAsoW.write AsoR.read(filesize-int(PositionStart)-int(EndSize))
! x3 f1 f2 L5 T% [( d. \* @'新文件名
; Z A- A$ L4 k' a* p7 Udim newFileName2 {$ h1 f( a& \' Q9 F: e" c
'newFileName = left(FlashFileName,len(FlashFileName)-4) & ".swf"+ m$ ] d, `. V# Q9 ` ~
newFileName = FlashFileName & ".swf" ( [3 f2 Q" C$ D* |: ^4 w5 p* Z# t l
Set fso = CreateObject("Scripting.FileSystemObject")1 h& O& ^% E0 I$ O6 t" N
If (fso.FileExists(newFileName)) Then
: d* ^( ~) B; S8 g1 M+ e$ r overwrite = msgbox(newFileName&" 已存在"& vbnewline &"要替换它吗?",308,"文件已经存在 - exe2swf脚本")* |0 E, T+ h9 R- n. b1 U$ ~
if overwrite=6 then
6 w; z( F: ?- N4 k; I, |6 { AsoW.SaveToFile newFileName, 2# e% T: s! U) \, D6 e4 K4 L& q# T
else
' Q* ?" F7 l2 o% [. e2 A msgbox "操作被取消",0,"exe2swf脚本"
& s1 p; l' G" G3 E& h) j: I end if
0 F; @5 R- D8 k8 D9 melse
5 m- g- h; z/ e4 k1 v3 [) b# ~ AsoW.SaveToFile newFileName, 18 o3 S7 ^# k! ^
end if 2 H" D6 P$ C5 I* `) ~
AsoR.close& \; h3 {: k$ ^, W7 ~- j; D
set AsoR=nothing
4 _" h; o) X5 e0 T' ^# I, ^AsoW.close
4 ^& J# p Y( T( i4 ?4 u: t/ ?set AsoW=nothing $ R' e+ {# G6 z) X* Y; b& x0 M* x
Function Bin2Str(Bin)* O7 b* s( H8 S
Dim I, Str
% J5 D% Q8 E9 Y$ c% P5 R For I=1 to LenB(Bin)
$ s7 a' |, U5 r clow=MidB(Bin,I,1)
3 ?9 H0 g% R9 i. l) n if ASCB(clow)<128 then* j8 ^' k, e, [4 W ]' d
Str = Str & (ASCB(clow))
! s4 W& t8 P+ L else
l/ [7 r5 c4 {4 `* o I=I+1+ ^) ~3 x4 e2 d" Q
if I <= LenB(Bin) then Str = Str & (ASCW(MidB(Bin,I,1)&clow))
9 ~# a% Z H2 O+ T% Y end if
I( X* ^1 E) K$ G6 j' D+ r N Next
/ \3 S( J+ o# m( k6 Y Bin2Str = Str
, `) i3 m) z& S* s! E2 S2 V% hEnd Function
; k& G+ e y$ ~6 A6 e7 z3 Y
0 i5 j# j9 W$ Q% J. K; W |