Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert.

String löschen, nicht ersetzen

Diskussion: String löschen, nicht ersetzen im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hi, ich hätte mal eine kurze Frage und hoffe das sie hier reinpasst. :) In einem Programm steht vor ...

Antwort
Alt 29.09.08, 21:40   #1 (permalink)
 
Registriert seit: 12.04.06
blobbo Leistung: Facit NTK
Likes: 0
Standard String löschen, nicht ersetzen

Anzeige

Hi, ich hätte mal eine kurze Frage und hoffe das sie hier reinpasst. :)
In einem Programm steht vor einem beliebigen String z.B. immer "Wort: ". Wenn ich das nun ändern will, muss ich ja eigentlich nur im Code nach "Wort: " suchen und das ersetzen. Dabei muss doch soweit ich weiss aber immer die Länge gleich bleiben.
Wenn ich das nun einfach weghaben will ist es ja mit Leerzeichen nicht getan, weil dann ja der restliche Text zu weit rechts steht.
Kann ich da dann einfach 00 oder ein Nullbyte oder wie das heisst einfügen?
Ich hab gerade leider nicht die Möglichkeit es zu testen daher hoffe ich jemand kann mir das kurz beantworten. :)

blobbo ist offline   Mit Zitat antworten
Alt 29.09.08, 21:45   #2 (permalink)
Senior Member
 
Benutzerbild von odigo
 
Registriert seit: 25.12.04
odigo Leistung: 8086odigo Leistung: 8086
odigo eine Nachricht über ICQ schicken
Likes: 54
Standard

Von welcher Programmiersprache sprichst du? C? Ohne diese Information könnst schwierig werden die Frage zu beantworten.
odigo ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 29.09.08, 22:43   #3 (permalink)
Themenstarter
 
Registriert seit: 12.04.06
blobbo Leistung: Facit NTK
Likes: 0
Standard

Achso sorry, ja C oder halt eine normale exe ohne java oder so..
blobbo ist offline   Mit Zitat antworten
Alt 29.09.08, 22:54   #4 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Ist 'Wort' an sich nullterminiert oder folgen darauf andere Wörter? Wo wie ich es verstanden habe: 'Wort' ist ein Anhängsel und wird zu einem beliebigen String per concat (bzw Sprachspezifische Stringconcatfunktion) hinzugefügt. Nun kommt es darauf an, wie die Funktion arbeitet - kann nämlich sein, dass sie den Dienst bei 0-String verweigert .
Daher bleibt eher nur ausprobieren - entweder durch Nullbyte ersetzen (reicht aus, wenn man W ersetzt - also das erste Zeichen) oder eben statt W ein Leerzeichen und dann Nullbyte.

Zitat:
Achso sorry, ja C oder halt eine normale exe
pascal/delphi hat z.B noch vor dem String eine Längenangabe, die angepasst werden muss
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 30.09.08, 00:42   #5 (permalink)
Themenstarter
 
Registriert seit: 12.04.06
blobbo Leistung: Facit NTK
Likes: 0
Standard

Ja genau danke, so meinte ich es..
Ich hab es jetzt mal getestet und in dem Beispiel hat es tatsächlich einfach mit 00 geklappt
Code:
#include <iostream.h>

void main(){
char asd[20];
cin >> asd;
cout << "\nWort: " << asd << "\n";
}
Was mich dann aber gewundert hat war, dass ich im Editor hinter dem Leerzeichen in "Wort: " noch 5 Zeichen reinschreiben konnte, die dann korrekt angezeigt wurden. Mit einem mehr standen dann die Zeichen noch zusätzlich hinter der Eingabe.
Was hat es denn damit auf sich?

