Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kleines Übersetzungsproblem C-->Pascal (https://www.delphipraxis.net/88996-kleines-uebersetzungsproblem-c-pascal.html)

Neutral General 24. Mär 2007 11:32


Kleines Übersetzungsproblem C-->Pascal
 
Hi,

Code:
char buff1[5];
char buff2[9];
int *res;
res=buff1+12;
*res=*res+10;
Ich bekomm das auf Teufel komm raus nicht übersetzt :oops:

also normal müsste das doch so Aussehn (das oben is ne procedure):

Delphi-Quellcode:
procedure Egal;
var Buff1: Array[0..4] of Char;
    Buff2: Array[0..8] of Char;
      res: PInteger;
begin
  res := Buff1[0] + 12;
  @res := @res+10;
end;
aber das haut natürlich nicht hin....

Gruß
Neutral General

sniper_w 24. Mär 2007 11:56

Re: Kleines Übersetzungsproblem C-->Pascal
 
Delphi-Quellcode:
res^ := res^ + 10;

ste_ett 24. Mär 2007 12:06

Re: Kleines Übersetzungsproblem C-->Pascal
 
Zitat:

Zitat von sniper_w
Delphi-Quellcode:
res^ := res^ + 10;

Der * bei "*res" bedeutet in diesem Fall nicht, dass es ein Pointer ist, sondern, dass du das Objekt hinter dem Pointer haben willst. :)

int* i; //Pointer auf ein Integer

"*i" = Objekt auf das der Pointer zeigt. Jetzt kann man mit i arbeiten, als ob es eine normale Integer-Variable wäre.

sniper_w 24. Mär 2007 12:08

Re: Kleines Übersetzungsproblem C-->Pascal
 
Habe ich etwas falsch übersetzt?

Flocke 24. Mär 2007 12:44

Re: Kleines Übersetzungsproblem C-->Pascal
 
Delphi-Quellcode:
procedure Egal;
var
  Buff1: Array[0..4] of Char;
  Buff2: Array[0..8] of Char;
  res: PInteger;
begin
  res := PInteger(@Buff1[12]);
  res^ := res^ + 10;
end;
So sähe die komplette Pascal-Übersetzung aus.

Allerdings muss das Ganze nicht klappen (sofern es überhaupt einen Sinn hat): denn wo @Buff1[12] landet wenn das Array selbst nur 5 Zeichen lang ist, ist reiner Zufall.

@sniper_w: nein

Neutral General 24. Mär 2007 12:53

Re: Kleines Übersetzungsproblem C-->Pascal
 
Zitat:

Zitat von Flocke
Allerdings muss das Ganze nicht klappen (sofern es überhaupt einen Sinn hat): denn wo @Buff1[12] landet wenn das Array selbst nur 5 Zeichen lang ist, ist reiner Zufall.

Das muss so sein ;)
Danke für die Übersetzung :)

EDIT:

Zitat:

[Error] Project1.dpr(13): Constant expression violates subrange bounds
Gruß
Neutral General

Dax 24. Mär 2007 13:46

Re: Kleines Übersetzungsproblem C-->Pascal
 
Delphi-Quellcode:
PInteger(Integer(@buf1)+12)

Robert Marquardt 24. Mär 2007 15:13

Re: Kleines Übersetzungsproblem C-->Pascal
 
Zufall ist es nicht wo man landet, aber man landet im Gelaende, sprich im Stack. Es duerfte nicht Buff2 sein, denn der steht auf dem Stack unterhalb von Buff1.

Neutral General 24. Mär 2007 15:29

Re: Kleines Übersetzungsproblem C-->Pascal
 
Zitat:

Zitat von Robert Marquardt
Zufall ist es nicht wo man landet, aber man landet im Gelaende, sprich im Stack. Es duerfte nicht Buff2 sein, denn der steht auf dem Stack unterhalb von Buff1.

Ja genau so soll das auch sein ;)
Versuche grad hier das zu verstehen.

INFO: Das ist keine(!) Hackerseite und weder der Besitzer dieser Seite noch ich haben irgendwas "böses" vor...

Zitat:

Ich habe durch die "Hackerinfos" auf dieser Homepage einige Mails erhalten, in denen mir Leute geradezu Unterstützung zweifelhafter Aktivitäten unterstellen.
Sicherlich durch unterschiedliche Wahrnehmung der Worte "Hacker, Hacking etc.", das ist der Grund für diese Zeilen.

Ich halte nichts davon, Rechner dadurch sicher machen zu wollen, indem man die Verbreitung von Hackerwissen (klingt "Security-Infos" schöner?) behindert.
Es gibt wirklich schon genug mangelhafte Sicherheitsansätze, aber dieser schlägt wohl alle.

Wären sich die richtigen Personenkreise; insbesondere Applikationsentwickler, über elementare Hackertechniken wir buffer overflow und format-bugs seit jeher bewusst,
hätten wir heute nicht diesen Scherbenhaufen von abertausenden von Applikationen, die Sicherheitslöcher in Systeme bringen.

So gesehen kann ich einfach keinen Unterschied feststellen zwischen

* Tips zum sicheren Programmieren wie "Nimm strncpy statt strcpy"
* Hinweise für Security-Consultants wie "Im Code-Review schau nach strcpy"
* Infos, wie man seinen Rechner absichert wie "Achte bei deinen Serverdiensten auf strcpy"

und eben Hackerinfos wie "durch falschen Einsatz von strcpy können Sicherheitslöcher entstehen".

Die dahinter stehende Information ist immer die gleiche. Und solange es keinen Weg gibt, diese Information nur Programmierern und nicht Crackern zugänglich zu machen,
halte ich es für sinnvoll, diese Infos allen zur Verfügung zu stellen.

Es ist auch sehr zweifelhaft, dass jemand durch die hier veröffentlichten Infos fremde, gut geschützte Rechner hackt und es ohne meine Seiten nicht geschafft hätte.
Der Weg von diesen Hacker-Basics bis zu diesem Punkt ist noch sehr weit und erfordert ein Wissen und Können, gegenüber dem alles hier Veröffentlichte schlichtweg elementar ist.
Einen buffer overflow zu verstehen, braucht nicht viel. Aber einen in einem verbreiteten Programm (mit viel Code-Reviews) zu finden und auch noch einen Exploit hinzukriegen,
das ist dann gleich nochmal was ganz anderes. Solche Leute belächeln diese Seiten hier.

Sinn und Zweck dieser Pages ist, Leute zu sensibilisieren; in erster Linie Softwareentwickler.
Gruß
Neutral General

Robert Marquardt 24. Mär 2007 15:36

Re: Kleines Übersetzungsproblem C-->Pascal
 
Das ist die aktuelle "Sicherheitslogik". Schon das Erklaeren worum es geht ist verdaechtig.
Sei vorsichtig. Kurnaz hat diese Logik nach Guantanamo gebracht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz