Hvordan lukker jeg kildekoden

Tags:    c# visual-studio monodevelop

<< < 12 > >>
Jeg har opdaget at man kan læse kildekoden i MonoDevelop ved hjælp af Object-browseren, som om man, kun har den eksekverbar fil.
Mit problem er at jeg har udviklende et library i VS10 -C#, som skal står for nogle sikkerhedsprogrammering, men min løsning bygger på alene jeg kender kildekoden. Derfor spørger jeg om det ikke er muligt af gå fra åbne kildekode til lukkede killkode.



Indlæg senest redigeret d. 14.01.2013 07:35 af Bruger #15118
11 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
du skal aldrig bygge noget på, at man ikke kan læse kildekoden. Bare et lille tip fra mig til dig.



Hvis din eneste sikkerhed er at kildekoden er hemmelig, så gør du det forkert :-)



Du vil aldrig kunne beskytte dig 100% i mod din kode kan blive læst, men du kan gøre det en smule mere svært for andre ved at obfuscate din kode.

Men for gud skyld lade være med at opbevare betalingskortoplysninger, du kommer kun i problemer hvis du ikke er PCI godkendt.
Brug hellere en autoriseret betalings gateway i stedet for.



Det du kan læse Zakarias,er maskinkoden som de bliver decompilet.

Når du skriver noget kode, så oversættter en compiler det til maskinkode som en computer forstår. Derefter kan man så decompile maskinkoden til programmeringskoden - men man mister en masse oplysninger, og får en mærkelig kode, der oftest ikke er særlig brugbar...

Ret mig hvis det er forkert.



Hvis din eneste sikkerhed er at kildekoden er hemmelig, så gør du det forkert :-)

100% enig



Alle sikkerhedskurser du kan finde på universitet fra datalogi starter ud med udtalelsen om at det ikke nytter noget at basere sin sikkerhed på at ens kildekode er hemmelig - så lad os lige starte med at ligge det fast som et udgangspunkt.

Når det så er sagt - så er det ikke muligt for dig at "gemme" kildekoden for dit program - sålænge du giver brugerne dit program. Hvis du tænker over det, så ER dit program "kode" i en eller anden forstand. Om det så står på C#, CIL, eller direkte eksekverbart maskinkode - så er det alle sammen måder at beskrive hvad dit program skal gøre, hvordan skulle din computer ellers kunne udføre dit program?

Dvs. kører dit program i et kontrolleret miljø - jamen så har du jo gjort hvad du gerne vil - ergo skjult kildekoden. Men så snart du sender det ud til dem som ikke må kende koden, jamen så har du mere eller mindre tabt, i hvert fald sålænge vi snakker sikkerhed.

Der er selvfølgelig måder som kan forsøge at gøre det sværere at gennemskue hvad det egentlig er meningen et program udfører (på engelsk, såkaldt obfuscation) - og nogle af disse virker ret godt, til hvis du f.eks. dekompillerer et C# program. Men givet nok fritid, så vil selv disse løsninger ikke virke. Oftest bruges disse til at sørge for at brugerne ikke blot kan dekompillerer ens kode, for derefter at videreudvikle på programmet (dvs. de gør det for besværligt, men ikke umuligt).

Det korte af det lange er at i stedet for at gå efter at skjule din kode - så bør du gå efter at lave dit sikkerhedssystem sikkert nok (sikkert ved hjælp af en fornuftig implementation af noget kryptering). Du skal dog være opmærksom på at det er ekstremt svært at implementere mange af disse på fornuftig vis - og hvis du kan slippe af med det, så bør du bruge et bibliotek til formålet.



Skovgaard:

Jeg har ikke datalogi som hovederhverv, og hellere ingen uddannelsen inden for det. Jeg arbejder som fritidsprogrammør med mindre projekter.

I øjeblikket arbejder med en media center system som skal tilpasset til det nordisk marked. Hvor jeg gerne vil kunne gemmes dankortoplysning på en lokal server. Derfor har jeg brug for kryptering imellem server og cliceten. Og jeg har masse at tid, og et ønske om at skrev så meget som muligt fra grunden.

Faktisk vil jeg gerne udvikle et nyt programmigsprog. Men det er ikke muligt pga. manglende uddannelse inden for IT.

mvh Zakrias