[Edit]
Ich hab mal ein Screenshot gemacht... irgendwie scheint das ja irgendwo reinzugeraten. Aber wo? Und woher weiß man sowas?
Achso ich benutze übrigens Visual C++
Angehängte Grafiken
Dateityp: jpg test.jpg (41,1 KB, 236x aufgerufen)
blobbo ist offline   Mit Zitat antworten
Alt 30.09.08, 01:21   #6 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Zitat:
Ich hab mal ein Screenshot gemacht... irgendwie scheint das ja irgendwo reinzugeraten. Aber wo? Und woher weiß man sowas?
(kann ich nur vermuten, da kein MS compiler zur Hand).
Vor der Modifizierung stand hinter 'Wort: ' wohl ein 00 und 0A 00 (weitere 00)
weitere 00 sind entweder irgendwelche (globalen) Variablen oder einfach Bytepadding (Auffüllbytes für schöneres Alignment )

Jedenfalls wird ja im Originalcode zuerst was eingelesen und der Inhalt des Buffers mit "\n" (also der überschriebenen 0A ) concateniert. Dabei weiß die Concat-Funktion nicht, dass es sich um "\n" handelt - es werden nur Speicheicherpositionen der zu verbindenden Strings übergeben. Wenn statt 0A etwas anderes an dieser Stelle steht, wird es auch stattdessen genutzt. Dass der erste String und der zweite sich speichermäßig überschneiden stellt kein Problem dar, weil die Funktion eher nur nach 00 Byte ausschau hält und stumpf zuerst Bytes von der zuerst angegebenen Position bis 00 und dann von der zweiten Position bis 00 in einen neuen Buffer kopiert.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 30.09.08, 11:31   #7 (permalink)
Themenstarter
 
Registriert seit: 12.04.06
blobbo Leistung: Facit NTK
Likes: 0
Standard

Danke erstmal
Also wenn ich jetzt "Wort: " durch sagen wir mal "WortWortWort: " ersetzen will muss ich herausfinden oder wissen an welcher Stelle die Länge des Strings "Wort: " steht und diese anpassen?
Und dann warscheinlich sicherheitshalber auch gleich auf ein 2^n angepasst oder?
blobbo ist offline   Mit Zitat antworten
Alt 30.09.08, 11:37   #8 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Zitat:
Also wenn ich jetzt "Wort: " durch sagen wir mal "WortWortWort: " ersetzen will muss ich herausfinden oder wissen an welcher Stelle die Länge des Strings "Wort: " steht und diese anpassen?
Nee, nur bei Pascal/Delphi - bei C Konsorten ist der String nur 00 terminiert. Der Post bezog sich darauf, warum die Eingabe dann in den Wort-String "eingefügt" wird
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 30.09.08, 11:59   #9 (permalink)
Themenstarter
 
Registriert seit: 12.04.06
blobbo Leistung: Facit NTK
Likes: 0
Standard

Achso ok
blobbo ist offline   Mit Zitat antworten
Alt 03.10.08, 12:34   #10 (permalink)
 
Registriert seit: 28.05.08
the_uxreal Leistung: Facit NTK
Likes: 0
Standard

Hallo blobbo,

so ganz habe ich nicht verstanden was du vor hast. Möchtest du einen String aus deinem Programm zur Laufzeit löschen, einen Hex-Wert löschen oder den Quellcode ändern?

Zudem denke ich, dass du hier falsch bist. Wäre es nicht sinnvoller den Thread hierhin zu verschieben: http://www.hackerboard.de/board.php?boardid=19 ?

the_uxreal
the_uxreal ist offline   Mit Zitat antworten
Alt 10.10.08, 14:55   #11 (permalink)
 
Registriert seit: 27.02.07
mucki Leistung: Z3
Likes: 2
Standard

unter dos wird ein string mit $ beendet
mucki ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Hacks & Crackmes » String löschen, nicht ersetzen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
kann ordner nicht löschen GreenGecko Die Problemzone 3 21.02.07 15:21
kann nicht löschen Easyrider Linux/UNIX 6 10.11.04 09:08
Kann .avi nicht löschen -FL<>me- Die Problemzone 4 17.04.04 10:21
VB - Registry String löschen Darkmind Code Kitchen 0 06.11.03 18:48


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61