ILSpy ir kas yra dekompiliavimas asemblerio kalba: kodėl taip lengva pamatyti savo .NET kodą?
Jei kada nors atidarėte Dll „ILSpy“ programoje jau matėte, kas yra dekompiliavimas asemblerio kalboje: beveik tobulas jūsų šaltinio kodo atkūrimas. Tokios priemonės kaip „ILSpy“ ir bet kuris „dotnet“ dekompiliatorius atskleidžia vidinę logiką, kredencialus ir algoritmus – visa tai iš sukompiliuotų dvejetainių failų.
⚠️Nesaugus pavyzdys, skirtas tik edukaciniams tikslams. Nenaudoti gamybinėje aplinkoje.
Atidarius kodą naudojant „ILSpy“ arba bet kurį „dotnet“ dekompiliatorių, APIKey pateikiamas tiksliai toks, koks buvo sukompiliuotas.
Saugi versija:
Edukacinė pastaba: Niekada neužkoduokite slaptų raktų asemblijose. Naudokite aplinkos kintamuosius arba saugias raktų saugyklas.
Paslėpta informacija, atskleista naudojant ILSpy ir kitus „Dotnet“ dekompiliavimo įrankius
Dėl „ilspy“ galios tai, kas dekompiliuojama asemblerio režimu, kelia realią saugumo problemą. Net „privatūs“ duomenys tampa skaitomi, nes „dotnet“ dekompiliavimo įrankiai rekonstruoja metodų pavadinimus, konstantas ir komentarus.
⚠️Nesaugus pavyzdys, skirtas tik edukaciniams tikslams. Nenaudoti gamybinėje aplinkoje.
Naudojant „ilspy“ ši ryšio eilutė ir licencija akimirksniu atskleidžiamos.
Saugi versija:
Edukacinė pastaba: Statinius laukus pakeiskite vykdymo metu įterpta konfigūracija. Venkite palikti kietojo kodo duomenis, kuriuos galėtų atskleisti „dotnet“ dekompiliavimo įrankiai.
Kodėl kūrėjai nepakankamai įvertina dekompiliavimo riziką asemblerio procese
Daugelis kūrėjų vis dar nepakankamai įvertina „ILSpy“ ir „dotnet“ dekompiliatorių riziką, nes .NET atrodo „kompiliuotas“.
tačiau „DevSecOps“ pipelines, Derinimo simboliai ir likę metaduomenys dar labiau padidina riziką. Dažnos klaidos yra šios:
- Leidinių kūrimas naudojant .pdb derinimo simboliai.
- Paliekant išsamius steko pėdsakus „Išleidimo“ režimu.
- Trečiųjų šalių paketų, kuriuose yra vidinis kodas, siuntimas.
- Pamiršimas užmaskuoti agregatus prieš siunčiant juos į „NuGet“.
⚠️Nesaugus pavyzdys, skirtas tik edukaciniams tikslams. Nenaudoti gamybinėje aplinkoje.
Tai sukuria derinimo metaduomenų pilnus rinkinius, matomus „ILSpy“ arba bet kuriame „dotnet“ dekompiliatoriuje.
Saugi versija:
Edukacinė pastaba: Prieš platindami dvejetainius failus, visada išjunkite derinimo informaciją. Funkcinis fragmentas, užtikrinkite savo konstrukciją pipeline automatiškai vykdo šias vėliavėles.
Apsaugokite surinkimus nuo ILSpy ir Dotnet dekompiliatorių poveikio
Kai kūrėjai sužino, kas yra dekompiliavimas asemblerio kalba, kitas žingsnis yra apsauga. Kiekvienas leidimas pipeline turėtų patvirtinti, kad kompiliuoti rinkiniai negali atskleisti vidinių duomenų per ILSpy arba „dotnet“ dekompiliatorių.
Geriausia praktika
- Užmaskuoti kodą: Naudokite tokius įrankius kaip „Dotfuscator“ arba „ConfuserEx“.
- Išorinis paslapčių perdavimas: Perkelkite kredencialus į aplinkos kintamuosius arba saugyklas.
- Pašalinti derinimo metaduomenis: Visada publikuokite ištrintas, išleidimo režimo versijas.
- Automatizuoti dvejetainį nuskaitymą: Aptikti atviras eilutes ir nesaugias konfigūracijas.
- Patvirtinti CI/CD: Pridėti automatinį išankstinio diegimo vykdymą.
Pavyzdys CI/CD Žingsnis
Edukacinė pastaba: Dvejetainių kodų patvirtinimo automatizavimas užtikrina, kad prieš išleidimą surinkimai būtų saugūs. pre-commit visapusiškos „DevSecOps“ aprėpties vykdymas.
Mini prevencinis kontrolinis sąrašas
- Išskleisti derinimo ir PDB simbolius.
- Patikrinkite kiekvieną versiją ILSpy programoje, kad patvirtintumėte obfuskaciją.
- Perkelti jautrias reikšmes į aplinkos konfigūracijas.
- Įgalinti kodo maskavimą prieš platinimą.
- Automatizuoti atvirų eilučių nuskaitymą pipelines.
Edukacinė pastaba: Jei „ILSpy“ tai gali matyti, tai gali matyti ir užpuolikai. Matomumą paverskite bandymo žingsniu, o ne staigmena.
Kaip Xygeni Code Security Apsaugo nuo ILSpy ir dekompiliatoriaus nutekėjimų
Ksigeni Code Security automatiškai analizuoja agregatus, ar nėra dekompiliavimo poveikio. Jis identifikuoja nesaugias konfigūracijas ir pažymi šnipinėjimo nuskaitomas paslaptis prieš kodui paliekant jūsų serverį. pipeline.
Pagrindinės apsaugos nuo dekompiliavimo assemblerio aplinkoje rizikos priemonės:
- Aptinka trūkstamą obfuskaciją.
- Nuskaito įterptuosius prisijungimo duomenis.
- Pažymi derinimo versijas su visais metaduomenimis.
- Įgyvendina dvejetainio kodo apsaugos politiką visame CI/CD.
Saugaus vykdymo užtikrinimo pavyzdys
Edukacinė pastaba: Integruokite vykdymo užtikrinimą anksti. Automatiniai vartai sustabdo pažeidžiamus mazgus prieš sujungiant ar diegiant.
Dekompiliavimas neišvengiamas, o atskleidimas nebūtinas
Dekompiliavimas nėra hipotetinis; „ILSpy“ ir kiekvienas „dotnet“ dekompiliatorius padaro jūsų sukompiliuotą .NET kodą skaidrų.
Jei svarstote, kas yra dekompiliavimas asemblerio kalba, atsakymas yra: „viskas, ko nenorėjote bendrinti“.
Norėdami apsaugoti savo IP ir duomenis:
- Niekada neprogramuokite kredencialų ar vidinių URL kodų.
- Užmaskuoti išleidimo variantus.
- Pašalinti metaduomenis ir derinimo informaciją.
- Automatizuokite nuskaitymą naudodami tokius įrankius kaip Ksigeni Code Security.
- Rankiniu būdu peržiūrėkite dvejetainius failus naudodami „ilspy“ kaip paskutinį patvirtinimo žingsnį.
Kai jūsų surinkimai bus išsiųsti, jie bus dekompiliuoti, tačiau tai, ką jie atskleidžia, visiškai priklauso nuo to, kaip saugiai juos sukūrėte.





