Zum Inhalt springen

ToolsDevler

Mitglieder
  • Gesamte Inhalte

    46
  • Benutzer seit

  • Letzter Besuch

Beiträge von ToolsDevler

  1. Das möchtest Du genau erreichen?

    Dass alleine schon der Versuch, irwie in Programmabläufe reinzuspickeln, verhindert wird... aber ich glaube, des kann man nich wirklich durchsetzen.

    Es sollte aber auch klar sein, dass bei einigen Vorgehensweisen möglicherweise das Risiko eines Support-Alptraums besteht, wenn die Vorgehensweise z.B. von Viren-Scannern irgendwann in der Zukunft als "verdächtig" eingestuft wird.

    Hmm...Was Gateway_man in Beitrag #35 geschrieben hat, handelt von einer Firewall.

    Was die Anti-Cheat Programme betreffen... OK.. da kanns durchaus sein, ich weiß aber nicht, ob man irwelche "verdächtigen" Funktionen benutzen muss, um zu prüfen, ob des Programm debuggt wird.

    Aber dazu fehlt mir ein wenig des Hintergrundwissen.

    Den Aufbau von ein paar Kommunikationsprotokollen (darum ging es Dir doch?) muss man meiner Meinung nach nicht wirklich verstecken.

    Ja ok, dass mit den Kommunikationsprotokollen is zwar nich schön, aber im gegensatz zum Programm selber eher nebensächlich.

    Es ging aber auch darum (was den Debugger betrifft), dass Maschinen- oder MSIL-code nur sehr schwer eingesehen werden kann.

    Aber irwie endet des immer wieder in irgend nem Teufelskreis oder ner Sackgasse. :(

    Grüße

    ToolsDevler

  2. Es gibt da jede Menge mehr oder wenige dreckige Möglichkeiten. Schau dir mal an, was aktuelle Anti-Cheat-Programme für Spiele so alles tun. Die verhindern sogar, dass du einen Debugger überhaupt startest.

    Diese Aussage hat mich schon die ganze Zeit verfolgt^^... Kennt sich jemand damit aus? Weiß jemand wie man sowas erreichen kann?

    Immerhin is des schonma besser als garnix.

    Grüße

    ToolsDevler

    EDIT: Auch das, was Gateway_man in Beitrag #35 geschrieben hat.

  3. Ui.. hab mir die Frage grad nochmal durchgelesen und gemerkt, dass ich n bisschen was anderes verstanden habe...:D sry.

    Wenn du den Code postest, wäre es einfacher performancetechnische Probleme zu finden.

    Grüße

    ToolsDevler

  4. Ich glaube da liegt noch ein Missverständnis vor. Für viele der hier angesprochenen "Probleme" muss man die Anwendung nichtmal dekompilieren sondern einfach nur debuggen und schauen was im Speicher steht. Dann hat man das Passwort

    Wenn man auf dem lokalen PC ein Passwort aus dem Speicher lesen will, muss man zuvor doch erst eins eingeben? Von dem her braucht man sich diesbezüglich keine Gedanken machen (natürlich sollte man so oder so (egal in welcher Form) lokal keine Passwörter im klartext zwischenspeichern). Oder seh ich das falsch?

    ...oder die Datenstruktur auch schnell raus.

    Dann müsste es ja eig auch Decompiler oder ähnliches (zumindest für die Datenstruktur) für normale native .exe geben...oder?

    Edit: Boah... 2 Beiträge während ich meinen geschrieben hab^^

  5. Also das mit dem Obfuscator hab ich mir mal angeschaut.... Naja...

    Bei microsoft gibts hier was dazu zu lesen (Decompiler und Obfuscator). Aber besonders der folgende Ausschnitt finde ich Entscheidend:

    Können Obfuskatoren Software schützen?

    String Encryption wird allgemein überschätzt. Es wird nur ein geringer Schutz erreicht und dies zu Lasten einer schlechteren Performance. Daher sollten Obfuskatoren höchstens nach dem Motto „besser ein geringer Schutz als gar keiner“ eingesetzt werden. Der Salamander .NET Decompiler ist sogar in der Lage, String Encryption in einer Assembly zu erkennen, die injizierte Decrypt()-Methode zu finden, aufzurufen und an deren Stelle den entschlüsselten String in den Sourcecode einzufügen.Darüber hinaus nehmen Obfuskatoren Umbenennungen aller Symbolnamen vor. Allerdings können Verwirrungen bei der Benennung von Klassen, Methoden und Variablen mit ein wenig Zeit und Geduld durch Debugging des rekonstruierten Sourcecodes aufgelöst werden. Das Problem der derzeit am Markt angebotenen Obfuskatoren besteht darin, dass der Verschlüsselungsalgorithmus einschließlich des verwendeten Schlüssels in der „geschützten“ Assembly ausgeliefert wird und damit jedem Hacking ausgeliefert ist. Ein verschlüsselter Inhalt kann nach dem heutigem Sicherheitsverständnis jedoch nur dann wirkungsvoll vor unberechtigten Dritten bewahrt werden, wenn der Schlüssel geheim bleibt, nur dem Empfänger des Inhalts bekannt ist und losgelöst von der eigentlichen Nachricht verwaltet wird.

    Es scheint wirklich keine Möglichkeit zu geben, den Quellcode zu schützen.

    Da dies sich aber auf den IL-Code bezieht, würde mich noch interessieren, wie sicher dagegen eine native .exe ist.

    ToolsDevler

  6. Ja gut, des mit dem decompilieren is bei mir durchaus ein Thema... ich erklär mal die Lage im klartext:

    Mein Vater (ein purer Hardwareprogrammierer(-freak) der in erster Linie unter dem Z80 Forum als winelektronik zu finden ist) hat vor längerem (knapp 30 Jahre?^^) angefangen Hardware zusammen zu löten un später auch noch ICs zu programmieren. Im Laufe der Zeit hat er die so optimiert, dass er mittlerweile ein komplett eigenes System mit BIOS, Betriebssystem, Mutlitasking... usw. hat.

    Als mein Vater sich mit der Firma Zilog in Verbindung gesetzt hat, kam einiges an Euphorie auf und es wurden sofort Hard- und Softwarekits zugeschickt und sogar Entwicklungsgeld zur Verfügung gestellt.

    Meine Aufgabe war es, für das Betriebsystem (das mein Vater geschrieben hat) fürs erste ein Clientprogramm zu schreiben, womit man mit dem Teil von einem Windowsrechner übers Internet kommunizieren kann, was ich auch schon mit C# umgesetzt habe! Allerdings möchte Zilog unsere Entwicklungen mitverfolgen und ich möchte nich, dass bei einer Vorführung der Software (nich dass Zilog n Gaunerladen wäre... aber ich kenn die halt au ned!) ne Kopie unterm Ärmel verschwindet un die des Programm dann decompilieren!

    Problem kommt hinzu, dass ich angefangen habe, Übertragungsprotokolle in Form von XML-Strukturen zu entwickeln, die natürlich später in der DLL keiner sehen sollte wie des zusammengesetzt wird (Die Übertragung selber wird natürlich verschlüsselt).

    Hoffe, dass meine Situation jetz etwas klarer is

    Grüße

    ToolsDevler

  7. hmm... da ich sowie so gerade anfange C++ zu lernen, is desn guter anstoß, des gleich so zu lernen, dass ich ohne .NET Framework programmieren kann. Somit kann ich dann wenigstens relevante Module meines Programms mit ner anderen Sprache schreiben. Alternative wäre ja da noch die COM (oder?... hab mich damit noch nich außeinandergesetzt)...

    aber dann lern ich lieber gleich C++ :D

    Großes Danke an Gateway_man!

    Grüße

    ToolsDevler

  8. Hi Gateway_man,

    des is keine schlechte Idee. Allerdings macht mich dieser Ausschnitt ein wenig stutzig:

    As part of compiling MSIL to native code, code must pass a verification process unless an administrator has established a security policy that allows code to bypass verification. Verification examines MSIL and metadata to find out whether the code is type safe, which means that it only accesses the memory locations it is authorized to access. Type safety helps isolate objects from each other and therefore helps protect them from inadvertent or malicious corruption. It also provides assurance that security restrictions on code can be reliably enforced.

    Ich mein...des Risiko hab ich ja dann auch, wenn ich mit C++ ne exe schreibe oder?...Was ich mir allerdings nich vorstellen kann, is, ab wann n Typ anfängt sich mit nem anderen Typ zu überschneiden... da fehlt mir noch des nötige Hintergrundwissen. Kann man da irwie präventiv vorgehen?

    Was den Salamander .NET Linker betrifft:

    habe dazu diesen Link gefunden Remotesoft Salamander .NET Linker and Mini-deployment Tool

    (Interessante Beispiele gibts hier: Salamander Examples)

    Gibt nur ein Problem:

    Our linker and mini-deployment tool is available at $1249 for a single developer.

    :eek

    Werd mich selber auch nochma genauer umschaun, was die Kompilierung des MSIL-Codes betrifft.

    Danke dir vielmals für deine Mühe!

    Grüße

    ToolsDevler

  9. Hi M-Krischker,

    ich würde dir im allgemeinen den Tipp geben, eine Cacheklasse anzulegen. Einfach eine Klasse mit statischen public-variablen. Diese kannst du dann aus allen Teilen deines Programms ändern und abrufen.

    Diese Klasse kannst du dann auch nach belieben ausschmücken (Getter- und Setterfunktionen, Direkte Anbindung an eine Konfigurationsdatei,...usw...)

    Hoffe ich konnte helfen

    Grüße

    ToolsDevler

  10. Hi Leute,

    ich zerbrech mir seit Tagen den Kopf zu folgendem Problem:

    Wenn ich ein Programm habe, das auf einem System installiert wird, wo keine (oder eine ältere) Version .NET Framework installiert ist, ist es mir dann erlaubt, DLLs aus .NET Framework innerhalb meines Softwarepackets mitzuliefern?

    Macht es hier einen Unterschied, ob meine Software verkauft oder kostenlos angeboten wird?

    Folgende Pro- und Kontrapunkte sind mir eingefallen:

    Kontra:

    - Der Kunde hat keine Lizensvereinbarung für .NET akzeptiert (könnte aber vllt auf deren Lizensvereinbarung verweisen?)

    - Ich würde damit die die DLLs vervielfältigen

    Pro:

    - .NET Framework ist kostenlos

    - Meine Software ist evtl auch kostenlos

    - Ich kann explizit darauf hinweißen, dass die DLLs von Microsoft sind (und eventuell auch auf deren Lizensvereinbarung verweisen?).

    Ich weise sicherheitshalber darauf hin, dass ich noch nichts in der Richtung gemacht habe, um evtl Unrechtmäßigkeiten zu vermeiden.

    Hoffe ich konnte die Frage verständlich formulieren...

    Grüße

    ToolsDelver

  11. Hi naishweb,

    bin jetz nich der crack in Treiber etc.. Aber wenn du die funktionen von Treibern nutzen willst, musst du wissen welche Methoden die entsprechende .dll hat. (Musst dein Glück mit Google versuchen)

    Dann kannst du diese über das Schlüsselwort "DllImport" aufrufen.

    (Weitere Infos dazu: Mit C# arbeiten - Verwenden von Win32 und anderen Bibliotheken).

    Wenn du allerdings einen Treiber selbst schreiben willst, musst du theoretisch nur herausfinden, über welchen Comport das Gerät kommuniziert.

    Glücklicherweise gibts in .NET eine Klasse, mit der man Comports ansprechen kann.

    (siehe hier: SerialPort-Klasse (System.IO.Ports))

    Dann musst du natürlich noch die empfangenen Daten interpretieren.

    hoffe ich konnte damit ein wenig helfen

    Grüße

    ToolsDevler

  12. Hi conny<,

    der Codeausschnitt sollte dir weiterhelfen:

    
            /// <summary>
    
            /// Hebt alle in txtHauptfeld vorkommenden Wörter die dem übergebenen Schlüsselwort übereinstimmen hervor.
    
            /// </summary>
    
            /// <param name="value">Schlüsselwort, das gesucht werden soll.</param>
    
            /// <param name="highlightColor">Farbe, mit der Suchergebnisse hervorgehoben werden sollen.</param>
    
            public void HighlightValue(String value, Color highlightColor)
    
            {   
    
                //Den Text aus der RichTextBox splitten, damit wir alle Wörter bekommen
    
                String[] wordsInHauptfeld = txtHauptfeld.Text.Split(' ');
    
    
                //Der Zähler enthält immer die aktuelle Position, damit wir uns kompliziertes zusammenrechnen von irgendwelchen Zahlenwerten sparen können.
    
                Int32 positionCounter = 0;
    
    
                //Wir iterieren durch die ganzen Wörter aus der Textbox
    
                foreach (String word in wordsInHauptfeld)
    
                {
    
                    //Wenn das Wort dem mitgegebenem Schlüsselwort gleicht, dann...
    
                    if (word.Equals(value))
    
                    {
    
                        //...markiere die Zeichen an der aktuellen Stelle
    
                        txtHauptfeld.Select(positionCounter, word.Length);
    
                        txtHauptfeld.SelectionBackColor = highlightColor;
    
    
                        //Damit der Cursor immer schön am ende der Textbox bleibt:
    
                        txtHauptfeld.Select(txtHauptfeld.Text.Length - 1, 0);
    
                    }
    
    
                    //Hier zählen wir die aktuelle Position um die Länge des aktuellen Worts auf, plus das Leerzeichen (dass beim Splitten ja wegfällt!).
    
                    positionCounter += word.Length + 1;
    
                }
    
            }

    Grüße

    ToolsDevler

    P.S.: Nicht Copy&Paste! Versuche den Code mithilfe meiner Kommentare zu verstehen und probiere es dann (ohne abzulesen!) selbst zu schreiben. Wenn du das schaffst, hats dus verstanden.

  13. Hi sunny-boy3,

    hab ma gegoogelt un bin auf diese Seite hier gestoßen:

    How to clear the cache when your application hosts a WebBrowser control in Visual C# .NET

    Hab hier die Stelle markiert, wo (denke ich) der Cache abgerufen wird (is ziemlich am Ende vom Code):

    
    ...
    
    cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial;
    
                cacheEntryInfoBuffer = Marshal.AllocHGlobal(cacheEntryInfoBufferSize);
    
                enumHandle = FindFirstUrlCacheEntry(null, cacheEntryInfoBuffer, ref cacheEntryInfoBufferSizeInitial);
    
    
                while(true)
    
                {
    
    //HIER WIRD DER CACHE ABGERUFEN
    
                internetCacheEntry = (INTERNET_CACHE_ENTRY_INFOA)Marshal.PtrToStructure(cacheEntryInfoBuffer, typeof(INTERNET_CACHE_ENTRY_INFOA));		
    
    
                    cacheEntryInfoBufferSizeInitial = cacheEntryInfoBufferSize;
    
                    returnValue = DeleteUrlCacheEntry(internetCacheEntry.lpszSourceUrlName);				
    
                    if (!returnValue)
    
    ...
    
    

    Hätte nich gedacht, dass es so aufwendig is^^

    Hoffe ich konnte helfen...

    Grüße

    ToolsDevler

  14. Hi alexC++,

    wenn ich dich richtig verstanden habe, liegt es daran, dass du die gleiche virtuelle Festplatte verwendest. Wenn du nämlich nur das Profil der virtuellen Festplatte löschst, bleibt die vhd erhalten.

    Versuch einfach mal die alte vhd zu löschen oder leg bei der Erstellung einer xp-maschine ne neue an.

    Grüße

    ToolsDevler

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...