Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 22989|Odpoveď: 1

[WinForm] .NET/C# používa silné podpisy na ochranu svojich vlastných DLL pred falšovaním

[Kopírovať odkaz]
Zverejnené 19. 10. 2017 17:31:40 | | | |
Ako môže .net/c# aplikácia zaručiť, že volaný dll nebude nahradený falšovaním?
https://www.itsvse.com/thread-4173-1-1.html
(Zdroj: Architect)

Minule sme testovali, že DLL môžu sfalšovať a vykonať iní, ako tomu zabrániť?



Úvod k podpisu:
Podpis assembleru (známy aj ako podpis silného mena) dáva aplikácii alebo komponentu jedinečnú identitu, ktorú môže iný softvér použiť na explicitnú identifikáciu a referenciu aplikácie alebo komponentu. Silné meno pozostáva z jednoduchého textového názvu zostavy, čísla verzie, regionálnych informácií (ak sú poskytnuté) a páru verejných/súkromných kľúčov.

Napríklad silné pomenovanie umožňuje autorom a administrátorom aplikácií presne určiť verziu jednej služby, ktorú budú zdieľané komponenty používať. To umožňuje rôznym aplikáciám špecifikovať rôzne verzie bez ovplyvnenia ostatných. Môžete tiež použiť silné meno komponentu ako bezpečnostný dôkaz na vytvorenie dôverného vzťahu medzi týmito dvoma komponentmi.

Na silné podpísanie assembleru nemusíte podpísať digitálny certifikát zakúpeným kódom, môžete vygenerovať SNK súbor pomocou nástroja sn poskytovaného .NET a môžete si garantovať podpis svojho assembleru uložením tohto súboru.

Avšak silný podpis pre assembler nie je to isté ako digitálny podpis pre spustiteľný súbor (aj keď je assembly exe súbor). A MSDN jasne hovorí, že exe súbory by nemali byť silno podpísané (hoci som to urobil). Digitálny podpis pre súbor je v skutočnosti pripojenie podpisu k ľubovoľnému súboru na úrovni súborového systému, čím operačnému systému oznámite, kto je vydavateľom tohto súboru. V dialógovom okne vlastností súboru môžete vidieť záložku "Digitálne podpisy".


Silno podpíšeme dll a potom ho voláme programom, ktorý sa dá vykonať normálne, nasledovne:


Čo keby sme nahradili dll falšovaným dll? Otestujte ho a zistite, že vykonanie je chyba, čo môže efektívne zabrániť falšovaniu volajúceho dll (Otestoval som to, upravil podpísaný dll kód a potom ho znovu vygeneroval, a aplikácia sa dá volať aj normálne, malo by to platiť, pokiaľ je program správne podpísaný!!

Chyba je nasledovná:

Pre viac informácií o volaní v reálnom čase (JIT) ladení namiesto tohto dialógu,
Pozri koniec tejto správy.

Nezvyčajný text **************
System.IO.FileLoadException: 未能加载文件或程序集“dllFrom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eb67821f2cf76b4e”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
Názov súboru: "dllFrom, version=1.0.0.0, Culture=neutral, PublicKeyToken=eb67821f2cf76b4e"
   V TestDll.Form1.button1_Click_1 (Odosielateľ objektu, EventArgs e)
   In System.Windows.Forms.Control.OnClick(EventArgs e)
   In System.Windows.Forms.Button.OnClick(EventArgs e)
   In System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   V System.Windows.Forms.Control.WmMouseUp(Message& m, tlačidlo MouseButtons, Int32 kliknutí)
   In System.Windows.Forms.Control.WndProc(Message& m)
   In System.Windows.Forms.ButtonBase.WndProc(Message& m)
   In System.Windows.Forms.Button.WndProc(Message& m)
   V System.Windows.Forms.Control.ControlNativeNativeWindow.OnMessage(Message& m)
   In System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   In System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Upozornenie: Logovanie viazania montáže je vypnuté.
Na povolenie logovania zlyhania viazania assembly nastavte hodnotu registra [HKLM\Software\Microsoft\Fusion!" EnableLog (DWORD) je nastavený na 1.
Poznámka: S logovaním zlyhania montáže budú spojené určité postihy za výkon.
Na vypnutie tejto funkcie odstráňte hodnotu registra [HKLM\Software\Microsoft\Fusion!] EnableLog]。



Naložené zostavy **************
mscorlib
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2098.0 vytvorená: NET47REL1LAST
    Základný kód: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
TestDll
    Assembly verzia: 1.0.0.0
    Verzia Win32: 1.0.0.0
    Základný kód: file:///C:/Users/itsvse_pc/Desktop/dllForm/TestDll/bin/Debug/TestDll.exe
----------------------------------------
System.Windows.Forms
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2094.0 vytvorená: NET47REL1LAST
    Základný kód: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
Systém
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2093.0 vytvorená: NET47REL1LAST
    Základný kód: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
Systém. Kresba
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2046.0 vytvorená: NET47REL1
    Základný kód: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2046.0 vytvorená: NET47REL1
    Základný kód: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2098.0 vytvorená: NET47REL1LAST
    Základný kód: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.XML
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2046.0 vytvorená: NET47REL1
    Základný kód: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2046.0 vytvorená: NET47REL1
    Základný kód: 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
    Assembly verzia: 4.0.0.0
    Verzia Win32: 4.7.2046.0 vytvorená: NET47REL1
    Základný kód: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

Ladenie JIT **************
Na povolenie ladenia v reálnom čase (JIT),
Musí byť nastavený v sekcii system.windows.forms v .config súbore (machine.config) aplikácie alebo počítača
jitDebugging hodnota.
Musí byť tiež zapnutý pri kompilácii aplikácie
Debuging.

Napríklad:

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

Akékoľvek nespracované výnimky po JIT ladení sú povolené
bude odoslané do JIT debuggera registrovaného na tomto stroji,
Namiesto toho, aby to riešil tento dialóg.







Predchádzajúci:Ako môže .net/c# aplikácia zaručiť, že volaný dll nebude nahradený falšovaním?
Budúci:fsadf{:1_2:}
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com