簡體   English   中英

將 Dll 嵌入並加載到項目中 - VB.NET / C#

[英]Embedd and Load Dll into Project - VB.NET / C#

我目前正在編寫一個分析程序來檢查木馬和惡意軟件。 為此,我還使用 Fiddler Core 來攔截和分析這些木馬的流量。

Fiddler Core 還附帶 3 個 dll ,它們需要與程序本身位於同一啟動文件夾中。 由於我希望我的 Startup 文件夾僅是 Exe 而不顯示任何其他 dll ,因此我將這 3 個 dll 作為資源嵌入到我的項目中,並將它們加載到 ApplicationEvents 中。

這種方式適用於除 CertMaker.dll 之外的所有 DLL。 它負責創建攔截請求所需的根證書。

如果我嵌入 CertMaker.dll 它可以工作到創建根證書的地步,但它不會攔截請求。 我無法獲得任何查詢。只有當我將 memory 中的 CertMaker.dll 寫入啟動文件夾時,它才有效,但正如我在上面所寫的,我希望啟動文件夾僅是 exe。

如果您需要,這是我的代碼:

應用事件.vb:

Namespace My
Partial Friend Class MyApplication
    Private WithEvents Domain As AppDomain = AppDomain.CurrentDomain
    Private Function DomainCheck(sender As Object, e As System.ResolveEventArgs) As System.Reflection.Assembly Handles Domain.AssemblyResolve
        If e.Name.Contains("BCMakeCert") Then
            Return System.Reflection.Assembly.Load(My.Resources.Dll1)
        ElseIf e.Name.Contains("CertMaker") Then
            Return System.Reflection.Assembly.Load(My.Resources.Dll2)
        ElseIf e.Name.Contains("FiddlerCore4") Then
            Return System.Reflection.Assembly.Load(My.Resources.Dll3)
        Else
            Return Nothing
        End If
    End Function
End Class
End Namespace

僅當我將 CertMaker.dll 寫入啟動文件夾時,它才有效:

 Dim appPath As String = Application.StartupPath()
 File.WriteAllBytes(appPath & "/CertMaker.dll", My.Resources.Dll2)

是否有另一種方法可以在項目中包含和加載 dll 而 dll 不會出現在同一個啟動文件夾中 我希望以后能夠將程序作為文件發送,而文件夾中沒有 dll。

如果提琴手的程序集是基於 .Net 的,請使用 AppDomain.Current.Load(assembly) 方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM