See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 22989|Vastuse: 1

[WinForm] .net/c# kasutab tugevaid allkirju, et kaitsta oma DLL-e võltsimise eest

[Kopeeri link]
Postitatud 19.10.2017 17:31:40 | | | |
Kuidas garanteerib .net/c# rakendus, et kutsutud dll ei asendata võltsinguga?
https://www.itsvse.com/thread-4173-1-1.html
(Allikas: Arhitekt)

Eelmine kord testisime, et DLL-i saab võltsida ja ellu viia, kuidas seda vältida?



Allkirja sissejuhatus:
Assamblee allkiri (tuntud ka kui tugeva nime allkiri) annab rakendusele või komponendile unikaalse identiteedi, mida teine tarkvara saab kasutada rakenduse või komponendi selgeks tuvastamiseks ja viitamiseks. Tugev nimi koosneb assamblee lihtsast tekstinimest, versiooninumbrist, piirkondlikust infost (kui see on olemas) ja avalikust/privaatvõtme paarist.

Näiteks võimaldab tugev nimetamine rakenduse autoritel ja administraatoritel määrata täpse ühe teenuse versiooni, mida jagatud komponendid kasutavad. See võimaldab erinevatel rakendustel määrata erinevaid versioone ilma teisi mõjutamata. Samuti võib kasutada komponendi tugevat nimetust turvatõendina, et luua usaldussuhe kahe komponendi vahel.

Assembleri tugevaks allkirjastamiseks ei pea sa allkirjastama digitaalset sertifikaati ostetud koodiga, saad SNK-faili genereerida .NET-i pakutava sn-tööriistaga ning saad garanteerida oma assamblee allkirja, salvestades selle faili.

Siiski ei ole tugev allkiri assembleri jaoks sama mis digitaalne allkiri täidetava faili jaoks (isegi kui assembler on exe-fail). Ja MSDN ütleb selgelt, et exe-faile ei tohiks tugevalt allkirjastada (kuigi ma tegin seda). Faili digitaalallkiri tähendab tegelikult allkirja lisamist mis tahes failile failisüsteemi tasemel, mis ütleb operatsioonisüsteemile, kes on selle faili väljastaja. Faili omaduste dialoogis näed vahekaarti "Digitaalsed allkirjad".


Me allkirjastame tugevalt dll-i ja kutsume selle seejärel programmiga, mida saab normaalselt käivitada järgmiselt:


Mis siis, kui asendame DLL-i võltsitud DL-iga? Testi ja leia, et täitmine on viga, mis võib tõhusalt takistada kutsuva dll-i võltsimist (Testisin seda, muutsin allkirjastatud dll koodi ja taastasin selle ning rakendust saab samuti normaalselt kutsuda, see peaks olema nii, kuni programm on õigesti allkirjastatud!!

Viga on järgmine:

Lisateabe saamiseks reaalajas (JIT) silumise kutsumise kohta selle dialoogi asemel,
Vaata selle sõnumi lõppu.

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

Hoiatus: Assembly binding logimine on välja lülitatud.
Assembly binding vea logimise lubamiseks määra registri väärtus [HKLM\Software\Microsoft\Fusion!" EnableLog (DWORD) on seatud väärtusele 1.
Märkus: Kokkupaneku sidumise ebaõnnestumise logimisega kaasneb mõningaid jõudluse kaotused.
Selle funktsiooni väljalülitamiseks eemaldage registri väärtus [HKLM\Software\Microsoft\Fusion!] EnableLog]。



Loaded Assemblies **************
mscorlib
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2098.0 ehitaja: NET47REL1LAST
    Baaskood: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
TestDll
    Assembly versioon: 1.0.0.0
    Win32 versioon: 1.0.0.0
    Baaskood: file:///C:/Users/itsvse_pc/Desktop/dllForm/TestDll/bin/Debug/TestDll.exe
----------------------------------------
System.Windows.Forms
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2094.0 ehitaja: NET47REL1LAST
    Baaskood: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
Süsteem
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2093.0 ehitanud: NET47REL1LAST
    Baaskood: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
Süsteem. Joonistus
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2046.0 ehitaja: NET47REL1
    Baaskood: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Süsteem. Konfiguratsioon
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2046.0 ehitaja: NET47REL1
    Baaskood: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2098.0 ehitaja: NET47REL1LAST
    Baaskood: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2046.0 ehitaja: NET47REL1
    Baaskood: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2046.0 ehitaja: NET47REL1
    Baaskood: 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
    Assembleri versioon: 4.0.0.0
    Win32 versioon: 4.7.2046.0 ehitaja: NET47REL1
    Baaskood: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

JIT silumine **************
Reaalajas (JIT) silumise võimaldamiseks
See tuleb seadistada rakenduse või arvuti .config faili (machine.config) system.windows.forms sektsioonis
jitSilumise väärtus.
See peab olema lubatud ka rakenduse kompileerimisel
Silumine.

Näiteks:

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

Kõik käsitlemata erandid pärast JIT silumist on lubatud
saadetakse sellel masinal registreeritud JIT silurisse,
Selle asemel, et lasta end selle dialoogiga käsitleda.







Eelmine:Kuidas garanteerib .net/c# rakendus, et kutsutud dll ei asendata võltsinguga?
Järgmine:fsadf{:1_2:}
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com