Autor Beitrag
spoof
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: So 10.11.13 01:11 
Ich hab eine Frage, wo man denken könnte google doch oder wie auch immer was ich auch gemacht hab aber ich versteh es einfach nicht.
Was macht dieses Tag Result? Ich hab es nun schon öfters gesehen aber versteh es nicht. Es wird niergends deklariert sondern einfach benutzt, was kann dieses Result und wo setzt man es ein?
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 10.11.13 01:44 
Result ist eine lokale Variable innerhalb jeder Funktion, die deren Endergebnis aufnimmt. Statt Result := ErrechneterWert; könntest auch schreiben MeineFunktion := Errechneter Wert;.
spoof Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: So 10.11.13 12:19 
Hab ich das richtig verstanden, bei folgendem Code(Hardwareid):

ausblenden volle Höhe Delphi-Quelltext
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:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function getHWID(): String;
var
SerialNum,A,B: DWord;
C: array [0..255of Char;
Buffer: array [0..255of Char;
begin
if GetVolumeInformation(pChar('C:\'), Buffer, 256, @SerialNum, A, B, C, 256then
  Result := inttostr(SerialNum * Cardinal(-1))                 //Dieses Result bestimmt den wert von getHWID?
else Result := '';       
end;

function RC4(Expression, Password: string): string;
var
  RB : array[0..255of Integer;
  X, Y, Z: longint;
  Key : array of byte;
  ByteArray : array of byte;
  Temp: byte;
  Counter: integer;

begin
  If (Length(Expression) = 0then Exit;
  If (Length(Password) = 0then Exit;
  If (Length(Password) > 256then Password := Copy(Password, 1256);
  SetLength(Key, Length(Password));
  for Counter := 0 to Length(Password) - 1 do
    Key[Counter] := ord(Password[Counter + 1]);
  for X := 0 to 255 do
    RB[X] := X;
  X := 0; Y := 0; Z := 0;
  for X := 0 to 255 do
  begin
    Y := (Y + RB[X] + Key[X mod Length(Password)]) mod 256;
    Temp := RB[X];
    RB[X] := RB[Y];
    RB[Y] := Temp;
  end;
  X := 0;
  Y := 0;
  Z := 0;
  SetLength(ByteArray, Length(Expression));
  for Counter := 0 to Length(Expression) - 1 do
   ByteArray[Counter] := ord(Expression[Counter + 1]);
  for X := 0 to Length(Expression) do
  begin
    Y := (Y + 1mod 256;
    Z := (Z + RB[Y]) mod 256;
    Temp := RB[Y];
    RB[Y] := RB[Z];
    RB[Z] := Temp;
    ByteArray[X] := ByteArray[X] xor (RB[(RB[Y] + RB[Z]) mod 256]);
  end;
  for Counter := 0 to Length(Expression) - 1 do
  begin
    Result := Result + chr(ord(ByteArray[Counter]));   // Hier wird durch das Result bestimmt welchen wert die Funktion RC4 hat?
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
       Edit1.text:= getHWID;        // Hier nimmt mein edit den wert der Funktion getHWID an
end;

end.


Mit Button Click steht im Edit der Wert von getHwid, das Programm nimmt also das Result von getHwid. Erstmal stimmt das?
Dann, wo springt das Programm in den RC4 Code? Denn durch das Edit wird doch das getHWID ausgelesen aber ich seh im getHWID nicht dass er in RC4 springt wie macht das tool das?
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 10.11.13 12:40 
user profile iconspoof hat folgendes geschrieben Zum zitierten Posting springen:
Mit Button Click steht im Edit der Wert von getHwid, das Programm nimmt also das Result von getHwid. Erstmal stimmt das?

Genau: Result ist lediglich eine Kopie des Rückgabewertes der Funktion. Die Variable Result steht automatisch in allen Funktionen zur Verfügung und muß nicht deklariert werden.

user profile iconspoof hat folgendes geschrieben Zum zitierten Posting springen:
Dann, wo springt das Programm in den RC4 Code? Denn durch das Edit wird doch das getHWID ausgelesen aber ich seh im getHWID nicht dass er in RC4 springt wie macht das tool das?

Innerhalb des Code-Auszugs, den du hier gepostet hast, nirgends. Wieso erwartest du, daß in der Funktion getHWID die Funktion RC4 aufgerufen wird? Die wird doch zum Ermitteln der Seriennummer eines Datenträgers gar nicht benötigt.

Wenn dir der gesamte Quelltext vorliegt, kannst du entweder im Delphi-Editor oder in jedem beliebigen Texteditor nach RC4 suchen und findest dann womöglich die Stelle im Programm, an der die Function RC4 aufgerufen wird. Ansonsten:

Hier gibt es Grundlagen-Tutorials.
Auch die Uni Leipzig bietet ein Delphi-Tutorial.
Es gibt sogar ein entsprechendes Wikibook.
... und noch viel mehr via Google zu erkunden :lol:
spoof Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: So 10.11.13 13:50 
Die Sache is die, das is der Gesamte Code xD
Deswegen wunder ich mich ja wo die Function RC4 benutzt wird :D

Aber wenn ich jetz anstelle von getHWID, RC4 anspreche beim Button, dann schreibt er mir:
Nicht genügend wirckliche Parameter.

Was meint er damit?

Ich sollte dazusagen dass das ein copypasted Hardwareid code ist, also ich versuche den atm erstmal zu verstehen, ich dachte die Fuction RC4 wäre für die Verschlüsselung zuständig.

Edit: Ok es liegt glaub ich an
function RC4(Expression, Password: string): string;
an Expression, Password: string
Die 2 variablen müssen wohl erstmal verwendet werden bevor sie in der function bearbeitet werden können wenn ich das richtig sehe.


Zuletzt bearbeitet von spoof am So 10.11.13 14:10, insgesamt 1-mal bearbeitet
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 10.11.13 14:10 
Hallo,
eigentlich wollte ich mich nicht äußern, da ich keine Lust habe, mich durch Deine katastrophale Rechtschreibung und Ausdrucksweise zu quälen, aber na ja ...
user profile iconspoof hat folgendes geschrieben Zum zitierten Posting springen:
Die Sache is die, das is der Gesamte Code xD

Dann ist der Code unvollständig. Entweder Du suchst noch einmal die Originalquelle oder Du kannst es nicht nutzen.
user profile iconspoof hat folgendes geschrieben Zum zitierten Posting springen:
Aber wenn ich jetz anstelle von getHWID, RC4 anspreche beim Button, dann schreibt er mir:
Nicht genügend wirckliche Parameter.

Das ist logisch. getHWID verlangt keine Parameterübergabe, die RC4-Prozedur
ausblenden Delphi-Quelltext
1:
function RC4(Expression, Password: string): string;					

aber zwei Strings, nämlich Expression und Password.

Es tut mir leid, Dir das sagen zu müssen, aber so wirst Du kaum etwas lernen. Dir fehlen die absoluten Grundlagen zur Verwendung von Prozeduren usw.
Arbeite Dich erst einmal durch die von user profile iconPerlsau angegebenen Tutorials durch. Hier in der EE bekommst Du natürlich auch Hilfe, aber es wäre wirklich schön, wenn Du Dir erst einmal die Grundlagen erarbeitest.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 10.11.13 17:05 
@spoof

VORSICHT!
Mathematiker ist Lehrer.
Lehrer haben einen Rohrstock.
Rohrstock auf Fingerspitzen schlagen tut weh.

Lies ein DELPHI-Buch! Siehe:
www.downloads.delphi...de/DelphiStarter.pdf

Für diesen Beitrag haben gedankt: Mathematiker