Autor |
Beitrag |
spoof
      
Beiträge: 48
|
Verfasst: 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
|
Verfasst: 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 
      
Beiträge: 48
|
Verfasst: So 10.11.13 12:19
Hab ich das richtig verstanden, bei folgendem Code(Hardwareid):
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 public end;
var Form1: TForm1;
implementation
{$R *.dfm}
function getHWID(): String; var SerialNum,A,B: DWord; C: array [0..255] of Char; Buffer: array [0..255] of Char; begin if GetVolumeInformation(pChar('C:\'), Buffer, 256, @SerialNum, A, B, C, 256) then Result := inttostr(SerialNum * Cardinal(-1)) else Result := ''; end;
function RC4(Expression, Password: string): string; var RB : array[0..255] of Integer; X, Y, Z: longint; Key : array of byte; ByteArray : array of byte; Temp: byte; Counter: integer;
begin If (Length(Expression) = 0) then Exit; If (Length(Password) = 0) then Exit; If (Length(Password) > 256) then Password := Copy(Password, 1, 256); 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 + 1) mod 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])); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin Edit1.text:= getHWID; 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
|
Verfasst: So 10.11.13 12:40
spoof hat folgendes geschrieben : | 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.
spoof hat folgendes geschrieben : | 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 
|
|
spoof 
      
Beiträge: 48
|
Verfasst: 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
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
      
Beiträge: 2622
Erhaltene Danke: 1448
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: 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 ...
spoof hat folgendes geschrieben : | 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.
spoof hat folgendes geschrieben : | 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
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 Perlsau 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
|
Verfasst: 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
|
|
|