|
来源:lam's blog
. [, C* s' {8 q# }* }, f最近好象又开始流行播放器里插木马了,我于是在网上转了转,看有没有什么好东西能预防的.
# R; V3 g9 n: J) ~9 t) P结果在安天CERT小组 看到了这个: . i& m1 ~. s- ~0 d _
软件名称:exe2swf
0 E( K! v) E8 F) U0 P( l, |3 [2 N适用系统:WIN 9x/ME/2000/NT
, M l: ]% H: ]/ w文件大小:11K
9 p# T8 n g8 U; ^' \5 f7 T/ u6 e文件说明:FLASH格式文件转换器为了防止有人在可执行的FLASH格式文件(.exe)中夹插木马,或者用flash图标的木马冒充flash文件,编写了一个简单的工具。 ; m( b N3 P8 m$ `# [2 N: c3 H, T
下载:http://soft.hackbase.com/37/20050319/6389.html
# S9 K$ F* v0 q哈,但是还有还想不到的呢,我找到了一段可以实验这个功能的代码
* r1 B: N1 ]& o0 \( @* e9 p作者:海娃 * q+ K1 Q2 C2 H4 L( _3 S% H- C1 P
用法: ( w% y" `4 U% {
! l" w$ x! U- H1 `: [& s- 将下面代码存为 exe2swf.vbs & u6 V0 X7 d. {5 }/ ?: A
- 将exe格式的flash拖放在此文件上,即可生成swf文件,
; Z, _2 O% S6 Q
' e7 n3 z- e# Q% g" i3 k'haiwa@http://www.51windows.Net; L5 `" U3 M/ n }8 P+ ~8 s# P
'感谢jimbob提供帮助.
6 N% \0 a, H' t* W6 Ydim AsoR,FlashFileName( ~9 N# Q! y: e# i/ @5 _
Set ArgObj = WScript.Arguments 2 F, q$ x3 E( j! [+ b5 i1 ^/ f
dim PositionStart,OKed,Tag,EndSize$ y) n" L6 |% G5 h6 i* M
PositionStart = 920000'flash 4的播放器的大致字节数
v+ I% h+ z' |1 N, N9 BEndSize = 8 'exe文件结尾字节数,其它版本可以设置为0- C/ ~4 D- I$ d! ?& C/ G/ R
FlashFileName = ArgObj(0)'传递路径
+ c; D; t; p: fset AsoR=CreateObject("Adodb.Stream")
( e$ I' i4 h% R. ^& X9 \# r* hAsoR.Mode=3
. A% [9 d! Z% t. ?7 i4 B3 lAsoR.Type=1 ( t3 t0 i: ?+ i* \9 b
AsoR.Open
9 l1 {% b# I; v+ @8 hset AsoW=CreateObject("Adodb.Stream")- p3 j4 U' o- ~# j' E
AsoW.Mode=3 E9 P- ] z }: N5 ]
AsoW.Type=1 ' H. u, @; t, Z: }
AsoW.Open
2 D+ }6 X. W" d0 MAsoR.LoadFromFile(FlashFileName)
/ n; f% ~8 \0 z$ D7 w* d& R( [OKed = true1 I D; i- v$ s6 H; i3 O
dim filesize* N. i* L6 |+ J! i# c; ?
filesize = AsoR.size
* E& w, g8 J6 e' ^; p1 K+ Nif filesize> ositionStart then
, Q7 U2 [2 e& f. S- u9 Z) R. R1 d while OKed
5 k- z6 Z" j$ K9 Y0 ?- U0 d AsoR.Position = PositionStart
1 ?, L! Y, o* V* Z1 R, \ Tag = Bin2Str(AsoR.read(20))
4 J$ Q3 w6 g2 t4 j% r if instr(Tag,"0000000") >0 then
5 n' u r+ t- c+ ~" s+ P q PositionStart = PositionStart + 1& H4 D; I4 x+ V9 L# X& }/ H
else
) A. @4 L3 ^! d# U PositionStart = PositionStart + 20
) h) Y6 H6 p+ n2 Z4 E end if
" {& f( U2 J) R' A if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then
" S2 F" K1 z# Y9 I% a OKed = false
& x" T2 e( D% ?$ E+ {3 Z end if' ]* m. P+ h9 J8 q; O M
'if PositionStart > filesize then- @/ R \2 E1 x
' OKed = false
0 E2 W! f# ?9 Z6 G% }% X 'end if
4 h. F: s0 ?4 ^% s0 {+ O" F6 P2 } wend! d, D2 X( o/ r0 }" |) ^4 _4 I' A$ D
else
7 Q+ ^8 ?3 @* B2 Q1 k- L' R msgbox "文件错误"
3 X( ?5 j1 J% [8 J) @, _# nend if( ?8 f6 B1 c5 s7 H1 W
PositionStart = PositionStart + 16
: s2 K h# s* M'msgbox PositionStart
; ]# t- f* q& B8 _AsoR.Position = PositionStart$ ^; H7 |9 O( L. y- \/ p/ c4 U% p: I
AsoW.write AsoR.read(filesize-int(PositionStart)-int(EndSize))
1 O: }- R$ W' ?% O'新文件名# u( z$ ` v, a* I
dim newFileName
- G6 v" P/ O; s, \8 ~ n1 t* O+ E'newFileName = left(FlashFileName,len(FlashFileName)-4) & ".swf"
' p, z* \5 P) b1 `- t$ snewFileName = FlashFileName & ".swf" 3 L! [' R+ w) K* L% p. Z
Set fso = CreateObject("Scripting.FileSystemObject")
8 K7 m" C# h( \1 HIf (fso.FileExists(newFileName)) Then z x8 z" _0 i
overwrite = msgbox(newFileName&" 已存在"& vbnewline &"要替换它吗?",308,"文件已经存在 - exe2swf脚本")5 R# D3 |" X9 m4 @8 u: v, U2 s
if overwrite=6 then7 M& A- F" j- N/ @
AsoW.SaveToFile newFileName, 2
2 r! z& Y) H% m! i! P; c, d else
' H, f. {+ R8 k' h. j& @9 p5 f msgbox "操作被取消",0,"exe2swf脚本"
! F. ^9 [$ { H8 B5 H end if
( \1 V! r1 q6 r( o$ Zelse
?. I, G1 u8 c: A2 J AsoW.SaveToFile newFileName, 1
$ e& \5 {5 u, c/ i, F3 [end if
0 o2 {4 r2 e3 r4 u% p- }4 o6 [1 r1 OAsoR.close2 U; w7 \0 F4 Y
set AsoR=nothing) J' Z& w* y8 r: w$ l
AsoW.close: @6 K: M6 c' O3 T8 ?
set AsoW=nothing ! S9 B, O# m- G' J) }9 K2 d- n( ]
Function Bin2Str(Bin)
! [+ s: |# p% Z/ T Dim I, Str) \7 \* f' P& Q; r% t* o2 g9 i
For I=1 to LenB(Bin)
+ B& M- _ B" D% I) D2 l8 [9 @' A clow=MidB(Bin,I,1)
, G5 L4 S; X8 b; z2 w6 I$ @3 u; r if ASCB(clow)<128 then* _; j' ~: I6 c
Str = Str & (ASCB(clow))0 f: P$ e o. P3 A) b4 r7 ~0 D, Q/ s
else2 f0 k5 z8 l# w. O" l6 l$ t
I=I+1
" ]) P# r1 b# U7 m6 t if I <= LenB(Bin) then Str = Str & (ASCW(MidB(Bin,I,1)&clow)): O8 ^) H2 T2 x4 I6 U5 Y
end if
+ t$ ]; i7 I0 |) {& F3 k5 P0 R Next ! @ P i0 ^, W3 u5 [" B
Bin2Str = Str7 u2 c' j5 Z, L2 L, h( x
End Function , g; j2 \$ `# _# W; e3 C+ `8 \' ]7 H
' d5 e# t: w0 U' l
|