Indlæg senest redigeret d. 15.01.2013 03:33 af Bruger #15118
Skovgaard:

Jeg har ikke datalogi som hovederhverv, og hellere ingen uddannelsen inden for det. Jeg arbejder som fritidsprogrammør med mindre projekter.

I øjeblikket arbejder med en media center system som skal tilpasset til det nordisk marked. Hvor jeg gerne vil kunne gemmes dankortoplysning på en lokal server. Derfor har jeg brug for kryptering imellem server og cliceten. Og jeg har masse at tid, og et ønske om at skrev så meget som muligt fra grunden.

Faktisk vil jeg gerne udvikle et nyt programmigsprog. Men det er ikke muligt pga. manglende uddannelse inden for IT.

mvh Zakrias


Umiddelbart er det en gateway der skal sørge for at gemme kortoplysninger, og ikke din egen hjemmelavede server. Hvis man selv skal gemme kortoplysninger, skal man certificeres og det er (heldigvis) ikke hurtigt og billigt at blive det.

Hvorfor i alverden vil du udvikle et nyt programmeringssprog? Selv med uddannelse ville det nok være tæt på umuligt, ihvertfald umuligt at konkurrere med de eksisterende og deres compilere.



Indlæg senest redigeret d. 15.01.2013 09:26 af Bruger #16319
I mit Media Center taler vi om en server på hjemmenetværket, hvor det ikke er meningen af det personlig oplysninger skal kunne tilgå online.
Den store opgavet er netto af undgå mange tasttryk.

Hvorfor udvikle et nyt programmeringssprog? - Fordi ingen sprog opfylder
mine ønsker. Et eksempel: Jeg ville genne kunne ældre en form BackColor til
en type som giver mulighed for 2D indstillinger.

Naturligvis kan jeg godt i C# gøre sådan
Fold kodeboks ind/udCSharp kode 


Men, hvis formen nu bliver konventet til Defalt Form, så findes min nye
egenskab ikke.

Og hvorfor indeholder .Net Framework Graphics ikke en metode til at tegne RoundRectale.

Samtidig er det ønske om at tage det bedst fra VB.Net, C#, og C++ i forhold til syntanken.

Men det handler ikke kun om sproget, men selvet værktøjet.
Jeg kan eksempel ikke forstå, hvorfor jeg i VS2010 ikke kan indstillet den til at debug både i x86, x64 samtidig med to forskellige output-mapper. Selv om x86 efterhånden vil gå ud af market. 4GB Ram er ingenting mere.Problemet vil så opstår igen imellem x64, x128.

Hvis man har brug for lidt forskellige kode i henholdvis x86, x64
kunne en kode i C# passende være:

Fold kodeboks ind/udCSharp kode 

Det findes sandsynlig et plugins til det, men jeg har ikke fundet det.

Derudover fordi det næsten er umuligt, og tænke at gøre det.






Indlæg senest redigeret d. 15.01.2013 10:53 af Bruger #15118
I mit Media Center taler vi om en server på hjemmenetværket, hvor det ikke er meningen af det personlig oplysninger skal kunne tilgå online.
Den store opgavet er netto af undgå mange tasttryk.


Du vil gemme kortoplysninger på en server på hjemmenetværket, men oplysningerne skal ikke bruges online? Hvor skal de så bruges? (:

Hvorfor udvikle et nyt programmeringssprog? - Fordi ingen sprog opfylder
mine ønsker.


Det lyder som om det er nogle problemer med .NET frameworket, og ikke selve programmeringssproget C#.

Og hvis vi tager dit eksempel med BackColor skal du huske på at dette bare er en property på et control skabt af Microsoft til .NET frameworket.
Du kan til hver en tid udvikle dine egne controls med dine egne properties, metoder og fields.

Det samme med Round Rectangle på Graphics-klassen. Det er en meget simpel lille tilføjelse du selv kan udvikle, og har intet med programmeringssproget at gøre.

Angående at udvikle til 64 eller 32bit er det vel bare at lave nogle check i din kode, eller lave nogle statiske variabler du selv sætter når du vil debugge, ellers ved jeg ikke lige hvad du mener.


Sorry for off-topic.



Indlæg senest redigeret d. 15.01.2013 11:03 af Bruger #16319
<< < 12 > >>
t