Ergebnis 1 bis 20 von 24

Thema: Hilfe: Entschlüsselung von binären dateien.*edit*

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Es ist nicht illegal.
    Solange man erwähnt wem diese Sprites gehöhren kann man sie verwenden und in Sprite seiten hochladen:
    http://www.spriters-resource.com/

    Ich weiß dass rippen illegal klingt, ist aber gemeind,die Ressourcen rauszuhohlen und sie in den eigenen Spielen zu verwerten.
    Höhr mal,Leute rippen die ganze zeit tiles und Sprites aus Snes spielen(mario,Terranigma,welche auch von Lachsen gerippt und editiert wurden) und GBA spielen.
    Und die wurden net verhaftet =P.Ich glaube dann würde nur noch die hälfte aller RPG entwickler noch im forum sein...Sonst würde ich auch net so einen thread öffnen.

    Und wieso ist Credits zu wenig für den Aufwand?
    Soll ich etwa die hilfe bezahlen?

  2. #2
    wenn ichs dir doch sage.
    das rippen von resourcen aus spielen, auch wenn du die firma nennst, ist illegal.
    solange sie dir keine explizite erlaubnis gegeben haben, ihr Zeug zu benutzen, darfst du es auch nicht.
    Das du deswegen nicht unbedingt verhafet wirst ist etwas anderes. Ändert aber nichts daran, das es verboten ist.
    s auch dieser thread:
    http://www.multimediaxis.de/showpost...86&postcount=7

    Zitat Zitat
    Und wieso ist Credits zu wenig für den Aufwand?
    Soll ich etwa die hilfe bezahlen?
    So wie ich das verstehe, soll man dir ein programm schreiben, welches das binärformat des Playstation Roms (welches übrigens auch illegal ist... ) entschlüsselt (was auch illegal ist... ²).
    Und das ist ein Aufwand ohne ende.

    Selbst wenn es irgend eine andere Methode gibt (und mir fällt grad keine ein, außer screenshots machen... :P) ist es in jedem falle sehr aufwändig, so das es für lau ganz sicher niemand machen wird. da sind credits in einem spiel, das warschenlich niemal fertig werden wird (nicht gegen dich persönlich gerichtet, das ist nur etwas, das ich in jahrelanger erfahrung mit dem maker gelernt habe...) auch keine angemessene entlohnung.

    Geändert von FF (20.08.2007 um 18:29 Uhr)

  3. #3
    Zitat Zitat von Tantrix_187 Beitrag anzeigen
    Und die wurden net verhaftet =P.Ich glaube dann würde nur noch die hälfte aller RPG entwickler noch im forum sein...Sonst würde ich auch net so einen thread öffnen.
    Wenn jeder für das belangt werden würde, was er mal getan hat oder auch regelmäßig tut, würden in der Tat weniger Leute in diesem Forum sein. Nur weil es die Hersteller nicht interessiert (*), heißt das nicht, dass es rechtlich in Ordnung ist.

    Zitat Zitat von Tantrix_187 Beitrag anzeigen
    Und wieso ist Credits zu wenig für den Aufwand?
    Soll ich etwa die hilfe bezahlen?
    Guter Ansatz, warum nicht?


    (* Zum Teil)

  4. #4
    Rippen ist und bleibt illegal, da es einen Verstoss gegen das Urheberrecht darstellt (UrhG). Das Verstoesse gegen das Urheberrecht wahrscheinlich die haeufigsten Kriminaldelikte sind, und selbige in den meisten Faellen nicht verfolgt werden, tut dem Fakt der Illegalitaet keinen Abspruch, sondern zeigt nur, dass das UrhG einer Revision fuer unsere modernen Zeiten bedarf. Dennoch ist die Verwendung von ganzen Werken dritter oder deren Teilen ohne die schriftliche Erlaubnis des Urheberrechtsinhabers bis 75 Jahre nach dem Tode des Schoepfers nicht gestattet. Und ich bezweifle, dass es SNES oder PSX Spiele gibt, die aelter als 75 Jahren sind.

    Aber abgesehen von dem rechtlichen Problem (da bei privater und nichtkomerzieller Nutzung nur in seltenen Faellen eine strafrechtliche Verfolgung erfolgt) stellt die Entschluesselung eine binaeren Formates insbesondere ohne explizite Kenntnisse des Inhaltsformates ein extrem schwieriges unterfangen dar. Mit C/C++ wird programmiert. Das ist kein fertiges Programm, dem man einfach sagt, es soll etwas extrahieren. Fuer die Entschluesselung des entsprechenden Formates braucht man abhaengig von der Komplexitaet der in der Binaerdatei verwendeten Datenstrukturen wahrscheinlich 10 bis 100 Arbeitsstunden, wenn nicht sogar erheblich mehr. Wenn das Format entschluesselt ist, ist das Schreiben des eigentlichen Programms in C/C++ meist nicht mehr das grosse Problem und innerhalb von ca. 10 Stunden erledigt. In Anbetracht dieses Zeit- und Arbeitsaufwandes ist eine Hilfe fuer ein paar Credits nur dann wahrscheinlich, wenn dich die betreffende Person sehr gut leiden lann. Ansonsten ist mit einem fairen Stundenlohn von ca. 10,00 Euro netto zu rechnen, sofern nicht die betreffende Person am Thema interessiert ist und dir einen Freundschaftspreis anbietet.

    Wie du siehst kommst du mit einer "Hey, ich hab ein Problem, also loest mir das mal, damit ich keine Arbeit habe" Einstellung hier nicht sonderlich weit. Du kannst allerdings alle obigen Probleme umgehen, indem du deine Frage dahingehend abaenderst, dass du Fragst, wie man mit C/C++ binaere Daten auslesen kann. Hierzu wirst du mit Sicherheit kompetente und kostenlose Hilfe erhalten. Wenn du dich dann auch noch mit dem Aufbau von gaengigen Datenformaten zur PSX per Google beschaeftigst, solltest du in weniger als einer Woche bis einem Monat in der Lage sein, selbstaendig mit deinen Untersuchungen bzw. Extraktionen zu beginnen. Auf diese Weise umgehst du das Problem der Anstiftung zu einer Straftat als auch die hohen Kosten, die entstehen, wenn du jemanden ein auf dein Problem zugeschittenes Programm entwickeln laesst.

    Ich hoffe, geholfen zu haben.

  5. #5
    Oh...ich verstehe jetzt.
    Danke dass dus mir gesagt...
    wenn du mir helfen würdest wäre es genial und richtig toll.

    Ich bedanke mich auch dass du mich weiter unterstützen wirst^^.

    [Edit=Luki, Reason=Konsistenz]

    Danke für die Aufklärung,ich habe das wirklich nicht gewusst.
    Ich werde selber mich dranmachen die Binären dateien zu entschlüsseln.

    Also ... Wie kann ich mit C/C++ Binärdateien auslesen ?
    Deswegen brauche ich eure hilfe,tuts,emotionale unterstützung(usw.) das zu meistern.
    Keine bange ich habe Bloodshed Dev-C++ ,deswegen ist das erste problem gemeistert^^.

    [/Edit Luki]

    Geändert von Tantrix_187 (20.08.2007 um 19:05 Uhr)

  6. #6
    Gut, Da du ja nicht an den Feinheiten von C/C++ interessiert bist, gebe ich dir schon mal ein kleines Rahmenprogramm vor, und erklaehre, was es macht.

    Wenn du selber Code posten willst, dann verwende bitte das [ Code ]-Tag

    Code:
    #include <stdio.h>
    // Damit bindet man die Bibliothek fuer die Ein und Ausgaberoutinen ein.
    
    int main(int argc, char** argv) {
    // Das ist der Funktionskopf des Hauptprogramms, sowas hat JEDES C/C++ Programm
      FILE *input = fopen("Dateiname","r");
    // Dies oeffnet die Datei "Dateiname" zum Lesen. Ueber die variable input kannst du nun auf die Datei zugreifen.
    
      if ( !input) {
        printf("Konnte die Datei nicht oeffnen.\n");
        return 1;
      }
    // Wenn die Datei nicht geoeffnet werden konnte, gib fehler aus und beende.
    
      char data;
    // Eine ein byte grosse Variable mit Namen data. 
    
      while ( ! feof(input) ) {
    // Solange das Dateiende von input nicht erreicht ist, tue alles zwischen { und }
        fread(&data, sizeof(data), 1, input);
    // Lies ein Byte aus der Datei ein. 
    
    // Hier kommt dann dein Code rein, was du mit den binaerdaten machen willst. 
        printf("%02x ",data);
    // Als Beispiel lassen wir einfach mal den Hexadezimalcode des zeichens ausgeben
      }
    // Die Schleife ist beendet.
      printf("\n");
    // Springe auf die naechste Zeile
      fclose(input);
    // Schliesse die Datei
      return 0;
    // Beende das Programm erfolgreich.
    }
    Natuerlich musst du Dateiname durch den Dateinamen ersetzen. Und das Programm macht nichts ausser in Hex den Inhalt ausgeben.

  7. #7
    Okay,have es mal ausprobiert:
    Code:
    #include <stdio.h>
    int main(int argc, char** argv) {
        FILE *input = fopen(DATAS,r);
          if ( !input) {
        printf(Konnte die Datei nicht oeffnen.\n);
        return 1;
      }
        char data;
          while ( ! feof(input) ) {
              fread(&data, sizeof(data), 1, input);
                  printf(%02x ,data);
                    }
                      printf(\n);
                        fclose(input);
                          return 0;
    Ich hoffe die leersetllen machen keinen unterschied^^''

  8. #8
    Du haettest problemlos die // Zeilen drin stehen lassen koennen.
    // leitet eine Kommentarzeile ein.

    Ausserdem ist dein Einrueckschema sehr unbrauchbar, da man nicht ersehen kann, welche Programmteile auf einer Ausfuehrungsebene liegen.

  9. #9
    Dann Nochmal von neuem:
    Code:
    #include <stdio.h>
    // Damit bindet man die Bibliothek fuer die Ein und Ausgaberoutinen ein.
    
    int main(int argc, char** argv) {
    // Das ist der Funktionskopf des Hauptprogramms, sowas hat JEDES C/C++ Programm
      FILE *input = fopen("DATAS","r");
    // Dies oeffnet die Datei "Dateiname" zum Lesen. Ueber die variable input kannst du nun auf die Datei zugreifen.
    
      if ( !input) {
        printf("Konnte die Datei nicht oeffnen.\n");
        return 1;
      }
    // Wenn die Datei nicht geoeffnet werden konnte, gib fehler aus und beende.
    
      char data;
    // Eine ein byte grosse Variable mit Namen data. 
    
      while ( ! feof(input) ) {
    // Solange das Dateiende von input nicht erreicht ist, tue alles zwischen { und }
        fread(&data, sizeof(data), 1, input);
    // Lies ein Byte aus der Datei ein. 
    
    // Hier kommt dann dein Code rein, was du mit den binaerdaten machen willst. 
        printf("%02x ",data);
    // Als Beispiel lassen wir einfach mal den Hexadezimalcode des zeichens ausgeben
      }
    // Die Schleife ist beendet.
      printf("\n");
    // Springe auf die naechste Zeile
      fclose(input);
    // Schliesse die Datei
      return 0;
    // Beende das Programm erfolgreich.
    }
    Okay,soweit habe ich alles verstanden.( )
    Was ist der nächste schritt?

  10. #10
    Zitat Zitat
    Wenn du dich dann auch noch mit dem Aufbau von gaengigen Datenformaten zur PSX per Google beschaeftigst, solltest du...
    und dann kommen die erwähnten

    Zitat Zitat
    10 bis 100 Arbeitsstunden, wenn nicht sogar erheblich mehr
    ins spiel.

  11. #11
    Hast du das Programm compilieren koennen und hast du es einmal mit einer (kleinen) Datei ausprobiert ?

    Gegebenenfalls musst du unter windows noch ein
    system("pause");
    vor dem return 0; einfuegen, damit das Fenster nicht gleich geschlossen wird.

  12. #12
    Also ich habs jetzt comilierd.
    Ich habe auch die Exe datei dazu gefunden im meinem C++ ordner.
    Aber alles was es macht ist nur kurz öffnen und wieder schließen...
    ich habe dann vor dem return 0; noch system(''pause'');

    eingefügt sodass es dann so aussieht:
    Code:
    system("pause");
    // damit das Fenster nicht gleich geschlossen wird.
    return 0;
    // Beende das Programm erfolgreich.
    }
    Aber dann ist ein fehler eingetreren beim system(''pause''); :
    Zitat Zitat
    Compiler: Default compiler
    Building Makefile: "CDev-Cpp\Makefile.win"
    Executing make...
    make.exe -f "CDev-Cpp\Makefile.win" all
    g++.exe -c Alundra.cpp -o Alundra.o -I"C:/Dev-Cpp/include/c++/3.3.1" -I"C:/Dev-Cpp/include/c++/3.3.1/mingw32" -I"C:/Dev-Cpp/include/c++/3.3.1/backward" -I"C:/Dev-Cpp/lib/gcc-lib/mingw32/3.3.1/include" -I"C:/Dev-Cpp/include"

    Alundra.cpp: In function `int main(int, char**)':
    Alundra.cpp:32: error: `system' undeclared (first use this function)
    Alundra.cpp:32: error: (Each undeclared identifier is reported only once for
    each function it appears in.)

    make.exe: *** [Alundra.o] Error 1

    Execution terminated

  13. #13
    Oh mein Fehler ...

    Fuege hinter dem #include <stdio.h> noch die Zeile
    #include <stdlib.h>
    ein.

    Die Funktion system ist naemlich in der Bibliothek stdlib.h definiert.

  14. #14
    Fehler korrigiert..
    aber dennoch bleibt das .exe fenster nur ganz ganz kurz offen...

    viellciht fehlt da was:
    Code:
    #include <stdio.h>
    // Damit bindet man die Bibliothek fuer die Ein und Ausgaberoutinen ein.
    #include <stdlib.h>
    //Die Funktion system ist naemlich in der Bibliothek stdlib.h definiert.
    int main(int argc, char** argv) {
    // Das ist der Funktionskopf des Hauptprogramms, sowas hat JEDES C/C++ Programm
      FILE *input = fopen("DATAS","r");
    // Dies oeffnet die Datei "Dateiname" zum Lesen. Ueber die variable input kannst du nun auf die Datei zugreifen.
    
      if ( !input) {
        printf("Konnte die Datei nicht oeffnen.\n");
        return 1;
      }
    // Wenn die Datei nicht geoeffnet werden konnte, gib fehler aus und beende.
    
      char data;
    // Eine ein byte grosse Variable mit Namen data. 
    
      while ( ! feof(input) ) {
    // Solange das Dateiende von input nicht erreicht ist, tue alles zwischen { und }
        fread(&data, sizeof(data), 1, input);
    // Lies ein Byte aus der Datei ein. 
    
    // Hier kommt dann dein Code rein, was du mit den binaerdaten machen willst. 
        printf("%02x ",data);
    // Als Beispiel lassen wir einfach mal den Hexadezimalcode des zeichens ausgeben
      }
    // Die Schleife ist beendet.
      printf("\n");
    // Springe auf die naechste Zeile
      fclose(input);
    // Schliesse die Datei
    system("pause");
    // vor dem return 0; einfuegen, damit das Fenster nicht gleich geschlossen wird.
    return 0;
    // Beende das Programm erfolgreich.
    }

  15. #15
    Du hast als Datei "DATAS" angegeben. Allerdings heisst die Datei datas.bin
    Und das funktioniert auch nur, wenn deine Exe im selben verzeichnis ist, wie die zu oeffende Datei.

    Um zu sehen, dass ich recht habe, fuege vor das exit 1; auch mal ein system("pause"); ein.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •