AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Maschinensprache

Ein Thema von Neutral General · begonnen am 13. Okt 2004 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
Seite 4 von 10   « Erste     234 56     Letzte » 
Benutzerbild von Neutral General
Neutral General
Online

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.997 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#31

Re: Maschinensprache

  Alt 15. Okt 2004, 13:28
Wenn ich jetzt sowas hab :

E2 21 FF 21 AC 11 7D Kann ich das nicht mit Delphi so in eine Textdatei speichern das das ein richtiges Programm wird ?
Auch wenn das hier wahrscheinlich nichts sinnvolles ergeben würde
Michael
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.806 Beiträge
 
Delphi 10 Seattle Enterprise
 
#32

Re: Maschinensprache

  Alt 15. Okt 2004, 13:59
Zitat von Neutral General:
Wenn ich jetzt sowas hab :E2 21 FF 21 AC 11 7D Kann ich das nicht mit Delphi so in eine Textdatei speichern das das ein richtiges Programm wird ?
Auch wenn das hier wahrscheinlich nichts sinnvolles ergeben würde
Kein Problem:
Einfach neue Anwendung, TMemo, TEdit und TButton drauf und folgenden Quelltext
Delphi-Quellcode:
// Wandelt Hex Code in Bin Datei um
// Benötigt:
// Memo1 mit Hexwerten
/// (z.B. Memo1.Lines.Text := 'EB 0C 68 65 6C 6C 6F 20 77 6F 72 6C 64 '+
// '24 BA 02 01 B4 09 CD 21 B8 01 4C CD 21';)
// Edit1 mit Dateinamen
// (z.B. Edit1.Text := 'C:\TEMP\TEST.COM';)
//
// written by Dr. MaBuSE
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  s: string;
  BinDatei: TextFile;
begin
  s := Memo1.Lines.Text;

  // unnötige Zeichen aus Text entfernen
  i := length(s);
  while i > 0 do
  begin
    if pos(upcase(s[i]), '0123456789ABCDEF') = 0 then
    begin
      delete(s, i, 1);
    end;
    dec(i);
  end;

  AssignFile(BinDatei, Edit1.Text);
  ReWrite(BinDatei);
  // String aus Hexwerten in Bin konvertieren
  for i := 0 to (length(s) div 2)-1 do
  begin
    Write(BinDatei, Chr(StrToInt('$'+s[i*2+1]+s[i*2+2])));
  end;
  CloseFile(BinDatei);
end;
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.806 Beiträge
 
Delphi 10 Seattle Enterprise
 
#33

Re: Maschinensprache

  Alt 15. Okt 2004, 14:03
Oder folgende Funktion verwenden:

in der Delphi 7 Hilfedatei steht
Die Funktion konvertiert einen String mit Hexadezimalzeichen in den entsprechenden Binärwert.

function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer Beschreibung
Mit HexToBin können Sie den Hexadezimal-String Text in den entsprechenden Binärwert umwandeln.
Text ist die String-Darstellung eines Hexadezimalwertes.
Buffer gibt den Wert in der binären Darstellung zurück.
BufSize legt die Größe von Buffer fest. Text muss auf Hexadezimalzeichen mit mindestens 2*BufSize zeigen, das jedes Hexadezimalzeichen ein Byte repräsentiert.
HexToBin gibt die Anzahl der Zeichen in Buffer zurück, die nicht verwendet wurden, das Text keine gültigen Hexadezimalzeichen enthalten hat ('0'..'f')..

Hinweis: Die Hexadezimalzahl muss Zeichen in Kleinschreibung enthalten, da HexToBind keine Zeichen in Großschreibung erkennt.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General
Online

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.997 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#34

Re: Maschinensprache

  Alt 15. Okt 2004, 14:12
Danke aber bei Delphi 3 gibt diese Funktion leider nicht (Wie sovieles andere auch )
Wie kann ich z.B dein Hello-World Programm damit machen ?

Wenn ich in das Memo :

EB 0C 68 65 6C 6C 6F 20 77 6F 72 6C 64 24 BA 02 01 B4 09 CD 21 B8 01 4C CD 21 eingebe sieht die Exe so aus :

ë hello world$º´   Í!¸LÍ! ist das richtig so ?
Wenn ich das Programm starte blinkt jedenfalls nur das DOS-Fenster kurz auf
Michael
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#35

Re: Maschinensprache

  Alt 15. Okt 2004, 14:40
Zitat von Neutral General:
Also nochmal eine blöde (?) Frage: Würde es theoretisch gehen wenn man das richtige in eine Textdatei schreibt und diese dann in .exe umbenennt, das da dann ein Programm rauskommt ?
Jein, eine Windows-EXE enthält nicht nur den MAschinencode. Die Datei muss dem PE-Format folgen, also .data- und .text-Abschnitt, diverseste Header (unter XP evtl noch ein Manifest).
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#36

Re: Maschinensprache

  Alt 15. Okt 2004, 14:50
@tommie-lie: Er hat schon recht, wenn er das Richtige in eine Textdatei schreibt, kommt sicher ein Programm raus. Nur wird er Probleme haben, #0 zu schreiben...

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General
Online

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.997 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#37

Re: Maschinensprache

  Alt 15. Okt 2004, 14:51
dumme Frage #3 : Was ist #0
Michael
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#38

Re: Maschinensprache

  Alt 15. Okt 2004, 14:59
Ich glaube, dass das gesamte Unterfangen nichts weiter als reine Zeitverschwendung würde. Sicherlich ist es sinnvoll Grundlagen zu lernen - aber in dieser Form ist's irgendwie sehr sinnlos. Selbst wenn du wüsstest dass mit #0 das ASCII-Zeichen mit dem Index 0 gemeint ist, und damit u.a. Strings abgeschlossen werden, so ist es ganz einfach viel zu viel Handarbeit. Ich spreche da aus Erfahrung - ich habe mal versucht die FPU direkt zu steuern - also mit Opcodes. Man ist dann nur noch dabei sämtliche Speicheradressen von Hand zu berechnen, und die Parameter der Opcodes in Hex, oder in diesem Fall binär zu kodieren.
Trink dir lieber ne gute Tasse Tee, da hast du im Endeffekt mehr von .
Der einzige Grund die CPU von Hand steuern zu wollen ist, wenn du einen kompletten Compiler von null auf selber bauen wolltest. Und selbst das wird nicht in 0/1 gemacht.

Es sei gesagt dass es theoretisch möglich ist, sich aber eigentlich jeder sinvollen Machbarkeit entzieht.

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General
Online

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.997 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#39

Re: Maschinensprache

  Alt 15. Okt 2004, 15:06
Zitat von dizzy:
Selbst wenn du wüsstest dass mit #0 das ASCII-Zeichen mit dem Index 0 gemeint ist, und ...
Das das ein ASCII-Zeichen mit dem Index 0 ist weis ich auch -.-

Trotzdem würde ich gerne wissen warum

EB 0C 68 65 6C 6C 6F 20 77 6F 72 6C 64 24 BA 02 01 B4 09 CD 21 B8 01 4C CD 21 umgewandelt in

ë hello world$º´ Í!¸LÍ! nicht als exe-Datei funktioniert . Normalerweise müsste dann doch da 'hello world' stehen oder ? Bei mir blinkt aber nur kurz die DOS-Box und dann ist Ende...

PS: Das das eigentlich Zeitverschwendung ist ist mir klar, aber ich interessiere mich jetzt eben dafür und sinnvolle Programme hab ich noch selten geschrieben
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#40

Re: Maschinensprache

  Alt 15. Okt 2004, 15:08
Starte das Programm mal von der Kommandozeile aus.

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf