|
|
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:}
|