![]() |
Sinnlose Zeichenketten etc. im Quellcode erlaubt
Hallo, Community!
Mir ist schon vor einigen Jahren aufgefallen, dass soetwas kompilierbar ist:
Delphi-Quellcode:
Das interessante ist, dass der sinnlose Text sogar hinterher in der EXE auftaucht (lässt sich mit einem Hexeditor finden). Das ist ja nun weder etwas nerviges, noch etwas, das einen Fehler produziert. Allerdings würde mich mal interessieren, wieso das eine gültige Syntax zu sein scheint. Ist das ein Bug? Oder ein Feature? Auf jeden Fall ging das bei Delphi 3 noch nicht. Und dass es keinen fehler gibt, deutet ja darauf hin, dass es kein Bug sein kann. Nur, was bringt es dann?
begin
showmessage('sinnvoller text'); 'sinnloser text'; 123; // sinnlose zahl end; Das einzige, was mir einfiele, wäre, Zeichenketten zur Verwirrung von Crackern einzubauen. Davon hab ich mal irgendwo was gelesen, z.B. baut man an einer willkürlichen Stelle im Code 'Unregistriert' ein, wenn das z.B. bei einem unregistrierten Programm in der Titelzeile steht. Die wirkliche Meldung in der Titelzeile baut man dann aber "soft" zusammen, also mit chr(...)+chr(...) etc. Der Hacker denkt dann, er hätte die Stelle gefunden, in der die Registrierung überprüft wird. Allerdings müsste vor dem String ja ein Sprungbefehl oder ähnliches stehen, damit es zu keinem Fehler kommt, was aber eigentlich auffallen müsste. Kann mir vielleicht jemand sagen, was es damit auf sich hat? |
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Delphi hat vermutlich eine Syntax/Semantik, die alleinstehende Werte erlaubt. Parameterlose Funktionen, deren Wert nicht benutzt wird, fallen unter eine solche Semantik. Eventuell wurde das mit der Zeit auch auf Primitive ausgedehnt oder einfach direkt in die Syntax aufgenommen..?
|
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Ich vermute, diese sinnlosen Werte werden einfach als Konstanten angesehen, mit denen nicht weiter geschieht.
|
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Im Anhang sind die Beschwerden von Delphi 5 zu dem Code... /EDIT: Delphi 7 beschwert sich mit den gleichen Meldungen im gleichen Stil... |
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Vor einigen Jahren war glaube ich mit Delphi 2005.
|
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Liste der Anhänge anzeigen (Anzahl: 1)
Tja, unter D2006, kommt folgende Meldung...
Wie erwartet... GG |
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Fehler:
Delphi-Quellcode:
Fehler:
begin
writeln('sinnvoller text'); 'sinnloser text'; <-- 123; end.
Delphi-Quellcode:
Kein Fehler:
begin
'sinnloser text'; 123; <-- end.
Delphi-Quellcode:
Merkwürdig :gruebel:
begin
'sinnloser text'; end. Und ich meine (kanns jetzt nicht beschwören), unter Delphi2005 wären die ersten beides auch noch gegangen. |
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Was anderes witziges. Da ich kein Delphi 6 habe, kann ich nicht sagen, wie sich dies Delphi dazwischen verhält.
Folgende Procedure:
Delphi-Quellcode:
Aufruf in Delphi 5, welcher compiliert wird und keine Warnung, Hinweis etc bringt:
procedure Foo(const ABar1: integer = -1; const ABar2: integer = -1; const ABar3: integer = -1; const ABar4: integer = -1);
begin ; end;
Delphi-Quellcode:
(Ja, das Komma am Ende ist der Witz und richtig so)
Foo(1,2,);
Aber in Delphi 7 meckert er dies dann an, richtigerweise wie man bemerken muss... |
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Ich glaube, das wurde sogar schonmal als Bugreport gepostet.
Der Parser hat auch noch ein paar andere Merkwürdigkeiten, die mir gelegentlich auffallen, mir aber gerade nicht einfallen... |
Re: Sinnlose Zeichenketten etc. im Quellcode erlaubt
Scheint ein Feature von Turbo-Delphi zu sein. :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 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