Announcement

Collapse
No announcement yet.

Zugriff auf Klassen einer EXE-Datei verhindern

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf Klassen einer EXE-Datei verhindern

    Hallo zusammen!

    Der Zugriff auf die Klassen und Methoden von Assemblies scheint unter .Net recht einfach zu sein. Wie kann man den Zugriff auf die Klassen einer Exe-Datei von außen verhindern? Ist das "Friend"-Schlüsselwort die Lösung aller Probleme und wie sicher wird dadurch der Zugriff verhindert? Oder gibt es einen einfacheren Weg, den Zugriff sicher zu unterbinden?

    Vielen Dank
    Michael

    PS: Ich entwickle derzeit mit VB.net 2005.

  • #2
    Hallo,

    ja des geht mit internal (C#) bzw. Friend (VB.net).

    Theoretisch ganz sicher. Ich müsste erst testen ob man da irgendwie mit Reflektion ran kommt um es zu knacken.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo,

      mittels Reflection kann man auch auf internal / friend zugreifen.
      *-- robert.oh. --*

      Comment


      • #4
        Vielen Dank für Eure Antworten.

        Gibt es vielleicht irgendwelche Tools, die hier weiterhelfen?

        Schöne Grüße...

        Comment


        • #5
          Obfuskatoren sind das Stichwort.

          Verschleiern (obfuskieren) die Assembly so dass sie mit einem Reflektor nicht mehr gelesen werden kann bzw. keine sinnvolle Information daraus gelesen werden kann.
          Manchmal geht das Programm auch gar nicht mehr.

          Bringen meiner Meinung nach nichts. Wurde auch schon manchmal im Forum diskutiert (Suchfunktion wenn du die Diskussionen lesen willst).

          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            Mal eine Frage von einem Nicht-NET-Entwickler:

            Seit wann haben EXE Klassen?? EXE=Compilierter und gelinkter Code=Assemblercode??
            Christian

            Comment


            • #7
              Hallo Christian,

              man kann es in der Tat so formulieren: Eine Assembly (=EXE oder DLL) ist unter NET in der Regel noch nicht lauffähig, sondern muss erst noch vom JIT-(Just-in-Time-)Compiler in Maschinencode (falsch ist meine vorige Formulierung "Assembler") übersetzt werden. Eine Assembly ist immer - wirklich immer - eine Sammlung von Klassen, weil NET vollständig nach OOP arbeitet. Alles sind Klassen (auch ein String oder das Hauptprogramm, das die Main-Methode enthält).

              Gruß Jürgen
              Zuletzt editiert von Jürgen Thomas; 14.11.2008, 10:53.

              Comment


              • #8
                Danke für die Info
                Christian

                Comment


                • #9
                  muss erst noch vom JIT-(Just-in-Time-)Compiler in Assembler übersetzt werden.
                  Das korrigiere ich ein wenig:

                  Das .net-Kompilat liegt als Byte-Code vor (MSIL - Microsoft Intermediate Language) und ist nicht lauffähig. Eine virtuelle Maschine, die CLR - Common Language Runtime - übersetzt zur Laufzeit den Byte-Code in Maschinencode und dieser wird ausgeführt.

                  Assembler-Code ist auch nicht lauffähig und muss kompiliert und eventuell gelinkt werden um den ausführbaren Maschinencode zu erhalten. Assembler(sprache) ist eine (primitive aber mächtige) Programmiersprache. Der Kompiler wird auch Assembler genannt.

                  mfG Gü
                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                  Comment


                  • #10
                    Ok, korrigiere das um das ganz genau darzustellen

                    Seit wann haben EXE Klassen?? EXE=Compilierter und gelinkter Code=Assembler??
                    Christian

                    Comment


                    • #11
                      Hallo Christian,

                      ich habe nach Gü's Antwort meine obige Beschreibung geändert und hoffe, dass er diese Formulierung als korrekt akzeptiert.

                      Jürgen

                      PS. Sollte ich noch den Hinweis auf "JIT-Compiler" in "CLR" ändern?

                      Comment


                      • #12
                        Sollte ich noch den Hinweis auf "JIT-Compiler" in "CLR" ändern?
                        Nein, nicht nötig da der JITer Teil der CLR ist

                        Seit wann haben EXE Klassen??
                        Wie Jürgen schon erwähnte sind in .net alles Klassen bzw. Objekte. Nach der Kompilierung liegt eine Sammlung von Klassen in Assemblies vor. Diejenige Klasse die eine Main-Methode enthält wird zum Start ausgeführt.
                        Die Trennung in EXE und DLL ist nicht nötig, wurde aber aus "historischen" Gründen so benannt wie in nativen Windows Entwicklungen.

                        EXE=Compilierter und gelinkter Code=Assemblercode??
                        Das stimmt nicht. Eine einfache Erklärung findest du hier.

                        mfG Gü
                        Zuletzt editiert von gfoidl; 14.11.2008, 13:01.
                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                        Comment


                        • #13
                          Zurück zur Ausgangsfrage:
                          Der Zugriff mittels Reflektion kann auch gesteuert werden -> http://msdn.microsoft.com/de-de/libr...ermission.aspx

                          mfG Gü
                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                          Comment


                          • #14
                            Das stimmt nicht. Eine einfache Erklärung findest du hier.
                            ich hatte die Disskusion hier schon mal, und bin nicht bereit sie nochmal zu führen. Ob du nun das Ergebnis von Compiler&Linker als Assembler, Assemblercode, Maschienencode bezeichnen willst ist für mich obsolet.

                            Kann auch nicht erkennen, was der Link nun gegenteiliges sagt. Dieser beschreibt die Compilierung..ein Teil des ganzen Vorganges

                            Eine EXE in PDasm geladen ergibt Assemblercode. Die Änderung in dem Code gespeichert ergibt eine EXE.
                            Christian

                            Comment


                            • #15
                              Eine EXE in PDasm geladen ergibt Assemblercode. Die Änderung in dem Code gespeichert ergibt eine EXE.
                              Wenn eine EXE mit einem Disassembler geladen wird - was für ein Wunder - Assembler-Code dargestellt.

                              ich hatte die Disskusion hier schon mal, und bin nicht bereit sie nochmal zu führen.
                              Deshalb beende ich hiermit auch dieses.

                              mfG Gü
                              Zuletzt editiert von gfoidl; 15.11.2008, 12:06.
                              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                              Comment

                              Working...
                              X