![]() |
Programm patchen
Habe den Beitrag "Programm zum knacken" gelesen.
Da ging es darum, den Code so abzuändern, dass Abfragen einfach umgeleitet werden. Da werfen sich fragen auf. Jemand hat mir mal gesagt, ich solle mit copy und paste sehr viele If Then abfragen hintereinander einfügen. So macht das ganze sehr, sehr viel Arbeit, und irgendwann keinen Spass mehr. Aber dann hab ich mir gedacht, kann man denn diese Abfragen nicht mit einem mal überspringen ? Also ich hab folgende Frage. WAS ist alles möglich mit Assembler ? Kann man eine IF Then else Abfrage auch ganz rausnehmen, dass sie gar nicht stattfindet ? Dann hat er mir gesagt, das Case Abfragen besser als If sind, stimmt das ? Ich würde gern 5000 Mal eine IF Then Abfragen hintereinander durchführen .. aber das ganze nützt ja nix, wenn man die alle mit einem Mal überspringen kann. Kann mir jemand Tips dazu geben ? .. vielen Dank :-) |
Re: Programm patchen
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Programm patchen
> Wenn jemand dein Programm knacken will und sehr verbissen ist, dann
> schafft er das auch. hmm .. also ich bin bisher davon ausgegangen, wenn ich nicht gerade eine offensichtliche Warnmeldung ausgebe wie: 'Hier gehts nicht weiter, weil etwas falsch ist' Sondern im Code ganz still etwas klamm heimlich änder, (irgendwelche Zeiger verbiegen, Objecte freigeben) .. so dass das Programm irgendwann abstürzt, dann bin ich auf der sicheren Seite. dazu nutze ich BUGs meiner Software aus der Vergangenheit. Wenn also ich im Quelltext meinen Fehler kaum gefunden habe, gehe ich davon aus, dass jemand in Assembler dies auch nicht finden wird. vor allen Dingen, weil er das Programm nicht geschrieben hat. > Da reicht es wenn man 5 Bytes durch ein $e9 xx xx xx xx (JMP > Distance) ersetzt. Also bedeutet das, dass in diesen Blöcken noch wichtiger code vorhanden sein muss. Konkrete Frage jbg: Wir würdest Du Deine Software sicher machen ? Bin eher auf Ideen suche .. Es soll nicht der perfekte schutz sein. Es soll nur unheimlich viel Arbeit machen, so dass es sich nicht lohnt. Und es soll nur einer von 1000 hinbekommen ... Es sind eher die vielen kleinen EINFACHEN Dinge, die mich interessieren, nicht irgendeine Mammut Verschlüßelung besten Dank :-) |
Re: Programm patchen
Guten Tag,
Zitat:
If Serial = 12345 then Showmessage(Erfolgreich registriert) ... oder wie ?? Wenn das dein Weg sein soll, dann ist das kein guter Schutz. Dann vergewaltige ich mein Debugger für 2 min und bin fertig. Wenn du nicht willst das sofort jemand dein Prog patcht, nimm einen guten Protector wie AsProtect. Dank RSA-1024 kannst du wichtige Teile deines Programms verschlüsseln, z.B. die Funktion "Speichern". Diese würde somit nur bei einer gültigen Serial richtig entschlüsselt. In dem Fall hilft auch Patchen nichts: kein Speichern ohne richtige Serial! Leider gibt es auch zu diesem Protector sogenannte Unpacker. Du könntest natürlich noch deine File mit einem Hash versehen lassen und beim Start prüfen ob der sich verändert hat. Wenn das der Fall sein sollte ---> BEENDEN. Dann denkst du dir noch einen schönen Serialalgo aus. Packst noch ein bissl Blowfish rein und schon hättest du vorerst ein gut geschütztes Programm. Mit freundlichen Gruß LB |
Re: Programm patchen
Zitat:
Hallo Lillebrohr, wie funktioniert das mit Asprotect genau ? Wird die Exe nach der Compilierung verschlüsselt (einzelne Funktionen davon) oder schon davor, während der Laufzeit ? |
Re: Programm patchen
Guten Tag,
Saug dir mal den ![]() Hier mal die Funktionsweise von AsProtect: What is ASProtect? ASProtect is the system of software protection of applications, designed for quick implementation of application protection functions, especially targeted for software developers. ASProtect is designed for such specific tasks as working with registration keys and creation of evaluation and trial application versions. ASProtect Features - compression of the application - encryption of the application - counteraction to dumping application memory with the tool like ProcDump. - application integrity check - counteraction to debuggers and disassemblers - counteraction to memory patching - API for interaction between application and protection routines - creation and verification of registration keys using public keys encryption algorithms - keeping of the database and checkup of "stolen" (illegal) registration keys - possibility to create evaluation (trial) versions, that limit - application functions based on evaluation time and the number of runs left - expose nag-screens - generating of registration keys, based on the specific computer system. Tja klingt doch nicht übel oder ?? Und hier der dazugehörige Unpacker. :( ![]() Mit freundlichen Gruß LB |
Re: Programm patchen
Hallo ...
noch zwei Fragen. eine gepackte Exe .. wird ja in den Speicher entpackt. Liegt sie dann dort in derselben Form vor, wie vor dem packen auf der Festplatte ? bzw. Beim normalen Laden einer ungepackten Exe, wird da die Exe Datei eins zu eins in den Ram kopiert ? beim suchen stößt man auf manch eigenartige Seiten .. leute gibts ... da wundert man sich nur ... ![]() |
Re: Programm patchen
Guten Tag,
achja der Daemon. :lol: Zitat:
Du hast den Packer UPX verwendet, was ei sehr einfacher ist. Dann mußt ab den OEP deiner EXE den Mist auf die Platte dumpen. Also den Original Part. Da aber der gedumpte Mist noch den alten EP hat mußt du den noch angleichen mit dem OEP. Wie du den rausbekommst kann ich dir später noch erklären. Tja und der Dumping Mist auf deiner Platte ist das selbe wie die OriginalExe die noch nicht gepackt war. Ist halt wie vorher, wenn du das meinst. Zitat:
MfG LB |
Re: Programm patchen
Zitat:
ich will folgendes tun, geht das ? Kann ich die Exe aus dem Hauptspeicher heraus in ein TMemorystream laden ? (um dann weiterführend einen crc Check dieser Exe machen ? ) geht sowas ? beziehungsweise kann ich byte für byte auf die Exe (entpackt) im Ram zugreifen ? |
Re: Programm patchen
Guten Tag,
Zitat:
Zitat:
Du machst ein Programm. So wenn du das Programm startest soll das Programm dein eigenes Programm aus dem Speicher dumpen und in einen Stream laden. Dann willst du den CRC daraus bilden und mit einem feststehenden Wert vergleichen. Richtig ??? Wenn der falsch ist, Pufff ... FEHLER. Ok ? Ist ganz schön aufwendig. Würd ich nicht so machen. Wenn du deine EXe aus dem Speicher dumpst dann hast du nichts anderes als wenn du deinen HexEditor öffnest und deine Original-Exe dort reinlädst. Am besten du lässt das mit dem CRC, benutz einen guten Packer und das wars. Was du vielleicht noch machen kannst ist folgendes: Du bildest aus deiner fertigen Exe den Hash. Den schreibst du dir auf. Dann machst du bei Form.Create eine Procedure die die Größe deiner Datei bestimmt. Aus der Größe bildest du den Hash und vergleichst ihn dann mit den den du aufgeschrieben hast. Wenn das falsch sein sollte ... PENG !! MfG LB |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz