Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 22989|Atbildi: 1

[WinForm] .net/c# izmanto spēcīgus parakstus, lai aizsargātu savus DLL no viltošanas

[Kopēt saiti]
Publicēts 19.10.2017 17:31:40 | | | |
Kā .net/c# lietojumprogramma garantē, ka izsauktais dll netiek aizstāts ar viltojumu?
https://www.itsvse.com/thread-4173-1-1.html
(Avots: Arhitekts)

Pēdējo reizi mēs pārbaudījām, ka dll var viltot citi un izpildīt, kā to novērst?



Paraksta ievads:
Montāžas paraksts (pazīstams arī kā stiprā nosaukuma paraksts) piešķir lietojumprogrammai vai komponentam unikālu identitāti, ko cita programmatūra var izmantot, lai skaidri identificētu lietojumprogrammu vai komponentu un atsauktos uz to. Spēcīgais nosaukums sastāv no vienkārša montāžas teksta nosaukuma, versijas numura, reģionālās informācijas (ja tāda ir norādīta) un publisko/privāto atslēgu pāra.

Piemēram, spēcīgs nosaukums ļauj lietojumprogrammu autoriem un administratoriem norādīt precīzu viena pakalpojuma versiju, ko izmantos koplietojamie komponenti. Tas ļauj dažādām lietojumprogrammām norādīt dažādas versijas, neietekmējot citas. Komponenta drošo nosaukumu var izmantot arī kā drošības pierādījumu, lai izveidotu uzticamības attiecības starp abiem komponentiem.

Lai stingri parakstītu montāžu, jums nav jāparaksta ciparsertifikāts ar iegādāto kodu, jūs varat ģenerēt SNK failu ar .NET nodrošināto sn rīku, un jūs varat garantēt savas montāžas parakstu, saglabājot šo failu.

Tomēr spēcīgs paraksts montāžai nav tas pats, kas izpildāmā faila ciparparaksts (pat ja montāža ir exe fails). Un MSDN skaidri saka, ka exe faili nedrīkst būt stingri parakstīti (lai gan es to darīju). Faila ciparparaksts faktiski ir paraksta pievienošana jebkuram failam failu sistēmas līmenī, norādot operētājsistēmai, kas ir šī faila izdevējs. Faila rekvizītu dialoglodziņā varat redzēt cilni "Digitālie paraksti".


Mēs stingri parakstām dll un pēc tam izsaucam to ar programmu, kuru var izpildīt normāli, šādi:


Ko darīt, ja mēs nomainām dll ar viltotu dll? Pārbaudiet to un konstatējiet, ka izpilde ir kļūda, kas var efektīvi novērst izsaukuma dll viltošanu (Es to pārbaudīju, modificēju parakstīto dll kodu un pēc tam to atjaunoju, un lietojumprogrammu var saukt arī normāli, tam vajadzētu būt tik ilgi, kamēr programma ir parakstīta pareizi!

Kļūda ir šāda:

Lai iegūtu papildinformāciju par reāllaika (JIT) atkļūdošanas izsaukšanu šī dialoga vietā, skatiet šeit:
Skatīt šī ziņojuma beigas.

Neparasta teksta **************
System.IO.FileLoadException: 未能加载文件或程序集“dllFrom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eb67821f2cf76b4e”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
Faila nosaukums: "dllFrom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eb67821f2cf76b4e"
   In TestDll.Form1.button1_Click_1 (Objekta sūtītājs, EventArgs e)
   Sistēmā System.Windows.Forms.Control.OnClick(EventArgs e)
   Sistēmā System.Windows.Forms.Button.OnClick(EventArgs e)
   Sistēmā System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   Vietnē System.Windows.Forms.Control.WmMouseUp(Ziņojums& m, poga PelesPogas, klikšķi Int32)
   Sistēmā System.Windows.Forms.Control.WndProc(Ziņojums& m)
   Sistēmā System.Windows.Forms.ButtonBase.WndProc(Ziņojums& m)
   Sistēmā System.Windows.Forms.Button.WndProc(Ziņojums& m)
   Sistēmā System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Ziņojums& m)
   Sadaļā System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   Sistēmā System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Brīdinājums: montāžas saistīšanas reģistrēšana ir izslēgta.
Lai iespējotu montāžas saistīšanas kļūmju reģistrēšanu, iestatiet reģistra vērtību [HKLM\Software\Microsoft\Fusion!" EnableLog (DWORD) ir iestatīts uz 1.
Piezīme: Būs daži veiktspējas sodi, kas saistīti ar montāžas saistīšanas kļūmju reģistrēšanu.
Lai izslēgtu šo līdzekli, noņemiet reģistra vērtību [HKLM\Software\Microsoft\Fusion!] EnableLog]。



Ielādētie mezgli **************
mscorlib
    Montāžas versija: 4.0.0.0
    Win32 versija: 4.7.2098.0 uzbūvēja: NET47REL1LAST
    Bāzes kods: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
TestDll
    Montāžas versija: 1.0.0.0
    Win32 versija: 1.0.0.0
    Bāzes kods: file:///C:/Users/itsvse_pc/Desktop/dllForm/TestDll/bin/Debug/TestDll.exe
----------------------------------------
Sistēma.Windows.Forms
    Montāžas versija: 4.0.0.0
    Win32 versija: 4.7.2094.0 izveidoja: NET47REL1LAST
    Bāzes kods: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
Sistēma
    Montāžas versija: 4.0.0.0
    Win32 versiju: 4.7.2093.0 uzbūvēja: NET47REL1LAST
    Bāzes kods: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
Sistēma.Zīmējums
    Montāžas versija: 4.0.0.0
    Win32 versija: 4.7.2046.0 uzbūvēja: NET47REL1
    Bāzes kods: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Sistēma.Konfigurācija
    Montāžas versija: 4.0.0.0
    Win32 versija: 4.7.2046.0 uzbūvēja: NET47REL1
    Bāzes kods: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
Sistēma.Kodols
    Montāžas versija: 4.0.0.0
    Win32 versija: 4.7.2098.0 uzbūvēja: NET47REL1LAST
    Bāzes kods: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
Sistēma.Xml
    Montāžas versija: 4.0.0.0
    Win32 versija: 4.7.2046.0 uzbūvēja: NET47REL1
    Bāzes kods: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Sistēma.Windows.Forms.resources
    Montāžas versija: 4.0.0.0
    Win32 versija: 4.7.2046.0 uzbūvēja: NET47REL1
    Bāzes kods: 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
    Montāžas versija: 4.0.0.0
    Win32 versija: 4.7.2046.0 uzbūvēja: NET47REL1
    Bāzes kods: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

JIT atkļūdošana **************
Lai iespējotu reāllaika (JIT) atkļūdošanu,
Tas jāiestata lietojumprogrammas vai datora .config faila (machine.config) sadaļā system.windows.forms
jitDebugging vērtība.
Tam jābūt iespējotam arī, kompilējot pieteikumu
Atkļūdošana.

Piemēram:

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

Visi neapstrādātie izņēmumi pēc JIT atkļūdošanas iespējošanas
tiks nosūtīts šajā mašīnā reģistrētajam KIG atkļūdotājam,
Tā vietā, lai to apstrādātu šis dialogs.







Iepriekšējo:Kā .net/c# lietojumprogramma garantē, ka izsauktais dll netiek aizstāts ar viltojumu?
Nākamo:fsadf{:1_2:}
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com