Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 22989|Svare: 1

[WinForm] .net/c# bruker sterke signaturer for å beskytte sine egne DLL-er mot å bli forfalsket

[Kopier lenke]
Publisert på 19.10.2017 17:31:40 | | | |
Hvordan garanterer en .net/c#-applikasjon at den oppkalte DLL-en ikke erstattes av forfalskning?
https://www.itsvse.com/thread-4173-1-1.html
(Kilde: Arkitekt)

Forrige gang testet vi at DLL-en kan forfalskes av andre og gjennomføres, hvordan kan vi forhindre det?



Signaturintroduksjon:
En assemblersignatur (også kjent som en sterk navnesignatur) gir en applikasjon eller komponent en unik identitet som annen programvare kan bruke for eksplisitt å identifisere og referere til applikasjonen eller komponenten. Et sterkt navn består av assemblyens enkle tekstnavn, versjonsnummer, regional informasjon (hvis oppgitt), og et offentlig/privat nøkkelpar.

For eksempel gjør sterk navngivning det mulig for applikasjonsforfattere og administratorer å spesifisere den eksakte versjonen av én tjeneste som skal brukes av delte komponenter. Dette gjør det mulig for ulike applikasjoner å spesifisere forskjellige versjoner uten å påvirke andre. Du kan også bruke det sterke navnet på komponenten som sikkerhetsbevis for å skape et tillitsforhold mellom de to komponentene.

For å signere en assembler sterkt, trenger du ikke signere et digitalt sertifikat med kjøpt kode, du kan generere en SNK-fil med sn-verktøyet som tilbys av .NET, og du kan garantere signaturen til assembleren din ved å lagre denne filen.

En sterk signatur for en assembly er imidlertid ikke det samme som en digital signatur for en kjørbar fil (selv om assembly er en exe-fil). Og MSDN sier tydelig at exe-filer ikke skal signeres sterkt (selv om jeg gjorde det). En digital signatur for en fil er faktisk å knytte en signatur til en hvilken som helst fil på filsystemnivå, og forteller operativsystemet hvem som utsteder denne filen. I filens egenskapsmeny kan du se fanen «Digitale signaturer».


Vi signerer dll-en sterkt, og kaller den deretter med et program som kan kjøres normalt, som følger:


Hva om vi erstatter dll-en med en smidd dll? Test den, og finn at utførelsen er feil, noe som effektivt kan forhindre at den kallende dll-en blir forfalsket (Jeg testet det, endret den signerte DLL-koden, og genererte den på nytt, og applikasjonen kan også kalles normalt, det skal være så lenge programmet er signert riktig!!

Feilen er som følger:

For mer informasjon om å kalle sanntids (JIT) feilsøking i stedet for denne dialogen,
Se slutten av denne meldingen.

Uvanlig 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 (Objektavsender, 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-knapp, Int32-klikk)
   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.ControlNativeWindow.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: Logging av assembly-binding er slått av.
For å aktivere feillogging for assemblybinding, sett registerverdien [HKLM\Software\Microsoft\Fusion!» EnableLog (DWORD) er satt til 1.
Merk: Det vil være noen ytelsesstraffer knyttet til feillogging for assembly-bindinger.
For å slå av denne funksjonen, fjern registerverdien [HKLM\Software\Microsoft\Fusion!] EnableLog]。



Lastede sammenstillinger **************
mscorlib
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2098.0 bygget av: NET47REL1LAST
    Grunnkode: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
TestDll
    Assemblerversjon: 1.0.0.0
    Win32-versjon: 1.0.0.0
    Grunnkode: file:///C:/Users/itsvse_pc/Desktop/dllForm/TestDll/bin/Debug/TestDll.exe
----------------------------------------
System.Windows.Forms
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2094.0 bygget av: NET47REL1LAST
    Grunnkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2093.0 bygget av: NET47REL1LAST
    Grunnkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System. Tegning
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2046.0 bygget av: NET47REL1
    Grunnkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System. Konfigurasjon
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2046.0 bygget av: NET47REL1
    Grunnkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2098.0 bygget av: NET47REL1LAST
    Grunnkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2046.0 bygget av: NET47REL1
    Grunnkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2046.0 bygget av: NET47REL1
    Grunnkode: 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.ressurser
    Assemblerversjon: 4.0.0.0
    Win32-versjon: 4.7.2046.0 bygget av: NET47REL1
    Grunnkode: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

JIT-feilsøking **************
For å muliggjøre sanntids (JIT) feilsøking,
Den må settes i system.windows.forms-seksjonen i .config-filen (machine.config) til applikasjonen eller datamaskinen
jitDebugging-verdi.
Den må også være aktivert ved kompilering av applikasjonen
Feilsøking.

For eksempel:

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

Alle unntak uten håndtering etter JIT-feilsøking er aktivert
sendes til JIT-feilsøkeren som er registrert på denne maskinen,
I stedet for å bli håndtert av denne dialogen.







Foregående:Hvordan garanterer en .net/c#-applikasjon at den oppkalte DLL-en ikke erstattes av forfalskning?
Neste:fsadf{:1_2:}
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com