|
ASP.net (199)
ASP 3.0 (111)
PHP (30)
HTML (66)
SQL (89)
CSS (46)
XML (7)
JavaScript (78)
Diverse kode (13)
Programmering (22)
System og drift (15)
Trafikk og inntekt (11)
Guider og tips (22)
Nyttig lesestoff (23)
Web forum (604)
Link galleri (565)
ASP.NET kurs(5)
CSS kurs (2)
JQuery kurs (2)
Øk trafikken (8)
Facebook App. (4)
Microsoft CEO (6)
Server & web
Internett & epost
Systemverktøy
Sikkerhet
Fildeling
Lyd & media
Diverse software
Domenesalg
Metagenerator
Websikre farger
WebMail
Bli medlem!
Siste innlegg
Gjestebok
Tips en venn
Kontakt oss
Forsiden
|
|
Hvordan beskytte kildekoden i .NET Av: Øyvind A. Isaksen
Når du jobber i .NET ligger kildekoden åpen for alle i en .dll eller exe -fil. Denne artikkelen tar for denne problematikken, og hvordan du kan sikre kildekoden mot hackere og "revers-ingeniører". Vi tar en titt på hva obfuscation er, samt hvordan man kan kryptere koden etter å ha kjørt en obfuscation.
Summary: How to protect your source code in the. NET by encrypting your dll's.
Bakgrunn
Ved hjelp av et par enkle grep er det faktisk mulig å hente ut orginalkoden fra det du trodde var en ferdigkompilert og uleselig binærfil. Som du kanskje vet kan i .NET skrive programmer i mange forskjellige språk som feks C# eller Visual Basic. Dette er mulig siden .NET arkitekturen er bygd rundt et Intermediate Language (IL), et språk som den originale koden blir oversatt til. Denne IL koden blir sendt videre til .NET rammeverket og på samme måte som Java kode blir kjørt i en virtuell maskin. IL-koden blir kompilert i frameworket av en JITer (Just-In-Time kompilator) i runtime, dette øker ytelsen og efektiviteten til systemet.
Kildekoden i klartekst
At kildekoden står i klartkest er på mange måter en fordel og gjør ting enklere, men dette er også et sikkerhetshull som hackere og andre med lumske hensikert kan utnytte seg av. Mange tror at dll- eller exe-filen som er laget med Visual Studio er en uleselig binærfil slik som man kanskje har vært vant med tidligere, men slik er det ikke! Grunnen er at filene først blir kompilert i runtime av .NET rammverket, og er derfor fult reverserbare.
For å lese kildekoden og den komplette trestrukturen i disse dll- og exe-filene kan man bruke verktøy som er fritt tilgjengelig fra Microsoft. ldasm.exe er en disassembler som konverterer disse kjørbare filene til en leselig tekstfil. Denne filen inneholder IL-koden, men faktisk også den originale koden, med kommentarer og alt! Ved å endre IL-koden og så kjøre den igjennom ilasm.exe (motparten til ildasm.exe - også fra Microsoft) kan man lage nye versjoner av andres programmer.
Et annet disassemblerprogram man bør ta en titt på er Lutz Roeders Reflector. Det er gratis og tar i bruk ildasm.exe for å vise IL-kode, men også original C# eller Visual Basic-kode i stor detalj. Programmet er meget enkelt og egner seg godt for å sjekke hvor flink du har vært å sikre din kildekode.
Beskytt med obfuscation
For å forhinde reverse-engineering tar mange utviklere i bruk en metode kjent som obfuscation. Dette vil si å endre navnene på namespace, klasser, funksjoner, interface og variabler generelt slik at det ikke skal være så enkelt å reversere koden din.
Et eksempel på enkel obfuscation:
Funksjonskallet CMyClass.MyFunction( myVariable ); ville kunne sett slik ut etter obfuscation: a.a( b ); noe som ikke er like enkelt å skjønne betydningen av; særlig hvis programmet ditt inneholder flere tusen linjer hvor alle klasser, funksjoner osv nå alle heter a, b, aa, c, ca og så videre.
Koden er fortsatt full leselig etter obfuscation, og for en god ”hacker” er det ikke vanskelig å forstå hva som skjer selv om reversering av koden nå vil ta lenger tid pga uforståelige funksjonsnavn. Obfuscation er altså ingen beskyttelse i seg selv men kan gjøre jobben mye vanskeligere for hackere og andre og bør derfor alltid brukes.
Microsoft Visual Studio 2005 inkluderer en gratis obfuscator fra firmaet Preemptive Solutions og er gratis for en basic versjon. Dette verktøyet finnes under [Tools] -> [Dotfuscator Community Edition]. Preemptive Solutions tilbyr også to versjoner av dette verktøyet som ikke er gratis, men som gjør veldig mye mer med koden for å beskytte den ytterligere. Se Preemptive Solutions for mer informasjon.
Krypter koden for maks beskyttelse
For å beskytte deg bedre mot hackere bør du kryptere koden, og det finnes mange programmer for å gjøre det. CliSecure fra Secureteam er et slikt program, dette krypterer dll- og exe-filene slik at bare en del av IL-koden blir lastet inn i minnet når den blir kompilert av JITeren. Dermed klarer ikke disassemblere å reversere koden like lett som uten denne krypteringen. Secureteam hevder faktisk at det er umulig.
Om man prøver man å åpne en dll- eller exe-fil som er kryptert med CliSecure med Reflector (nevn tidligere) vil man ikke lenger få opp originalkoden. Trestrukturen i programmet er fortsatt synlig, men etter å ha kjørt en obfuscator for kryptering er denne ikke lenger mye verdt siden alle navn har blitt endret til uforståelige navn som a, b, bb osv. Krypteringen gjør at funksjonsinnhold osv. ikke lenger er leselig med Reflector eller andre disassemblere.
Oppsummering
Når du jobber i .NET ligger kildekoden åpen for alle i en .dll eller exe -fil. Med noen enkel grep kan man beskytte seg mot hackere og andre kriminelle mennesker ved å kjøre en obfuscator etter å ha kompilert og bygt programmet. Dette vil endre alle navn på namespace, klasser, funksjoner og så videre. Deretter bør man kjøre et krypteringsprogram på den "obfuskerte" koden for å gjøre det vanskelig eller umulig for disassemblere å reversere koden på et senere tidspunkt.
Programmer som ”obfuskerer” kan man enkelt få tak i gratis på nettet, mens man må betale noen kroner for et godt krypteringsprogram. Denne utgiften er imidlertidig en god investering for å forhindre at andre snoker i kildekoden din!
Kilde: ITpro.no | Secureteam | Preemptive Solutions | Lutz Roeder
|
|