[C/C++] Veränderung von Compilierten Code.

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Inquisito, 19. August 2008 .

Schlagworte:
  1. 19. August 2008
    Veränderung von Compilierten Code.

    Ich bin heute erstaunt worden als mir jemand zeigte wie man
    mittels Dissassambler und dem Hexeditor Programme verändern kann.

    Das ich Texte oder gar werte verändern kann ist mir als programmierer nicht neu, aber dummerweise hab ich mich kaum oder nie um disassembling gekümmert.....

    Die frage ist nun :
    Warum kann eine MZ (oder , PE) Anwendung nach einer wahlosen Manipulation der Hexwerte immer noch funktionsfähig sein?

    (PS: Die Wertänderung war 00 zu FF (Hex))

    Trainer in spielen nutzen halt das gleiche prinziep in dem sie einen wert immer wieder einfrieren oder neu setzen. Aber ich würd gern wissen warum eine wahllose veränderung in einer EXE (oder andere Executables )
    einfach so funktionieren kann.
     
  2. 19. August 2008
    AW: Veränderung von Compilierten Code.

    Wahllos schon garnicht. Das Spiel mag zwar funktionieren, aber wenn die Routine dann aufgerufen wird, die dienen korrupten Byte enthält der nicht da rein passt, dann schiesst sich das Programm ab.

    Klar, du kannst Programme per Hex-Editor/Disassembler etwas umschreiben, dafür musst du aber auch verstehen was du machst.
     
  3. 19. August 2008
    AW: Veränderung von Compilierten Code.

    bei trainern wird oft eine code injektion gemacht das heißt man sucht sich ein code cave (in hex sind das bytes wie 90 oder 00). hat man eine stelle gefunden wo genug platz ist für eigenen asm code schreibt man als erstes den original spiele code dort hin und dann seinen neuen code und einen sprung zurück zum original programm. man muss nur rausfinden von wo aus z.b. die lebensenergie abgezocken wird. mittels diversen programmen ist das kein problem. falls du hilfe brauchst bei der erstellung von trainern kann ich dir sicherlich weiterhelfen bis hin zum code shiffting. (also sma, dma, code injektion , codeshiffting)


    edit:
    die bytes 90 bedeuten nop das heißt soviel wie mache nichts
    und bei 00 ist das einfach nur ein leerer speicherbereich

    weshalb man dort immer gut programm code einspeisen kann
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.