Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 22989|Răspunde: 1

[WinForm] .net/c# folosește semnături puternice pentru a-și proteja propriile DLL-uri de a fi falsificate

[Copiază linkul]
Postat pe 19.10.2017 17:31:40 | | | |
Cum garantează o aplicație .net/c# că dll apelat nu este înlocuit de falsificare?
https://www.itsvse.com/thread-4173-1-1.html
(Sursa: Arhitect)

Data trecută, am testat că dll poate fi falsificat de alții și executat, cum să prevenim asta?



Introducere emblematică:
O semnătură de asamblare (cunoscută și ca semnătură de nume puternic) oferă unei aplicații sau componentei o identitate unică pe care alte programe software o pot folosi pentru a identifica și referenționa explicit aplicația sau componenta. Un nume puternic constă din numele simplu de text al asamblării, numărul de versiune, informațiile regionale (dacă sunt furnizate) și o pereche de chei public/privată.

De exemplu, denumirea puternică permite autorilor și administratorilor aplicațiilor să specifice versiunea exactă a unui serviciu care va fi folosită de componentele partajate. Acest lucru permite diferitelor aplicații să specifice versiuni diferite fără a afecta altele. Poți folosi, de asemenea, denumirea puternică a componentei ca dovadă de securitate pentru a genera o relație de încredere între cele două componente.

Pentru a semna puternic o asamblare, nu trebuie să semnezi un certificat digital cu codul achiziționat, poți genera un fișier SNK cu instrumentul sn oferit de .NET și poți garanta semnătura asamblării salvând acest fișier.

Totuși, o semnătură puternică pentru un ansamblu nu este același lucru cu o semnătură digitală pentru un fișier executabil (chiar dacă asamblarea este un fișier exe). Iar MSDN spune clar că fișierele exe nu ar trebui să fie semnate puternic (deși eu am semnat). O semnătură digitală pentru un fișier atașează de fapt o semnătură oricărui fișier la nivelul sistemului de fișiere, informând sistemul de operare cine este emitentul acelui fișier. În dialogul de proprietăți al fișierului, poți vedea fila "Digital Signatures".


Semnăm puternic DLL-ul, apoi îl numim cu un program, care poate fi executat normal, astfel:


Ce-ar fi să înlocuim dll cu unul falsificat? Testează-l și constată că execuția este o eroare, ceea ce poate preveni efectiv falsificarea dll apelantului (L-am testat, am modificat codul dll semnat, apoi l-am regenerat, iar aplicația poate fi de asemenea apelată normal, așa că ar trebui să fie atâta timp cât programul este semnat corect!!

Eroarea este următoarea:

Pentru mai multe informații despre apelarea depanării în timp real (JIT) în locul acestui dialog de dialog,
Vezi finalul acestui mesaj.

Text neobișnuit **************
System.IO.FileLoadException: 未能加载文件或程序集“dllFrom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eb67821f2cf76b4e”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
Nume fișier: "dllFrom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eb67821f2cf76b4e"
   În TestDll.Form1.button1_Click_1 (Object sender, EventArgs e)
   În System.Windows.Forms.Control.OnClick(EventArgs e)
   În System.Windows.Forms.Button.OnClick(EventArgs e)
   În System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   La System.Windows.Forms.Control.WmMouseUp(Message& m, butonul MouseButton, Int32 click-uri)
   În System.Windows.Forms.Control.WndProc(Message& m)
   În System.Windows.Forms.ButtonBase.WndProc(Message& m)
   În System.Windows.Forms.Button.WndProc(Message& m)
   În System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   În System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   In System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Atenție: Logarea legăturii de asamblare este dezactivată.
Pentru a activa înregistrarea eșecului legăturii de asamblare, setați valoarea registrului [HKLM\Software\Microsoft\Fusion!" EnableLog (DWORD) este setat la 1.
Notă: Vor exista unele penalizări de performanță asociate cu înregistrarea defectelor legăturilor de ansamblu.
Pentru a dezactiva această funcție, eliminați valoarea registrului [HKLM\Software\Microsoft\Fusion!] EnableLog]。



Ansambluri încărcate **************
mscorlib
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2098.0 construită de: NET47REL1LAST
    Cod de bază: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
TestDll
    Versiunea de asamblare: 1.0.0.0
    Versiunea Win32: 1.0.0.0
    Cod de bază: file:///C:/Users/itsvse_pc/Desktop/dllForm/TestDll/bin/Debug/TestDll.exe
----------------------------------------
System.Windows.Forms
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2094.0 Construită de: NET47REL1LAST
    Cod de bază: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
Sistem
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2093.0 construită de: NET47REL1LAST
    Cod de bază: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2046.0 Construită de: NET47REL1
    Cod de bază: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2046.0 Construită de: NET47REL1
    Cod de bază: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2098.0 construită de: NET47REL1LAST
    Cod de bază: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2046.0 Construită de: NET47REL1
    Cod de bază: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2046.0 Construită de: NET47REL1
    Cod de bază: 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.resources
    Versiunea de asamblare: 4.0.0.0
    Versiunea Win32: 4.7.2046.0 Construită de: NET47REL1
    Cod de bază: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

Depanarea JIT **************
Pentru a permite depanarea în timp real (JIT),
Trebuie setat în secțiunea system.windows.forms din fișierul .config (machine.config) al aplicației sau calculatorului
jitDebugging value.
De asemenea, trebuie activat la compilarea aplicației
Depanare.

De exemplu:

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

Orice excepție negestionată după depanarea JIT este activată
va fi trimisă către depanorul JIT înregistrat pe această mașină,
În loc să fie gestionat de acest dialog.







Precedent:Cum garantează o aplicație .net/c# că dll apelat nu este înlocuit de falsificare?
Următor:fsadf{:1_2:}
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com