導航:首頁 > 編程語言 > 中文腳本引擎源代碼

中文腳本引擎源代碼

發布時間:2022-01-21 12:17:33

Ⅰ 什麼是腳本引擎,它有什麼作用

腳本引擎,就是一個計算機編程語言的解釋器,如用於建網站的asp、php等,它的功能是解釋執行用戶的程序文本,將它譯成計算機能執行的機器代碼,完成一系列的功能。例如,Freemarker和Velocity通常被稱為腳本引擎。Erb也會出現在這里,但奇怪的是,它並沒有經常被稱為腳本引擎。

腳本語言通常不需要編譯步驟,因此可以更簡單地作為shell腳本或從shell腳本運行。包括awk、perl、tcl、python、ruby等,這些語言通常需要簡潔,類型安全性通常是可選的。Windows在其腳本宿主功能中支持多種語言。這將腳本語言公開給Windows中的各種組件。

(1)中文腳本引擎源代碼擴展閱讀:

java腳本引擎的設計原理淺析

1、編譯型 vs 解析性

如果能夠產生一個獨立的class文件則屬於前者,例如:fel,simpleEl,groovy

否則通過編譯成自定義的內存指令就屬於後者,例如:QLExpress,aviator,JEXL

2、java語法 vs 表達式語言(EL expression language) vs 腳本(script)

如果語法和java保持一致,不做任何擴展,就是屬於第一種:如果語法大量簡化(比如去掉顯示類、方法、變數聲明,異常處理,邏輯跳轉循環等等),只支持簡單的數學公式、對象方法成員變數調用, 就屬於第二種:fel,simpleEl,aviator。

介於兩者之間,即提供很好的語法糖,又支持大部分java語法:for循環,if判斷,函數定義,就屬於第三種:groovy,QLExpress

參考資料來源:網路-腳本引擎

Ⅱ 無法找到腳本引擎「VBScript」怎麼辦

朋友,這是你的電腦誤刪了系統文件,或系統文件被頑固木馬破壞!(答案原創,原作者:力王歷史)提示:急救箱無法聯網,就用:「離線模式」!1。下載個「360系統急救箱」,已經安裝了「360安全衛士」的朋友,直接打開「功能大全」的下面的「360系統急救箱」,點擊它:【1】。開始急救!急救完畢後,立即處理,重啟!【2】。開機後,「文件恢復區」,徹底刪除文件!【3】。「系統修復」,全選,立即修復!【關鍵】【4】。網路修復,開始修復,重啟電腦!【關鍵】【5】。dll文件恢復,掃描一下,如果有丟失,添加恢復,沒有就行了!2。用「360安全衛士」的「系統修復」,點「IE常用設置」,「修改主頁」,「使用360安全網址導航」,點:「一鍵修復」!3。用「360安全衛士」的「掃描插件」,然後再點:「清理插件」,把「惡評插件」刪除!4。再用「360殺毒雙引擎版」,勾選「自動處理掃描出的病毒威脅」,「全盤掃描」與「自定義掃描」,病毒木馬,再點刪除!重啟電腦後,來到「隔離區」,點「徹底刪除」!5。木馬查殺,「全盤掃描」與「自定義掃描」,查殺到木馬,立即處理!重啟!「文件恢復區」,徹底刪除!6。再不行,試試:金山急救箱,勾選「擴展掃描」,立即掃描,完畢後,立即處理,重啟電腦!7。再不行,試試:金山網盾,一鍵修復!8。實在不行,只能:一鍵還原(方法:訪問我的「網路空間」博客)或重裝系統!

Ⅲ 無法找到腳本引擎「VBScript」

首先請確定「C:\document and settings\ all users\ [開始] 菜單\程序\啟動\.vbs」此東西是你自願使它開機啟動的,否則請刪掉此東西.
出現此提示信息的原因是VBScript.dll此文件沒有被注冊,請打開"開始"菜單里的"運行"對話框,輸入以下信息並按"確定"按鈕
regsvr32.exe vbscript.dll
再確定就OK鳥~

Ⅳ 腳本引擎是什麼

就是腳本運行所需的框架,提供了可供腳本調用的二進制代碼.腳本一般都是以ascii文件存在的,並不是二進制的可執行文件.就需要腳本引擎掉取其中的內容然後運行

Ⅳ 誰有飛秋界面的源代碼,不要插件的源代碼

掃描結果保存在/log/目錄中,index_*.htm為掃描結果索引文件。 一. 系統要求:Windows NT/2000/XP/2003 理論上可運行於Windows NT系列操作系統,推薦運行於Windows 2000以上的Server版Windows系統。 二. 功能簡介: 採用多線程方式對指定IP地址段(或單機)進行安全漏洞檢測,支持插件功能。掃描內容包括:遠程服務類型、操作系統類型及版本,各種弱口令漏洞、後門、應用服務漏洞、網路設備漏洞、拒絕服務漏洞等二十幾個大類。對於多數已知漏洞,我們給出了相應的漏洞描述、解決方案及詳細描述鏈接,其它漏洞資料正在進一步整理完善中,您也可以通過本站的「安全文摘」和「安全漏洞」欄目查閱相關說明。 3.0及後續版本提供了簡單的插件開發包,便於有編程基礎的朋友自己編寫或將其他調試通過的代碼修改為X-Scan插件。另外Nessus攻擊腳本的翻譯工作已經開始,歡迎所有對網路安全感興趣的朋友參與。需要「Nessus攻擊腳本引擎」源代碼、X-Scan插件SDK、示例插件源代碼或願意參與腳本翻譯工作的朋友,可通過本站「X-Scan」項目鏈接獲取詳細資料:「」。 三. 所需文件: xscan_gui.exe -- X-Scan圖形界面主程序 checkhost.dat -- 插件調度主程序 update.exe -- 在線升級主程序 *.dll -- 主程序所需動態鏈接庫 使用說明.txt -- X-Scan使用說明 /dat/language.ini -- 多語言配置文件,可通過設置「LANGUAGE\SELECTED」項進行語言切換 /dat/language.* -- 多語言數據文件 /dat/config.ini -- 當前配置文件,用於保存當前使用的所有設置 /dat/*.cfg -- 用戶自定義配置文件 /dat/*.dic -- 用戶名/密碼字典文件,用於檢測弱口令用戶 /plugins -- 用於存放所有插件(後綴名為.xpn) /scripts -- 用於存放所有NASL腳本(後綴名為.nasl) /scripts/desc -- 用於存放所有NASL腳本多語言描述(後綴名為.desc) /scripts/cache -- 用於緩存所有NASL腳本信息,以便加快掃描速度(該目錄可刪除) 四. 准備工作: X-Scan是完全免費軟體,無需注冊,無需安裝(解壓縮即可運行,自動檢查並安裝WinPCap驅動程序)。若已經安裝的WinPCap驅動程序版本不正確,請通過主窗口菜單的「工具」->「Install WinPCap」重新安裝「WinPCap 3.1 beta4」或另行安裝更高版本。 五. 圖形界面設置項說明: 「檢測范圍」模塊: 「指定IP范圍」 - 可以輸入獨立IP地址或域名,也可輸入以「-」和「,」分隔的IP范圍,如「192.168.0.1-20,192.168.1.10-192.168.1.254」,或類似「192.168.100.1/24」的掩碼格式。 「從文件中獲取主機列表」 - 選中該復選框將從文件中讀取待檢測主機地址,文件格式應為純文本,每一行可包含獨立IP或域名,也可包含以「-」和「,」分隔的IP范圍。 「全局設置」模塊: 「掃描模塊」項 - 選擇本次掃描需要載入的插件。 「並發掃描」項 - 設置並發掃描的主機和並發線程數,也可以單獨為每個主機的各個插件設置最大線程數。 「網路設置」項 - 設置適合的網路適配器,若找不到網路適配器,請重新安裝WinPCap 3.1 beta4以上版本驅動。 「掃描報告」項 - 掃描結束後生成的報告文件名,保存在LOG目錄下。掃描報告目前支持TXT、

Ⅵ 知道編程語言的原代碼卻不懂腳本語言腳本語言和Delphi之類的原代碼有什麼區別

1.腳本語言(JavaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間。
HTML通常用於格式化和鏈結文本。
而編程語言通常用於向機器發出一系列復雜的指令。
2.腳本語言與編程語言也有很多相似地方,其函數與編程語言
比較相象一些,其也涉及到變數。與編程語言之間最大的區別
是編程語言的語法和規則更為嚴格和復雜一些.
3.與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成。
註:腳本語言一般都有相應的腳本引擎來解釋執行。

Ⅶ 求救腳本引擎對象是什麼東西

或者單/雙引號,而且恰巧又都是文本.jsON不是一種語言,它僅僅是一種數據的表達方式,從某種程度上來講,而不是腳本引擎.JS是一種腳本語言,對於JS的字面量來說,這段文本僅僅是代碼的一部分,相當於指令,而JSON文本,其本身就表示了數據。二者相同的地方是,JSON跟XML沒有什麼區別。

之所以LZ會有這樣的疑慮,原因在於對數據的理解存在偏差;不同的地方在於,是交給eval函數來處理的,要搞清楚這2個東西
1,而JSON的字元串,甚至其他任何符號作為邊界符,JS字面量的文本是被腳本引擎直接解析的,那麼,如何理解JSON的文本,就取決於這個函數,因為這2者的處理根本就不在一個層面上。

另外,JS必須交給JS腳本引擎處理,你所謂的對象,其實還只是處在源碼階段,當這段符合語法的文本被腳本引擎解釋之後,在內存中才會產生對象,任何程序都能處理,至於引號的問題,取決於JSON解析器的容忍程度,如果你願意,也可按照自己的意願寫一個解析器,能夠容忍包括不寫引號,至於是否符合語法,取決於腳本引擎。
2,看起來都是數據,而JSON的文本,如果要轉化為JS對象的話首先

Ⅷ 分析X-Scan,寫出它的使用方法以及配置方法,同時抓包分析其掃描原理。如果有興趣分析一下其腳本

.命令行:Xscan -h [起始地址]-[終止地址] [掃描選項]
這里如果只對一個ip進行掃描 就不需要填 終止地址了
掃描選項 這里 可以一次填多個 選項
[掃描選項]含義如下:
-p: 掃描標准埠(埠列表可通過\dat\config.ini文件定製);
-b: 獲取開放埠的banner信息,需要與-p參數合用;
-c: 掃描CGI漏洞;
-r: 掃描RPC漏洞;
-s: 掃描SQL-SERVER默認帳戶;
-f: 嘗試FTP默認用戶登錄(用戶名及口令可以通過\dat\config.ini文件定製);
-n: 獲取NetBios信息(若遠程主機操作系統為Windows9x/NT4.0/2000);
-g: 嘗試弱口令用戶連接(若遠程主機操作系統為Windows NT4.0/2000);
-a: 掃描以上全部內容;
-x [代理伺服器:埠]: 通過代理伺服器掃描CGI漏洞;
-t: 設置線程數量,默認為20個線程;
-v: 顯示詳細掃描進度;
-d: 禁止掃描前PING被掃主機。
2.示例:
Xscan -h 222.222.1.1-222.222.10.255 -a
含義:掃描XXX.XXX.1.1-XXX.XXX.10.255網段內主機的所有信息;
Xscan -h xxx.xxx.1.1 -n -g -t 30
含義:獲取XXX.XXX.1.1主機的Netbios信息,並檢測NT弱口令用戶,線程數量為30;
Xscan -h 211.108.1.1 -p -b -c -x 211.108.2.255:80 -v -d

我們來試一下
上面的這些參數都是需要大家來學習掌握的

現在我們進行一個簡單的cgi漏洞掃描,這次演練是在控制台模式下進行的:xscan 211.100.8.87 -port
這個命令是讓xscan掃描伺服器211.100.8.87的開放埠,掃描器不會對65535個埠全部進行掃描(太慢),它只會檢測網路上最常用的幾百個埠,而且每一個埠對應的網路服務在掃描器中都已經做過定義,從最後返回的結果很容易了解伺服器運行了什麼網路服務。掃描結果顯示如下:
Initialize dynamic library succeed.
Scanning 211.100.8.87 ......
[211.100.8.87]: Scaning port state ...
[211.100.8.87]: Port 21 is listening!!!
[211.100.8.87]: Port 25 is listening!!!
[211.100.8.87]: Port 53 is listening!!!
[211.100.8.87]: Port 79 is listening!!!
[211.100.8.87]: Port 80 is listening!!!
[211.100.8.87]: Port 110 is listening!!!
[211.100.8.87]: Port 3389 is listening!!!
[211.100.8.87]: Port scan completed, found 7.
[211.100.8.87]: All done.
這個結果還會同時在log目錄下生成一個html文檔,閱讀文檔可以了解發放的埠對應的服務項目

Ⅸ 如何在.NET中實現腳本引擎

1. 構造一個編譯器
設置編譯參數
編譯參數需要在CompilerParameters設置:
CompilerOptions 用於設置編譯器命令行參數
IncludeDebugInformation 用於指示是否在內存在生成Assembly
GenerateInMemory 用於指示是否在內存在生成Assembly
GenerateExecutable 用於指示生成的Assembly類型是exe還是dll
OutputAssembly 用於指示生成的程序文件名(僅在GenerateInMemory為false的情況)
ReferencedAssemblies 用於添加引用Assembly
例如:
theParameters.ReferencedAssemblies.Add("System.dll");

創建指定語言的編譯器
編譯需要由指定語言的CodeDomProvider生成。
這里列舉一些.NET的CodeDomProvider:
vb.net Microsoft.VisualBasic.VBCodeProvider
C# Microsoft.CSharp.CSharpCodeProvider
jscript Microsoft.JScript.JScriptCodeProvider
J# Microsoft.VJSharp.VJSharpCodeProvider
以C#為例,要創建C#編譯器,代碼如下:
//.NET 1.1/1.0
ICodeCompiler compiler = new Microsoft.CSharp.CSharpCodeProvider().CreateCompiler();
//.NET 2.0
ICodeCompiler compiler = (ICodeCompiler) new Microsoft.CSharp.CSharpCodeProvider();

下面是完整的創建編譯器的例子:
/// <summary>
/// 創建相應腳本語言的編譯器
/// </summary>
private void createCompiler(string strLanguage, bool debugMode, string strAssemblyFileName)
{
this.theParameters = new CompilerParameters();
this.theParameters.OutputAssembly = System.IO.Path.Combine(System.IO.Path.GetTempPath(), strAssemblyFileName + ".dll");
this.theParameters.GenerateExecutable = false;
this.theParameters.GenerateInMemory = true;
if(debugMode)
{
this.theParameters.IncludeDebugInformation = true;
this.theParameters.CompilerOptions += "/define:TRACE=1 /define:DEBUG=1 ";
}
else
{
this.theParameters.IncludeDebugInformation = false;
this.theParameters.CompilerOptions += "/define:TRACE=1 ";
}

AddReference("System.dll");
AddReference("System.Data.dll");
AddReference("System.Xml.dll");

strLanguage = strLanguage.ToLower();

CodeDomProvider theProvider;

if("visualbasic" == strLanguage || "vb" == strLanguage)
{
theProvider = new Microsoft.VisualBasic.VBCodeProvider();
if(debugMode)
theParameters.CompilerOptions += "/debug:full /optimize- /optionexplicit+ /optionstrict+ /optioncompare:text /imports:Microsoft.VisualBasic,System,System.Collections,System.Diagnostics ";
else
theParameters.CompilerOptions += "/optimize /optionexplicit+ /optionstrict+ /optioncompare:text /imports:Microsoft.VisualBasic,System,System.Collections,System.Diagnostics ";
AddReference("Microsoft.VisualBasic.dll");
}
else if("jscript" == strLanguage || "js" == strLanguage)
{
theProvider = new Microsoft.JScript.JScriptCodeProvider();
AddReference("Microsoft.JScript.dll");
}
else if("csharp" == strLanguage || "cs" == strLanguage || "c#" == strLanguage)
{
theProvider = new Microsoft.CSharp.CSharpCodeProvider();
if(!debugMode)
theParameters.CompilerOptions += "/optimize ";
}
// else if("jsharp" == strLanguage || "vj" == strLanguage || "j#" == strLanguage)
// {
// theProvider = new Microsoft.VJSharp.VJSharpCodeProvider();
// if(!debugMode)
// theParameters.CompilerOptions += "/optimize ";
// }
else
throw new System.Exception("指定的腳本語言不被支持。");

this.theCompiler = theProvider.CreateCompiler();
}

/// <summary>
/// 添加引用對象。
/// </summary>
/// <param name="__strAssemblyName">引用的文件名</param>
public void AddReference(string __strAssemblyName)
{
theParameters.ReferencedAssemblies.Add(__strAssemblyName);
}

註:
在.NET Framework 2.0中,由於CreateCompiler方法被標記作廢。為避免產生編譯警告,可直接返回CodeDomProvider作為編譯器:
this.theCompiler = (ICodeCompiler)theProvider;

2. 編譯源代碼

編譯源代碼相當簡單,只需一條語句就搞定了:
CompilerResults compilerResults = compiler.CompileAssemblyFromSource(this.theParameters, this.SourceText);
執行後,可以從compilerResults取得以下內容:

NativeCompilerReturnValue 編譯結果,用於檢查是否成功
Errors 編譯時產生的錯誤和警告信息
CompiledAssembly 如果編譯成功,則返回編譯生成的Assembly

示例函數:
/// <summary>
/// 編譯腳本。編譯前將清空以前的編譯信息。
/// CompilerInfo將包含編譯時產生的錯誤信息。
/// </summary>
/// <returns>成功時返回True。不成功為False。</returns>
public bool Compile()
{
this.theCompilerInfo = "";
this.isCompiled = false;
this.theCompiledAssembly = null;
this.theCompilerResults = this.theCompiler.CompileAssemblyFromSource(this.theParameters, this.SourceText);

if(this.theCompilerResults.NativeCompilerReturnValue == 0)
{
this.isCompiled = true;
this.theCompiledAssembly = this.theCompilerResults.CompiledAssembly;
}

System.Text.StringBuilder compilerInfo = new System.Text.StringBuilder();

foreach(CompilerError err in this.theCompilerResults.Errors)
{
compilerInfo.Append(err.ToString());
compilerInfo.Append("/r/n");
}

theCompilerInfo = compilerInfo.ToString();

return isCompiled;
}

3. 執行代碼

使用Reflection機制就可以很方便的執行Assembly中的代碼。
我們假設編譯時使用的腳本代碼 this.SourceText 內容如下:
namespace test
{
public class script
{
static public void Main()
{
MessageBox.Show("Hello");
}
}
}

則相應的執行代碼為:

scriptEngine.Invoke("test.script", "Main", null);

Invoke函數內容:
/// <summary>
/// 執行指定的腳本函數(Method)。
/// 如果指定的類或模塊名,以及函數(Method)、或參數不正確,將會產生VsaException/VshException例外。
/// </summary>
/// <param name="__strMole">類或模塊名</param>
/// <param name="__strMethod">要執行的函數(Method)名字</param>
/// <param name="__Arguments">參數(數組)</param>
/// <returns>返回執行的結果</returns>
public object Invoke(string __strMole, string __strMethod, object[] __Arguments)
{
if(!this.IsCompiled || this.theCompiledAssembly == null)
throw new System.Exception("腳本還沒有成功編譯");

Type __MoleType = this.theCompiledAssembly.GetType(__strMole);
if(null == __MoleType)
throw new System.Exception(string.Format("指定的類或模塊 ({0}) 未定義。", __strMole));

MethodInfo __MethodInfo = __MoleType.GetMethod(__strMethod);
if(null == __MethodInfo)
throw new System.Exception(string.Format("指定的方法 ({0}::{1}) 未定義。", __strMole, __strMethod));

try
{
return __MethodInfo.Invoke(null, __Arguments);
}
catch( TargetParameterCountException )
{
throw new System.Exception(string.Format("指定的方法 ({0}:{1}) 參數錯誤。", __strMole, __strMethod));
}
catch(System.Exception e)
{
System.Diagnostics.Trace.WriteLine(string.Format("執行({0}:{1})錯誤: {2}", __strMole, __strMethod, e.ToString()));
return null;
}
}

閱讀全文

與中文腳本引擎源代碼相關的資料

熱點內容
iphone中音樂怎麼刪除 瀏覽:542
關於愛情韓劇電影免費觀看 瀏覽:941
無保qq申訴上保 瀏覽:215
蘋果6splussd卡 瀏覽:802
庫樂隊app顯示19是什麼意思 瀏覽:701
言言直播的官方網站是多少 瀏覽:340
啄木鳥十大電影女同天堂 瀏覽:507
iris女主扮演者 瀏覽:144
51自學網cor視頻教程 瀏覽:243
怎麼用ps把臉p黑教程 瀏覽:223
播放iso藍光原盤app有哪些 瀏覽:115
尋呼機地址碼編程是什麼意思 瀏覽:947
數據包安全未知為什麼解壓不出來 瀏覽:69
愛人女主角 瀏覽:623
古龍小說下載 瀏覽:242
linux單詞統計 瀏覽:200
iphone音符符號 瀏覽:649
女設計師幾百年不死韓國 瀏覽:245
linux無法生成gbk文件 瀏覽:590
免費的最新電影qq群 瀏覽:83

友情鏈接