Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 22989|Svar: 1

[WinForm] .net/c# bruger stærke signaturer til at beskytte sine egne dll'er mod at blive forfalsket

[Kopier link]
Opslået på 19/10/2017 17.31.40 | | | |
Hvordan garanterer en .net/c#-applikation, at den kaldte dll ikke erstattes af forfalskning?
https://www.itsvse.com/thread-4173-1-1.html
(Kilde: Arkitekt)

Sidste gang testede vi, at DLL'en kan forfalskes af andre og udføres – hvordan forhindrer man det?



Signaturintroduktion:
En assembly-signatur (også kendt som en strong name-signatur) giver en applikation eller komponent en unik identitet, som anden software kan bruge til eksplicit at identificere og referere til applikationen eller komponenten. Et stærkt navn består af samlingens simple tekstnavn, versionsnummer, regional information (hvis angivet) og et offentlig/privat nøglepar.

For eksempel tillader stærk navngivning applikationsforfattere og administratorer at specificere den præcise version af én tjeneste, der skal bruges af delte komponenter. Dette gør det muligt for forskellige applikationer at specificere forskellige versioner uden at påvirke andre. Du kan også bruge komponentens stærke navn som sikkerhedsbevis for at skabe et tillidsforhold mellem de to komponenter.

For at underskrive en assembly stærkt behøver du ikke at underskrive et digitalt certifikat med købt kode, du kan generere en SNK-fil med det sn-værktøj, som .NET leverer, og du kan garantere signaturen af din assembly ved at gemme denne fil.

Dog er en stærk signatur for en assembly ikke det samme som en digital signatur for en eksekverbar fil (selv hvis assemblyen er en exe-fil). Og MSDN siger tydeligt, at exe-filer ikke skal underskrives stærkt (selvom jeg gjorde det). En digital signatur for en fil er faktisk at vedhæfte en underskrift til en hvilken som helst fil på filsystemniveau, hvilket fortæller operativsystemet, hvem der udsteder filen. I filens egenskaber-dialog kan du se fanen "Digitale Signaturer".


Vi underskriver dll'en stærkt og kalder den derefter med et program, som kan udføres normalt, som følger:


Hvad nu hvis vi erstatter dll'en med en smedet dll? Test det, og find ud af, at udførelsen er fejl, hvilket effektivt kan forhindre, at den kaldende dll bliver forfalsket (Jeg testede den, ændrede den signerede dll-kode og genererede den så igen, og applikationen kan også kaldes normalt, det burde være sådan, så længe programmet er signeret korrekt!!

Fejlen er som følger:

For mere information om at kalde realtidsfejlfinding (JIT) i stedet for denne dialog,
Se slutningen af denne besked.

Usædvanlig tekst **************
System.IO.FileLoadException: 未能加载文件或程序集“dllFrom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eb67821f2cf76b4e”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
Filnavn: "dllFrom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eb67821f2cf76b4e"
   In TestDll.Form1.button1_Click_1 (Objektafsender, EventArgs e)
   I System.Windows.Forms.Control.OnClick(EventArgs e)
   I System.Windows.Forms.Button.OnClick(EventArgs e)
   I System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   På System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons-knap, Int32 klik)
   I System.Windows.Forms.Control.WndProc(Message& m)
   I System.Windows.Forms.ButtonBase.WndProc(Message& m)
   I System.Windows.Forms.Button.WndProc(Message& m)
   I System.Windows.Forms.Control.NativeWindow.OnMessage(Message& m)
   I System.Windows.Forms.Control.NativeWindow.WndProc(Message& m)
   In System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Advarsel: Assembly binding-logging er slået fra.
For at aktivere fejllogning af assembly bindings, sæt registreringsværdien [HKLM\Software\Microsoft\Fusion!" EnableLog (DWORD) er sat til 1.
Bemærk: Der vil være nogle ydelsesstraffe forbundet med fejllogning af assembly bindings.
For at slå denne funktion fra, fjern registreringsværdien [HKLM\Software\Microsoft\Fusion!] EnableLog]。



Indlæste samlinger **************
mscorlib
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2098.0 bygget af: NET47REL1LAST
    Grundkode: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
TestDll
    Samlingsversion: 1.0.0.0
    Win32-version: 1.0.0.0
    Grundkode: file:///C:/Users/itsvse_pc/Desktop/dllForm/TestDll/bin/Debug/TestDll.exe
----------------------------------------
System.Windows.Forms
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2094.0 bygget af: NET47REL1LAST
    Grundkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2093.0 bygget af: NET47REL1LAST
    Grundkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System. Tegning
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2046.0 bygget af: NET47REL1
    Grundkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Konfiguration
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2046.0 bygget af: NET47REL1
    Grundkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2098.0 bygget af: NET47REL1LAST
    Grundkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2046.0 bygget af: NET47REL1
    Grundkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2046.0 bygget af: NET47REL1
    Grundkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
mscorlib.ressourcer
    Samlingsversion: 4.0.0.0
    Win32-version: 4.7.2046.0 bygget af: NET47REL1
    Grundkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

JIT-fejlfinding **************
For at muliggøre realtidsfejlfinding (JIT),
Den skal sættes i system.windows.forms-sektionen i .config-filen (machine.config) for applikationen eller computeren
jitDebugging-værdi.
Den skal også være aktiveret, når applikationen kompileres
Fejlsøgning.

For eksempel:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Alle uhåndterede undtagelser efter JIT-fejlfinding er aktiveret
sendes til den JIT-debugger, der er registreret på denne maskine,
I stedet for at blive håndteret af denne dialog.







Tidligere:Hvordan garanterer en .net/c#-applikation, at den kaldte dll ikke erstattes af forfalskning?
Næste:fsadf{:1_2:}
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com