黑月編譯器插件是易語言不可缺少的插件,黑月編譯器讓易語言程序脫離核心庫運行,從而最大化縮小易語言程序體積的插件,并且使程序具有更優(yōu)的PE結(jié)構(gòu),減少易程序被殺軟誤報的一個插件!
功能介紹
黑月結(jié)合易語言編程環(huán)境。有效的做到了全程可視化程序開發(fā)..并且支持易語言核心庫命令。有效的按照實際要求,將需要的代碼連接到程序當(dāng)中。實現(xiàn)了速成的“靜態(tài)編譯” 易語言的編譯方式只需要支持庫的。在軟件運行期間,絕大部分CPU是在支持庫領(lǐng)空。
黑月是類似于斬月,目的是將易語言程序小型化,脫離支持庫運行的工具。但實現(xiàn)原理和方法又與斬月不同,不需要類似的斬月殼,而是分析并轉(zhuǎn)化易程序為對象文件obj,再用鏈接器LINK.EXE重新編譯鏈接。這樣生成的黑月程序,具有更規(guī)范更優(yōu)化的PE程序文件結(jié)構(gòu),并且?guī)砀嗟墓δ軘U展(比如使用RC資源腳本生成PE標(biāo)準資源),以及帶來下好處:
1、具有正常的PE可執(zhí)行文件結(jié)構(gòu),經(jīng)過反編譯后生成的易程序代碼清晰可見,完全呈現(xiàn)。匯編代碼可分析可用專用軟件跟蹤調(diào)試,不會再產(chǎn)生誤報。
2、在脫離核心支持庫的同時,又不廢除原有核心庫命令,而是轉(zhuǎn)向調(diào)用功能類似的黑月核心庫。就是說,黑月可以使用大部分的原核心庫命令(非窗口操作),并且黑月核心庫為本人模仿原核心庫功能,再重新編寫的靜態(tài)庫。由于黑月先天優(yōu)勢,可以靜態(tài)庫抽取代碼片段合成編譯,就是用到的命令函數(shù)才提取相應(yīng)部分代碼。不用到命令不合成到目標(biāo)程序。這樣的好處是既保持原有功能不變,又不使程序文件大小增加,附帶冗余代碼。
易友們一直夢想的靜態(tài)庫抽取合成編譯,今天在黑月已經(jīng)實現(xiàn)了!
4、黑月可以使用PE標(biāo)準資源,用RC腳本編譯生成。比如使用資源對話框模板創(chuàng)建窗口,并配合可視化的黑月RC腳本編輯器,比斬月又多一種更方便的界面設(shè)計功能,而且與匯編和c語言的RC腳本兼容通用,使黑月程序更接近于常規(guī)程序。
5、黑月的DLL可以使用類似其它語言DLLMAIN入口函數(shù)(黑月為“Dll入口函數(shù)”),可以通過DLL的模塊句柄訪問DLL的PE資源、注入進程、多線程應(yīng)用等等優(yōu)點。
6、黑月可以突破易語言自身的限制,實現(xiàn)對__cdecl調(diào)用方式函數(shù)的支持,并且可以在編譯時鏈接其它由C語言或MASM32匯編語言編寫的靜態(tài)庫,這又大大的增強了功能擴展,對眾多C語言代碼資源的利用,和軟件工程的協(xié)作開發(fā)創(chuàng)造了便利條件。
注意事項
一、必須解壓安裝到你的易語言安裝路徑,比如:C:\Program Files\e
二、在工具->支持庫配置 里把黑月編譯器插件選上
三、在工具菜單就出現(xiàn)黑月工具了,點擊黑月資源編輯器,可以給程序增加資源腳本。
四、用4.13版最好把易的加入版本信息關(guān)了,用黑月自己的資源腳本來生成。否則在沒資源的情況下,會破壞黑月編譯出來程序。運行時出現(xiàn)不是有效WIN32程序的錯誤提示。
五、若需要黑月鏈接編譯其它支持庫,必須安裝易語言5.0以上版本。
更新日志
1、編譯時自動帶入靜態(tài)庫所需的RES資源。用于兼容E2EE等支持庫。(感謝 神2 提供的技術(shù)支持)
2、修復(fù)重定向項目超過65535后無法正常運行的問題。(感謝 人 生 提供的技術(shù)支持)
3、修復(fù)取命令行()不能正確解析命令行的問題。(感謝 小黑 的建議)
4、修復(fù)RC資源編譯器錯誤,支持256x256PNG壓縮格式圖標(biāo)文件。(感謝 淚闖天涯(鄧學(xué)彬) 的建議)
5、黑月資源腳本編輯器增加開啟UAC請求(請求管理員權(quán)限)選項。
6、增加用戶自定義鏈接參數(shù)配置。
7、增加用戶自定義鏈接器配置。
第6、7條更新的詳情請在更新完畢后查看:易語言目錄\BlackMoon\BlackMoon.ini
8、兼容易語言的LIB命令聲明方式,庫文件名直接寫lib的文件名而不需要改成“靜態(tài)庫”了。
常規(guī)stdcall調(diào)用約定的函數(shù)名格式為: _xxxx@xx (即:_函數(shù)名@參數(shù)數(shù)量*4 如:_strlen@4)
常規(guī)cdecl調(diào)用約定的函數(shù)名格式為: @_xxxx (即:@_函數(shù)名 如:@_strlen)
老版本黑月的聲明方式也兼容。
9、更正黑月程序向?qū)У腄LL模板中的DLL入口函數(shù)“不需要公開”的錯誤描述,改為“必須公開”。
10、修復(fù)黑月對象.讀文本屬性()和對象.文本方法()在部分情況下沒有返回值的問題。(感謝 Ali 的反饋)
11、增加黑月對象的方法和屬性自動適配判斷,兼容易語言寫法。(感謝 雷破天 心冷、魚兒 CSジ藍ゞ宇 的反饋)
12、修復(fù)黑月對象提供了變體型,在返回時變體型會被清空的問題。(感謝 你凌哥i 的反饋)
13、修復(fù)快照()命令截圖的位置不正確的問題。
14、增加對 打開加密文件() 命令的支持。(感謝 東燦 Lim 分享的算法)
15、提升下面命令的效率:
1) 讀入文本
2) 讀入一行
3) 讀入數(shù)據(jù)