Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Weihnachtsraetsel - Code für Programm gesucht (https://www.delphipraxis.net/183277-weihnachtsraetsel-code-fuer-programm-gesucht.html)

hathor 27. Dez 2014 11:45

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Zitat:

Zitat von turboPASCAL (Beitrag 1284779)
Hi,

die Warnung kommt wohl möglich von der UPX gepackten Exe.
Sehr wahrscheinlich.

Die Generierung des Sounds ist höchstwahrscheinlich mit
Delphi-Quellcode:
Windows.Beep()
*
Richtig.
gemacht worden,
was ziemlich unglücklich ist da heutige PC's meist nicht mehr über einen PC-Speaker verfügen und je
nach System die Ausgabe des Sounds das Soundboard übernimmt, wenn es so eingestellt ist und oder unterstütz wird.
Das ist von Mainboard zu Mainboard auch unterschiedlich umgesetzt. (von meiner "Soundkarte*" ein Beispiel im Anhang)

Das Programm von hathor erzeugt die Töne scheinbar mit einer Sinus.- (& Co) - Funktion.
Falsch.

Direkter Port-Zugriff: Falsch.

...

mensch72 27. Dez 2014 12:32

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Ein Musikalisches Gehör habe ich nicht, aber ein paar Tools, die mich dem org. Quelltext sehr nah bringen... :)

Betagtes UPX und Standard-Delphi sind da ja kein Hindernis:
https://code.google.com/p/fuu/
http://www.oocities.org/r_etarded/ol.../ollydump.html
...

Jetzt noch sowas aus dieser Richtung:
http://kpnc.org/idr32/en/
https://tuts4you.com/download.php?view.2867
...

Da kommt was mit Thread, BEEP und Sleep:
Ich habe es lange nicht mehr probiert, ob "Beep" sofort zurückkommt, oder erst nach der in "Duration" angegebenen Zeit.

BOOL WINAPI Beep(
_In_ DWORD dwFreq,
_In_ DWORD dwDuration
);

Das Erzeugen der Tonfolge kann sich mit "solchen und ähnlichen Tools" jeder selbst anschauen und decodieren.
(Ein Blick in den Task-/Prozessmonitor mit Anzeige der genutzten Handles und Threads schadet bei sowas auch nie.)



Man beachte:
- die genannten sind hier alles noch ganz liebe Tools, welche nicht explizit zum Cracken oder Umgehen von Kopierschutz mit Debug-Sperren usw. gemacht wurden!
- und sorry, im Zeitalter von schnellem INET und großen schnellen Festplatten ist UPX und dergleichen eigentlich unnötig und wer es dennoch einsetzt "verlangt" gerade das Überprüfen von dem was er da tut
- ich halte daher das Wissen um den sinnvollen Einsatz solcher Tools für richtig, und hier findet man wenn man will sogar auf "alternativen Weg" die Lösung des Rätsels:)

Horst0815 27. Dez 2014 13:07

AW: Weihnachtsraetsel - Code für Programm gesucht
 
http://www.delphipraxis.net/152849-w...ndows-7-a.html

+


Delphi-Quellcode:
  Beep($960, $64);
  Beep($898, $64);
  Beep($7D0, $64);
  Beep($708, $64);
  Beep($640, $64);
  Beep($578, $64);
  Beep($4B0, $64);
  Beep($3E8, $64);
  Beep($320, $64);
  Beep($258, $64);
  Beep($190, $64);
  Beep($C8, $64);
  Beep($64, $64);
  Beep($32, $64);
  Beep($64, $64);
  Beep($C8, $64);
  Beep($190, $64);
  Beep($258, $64);
  Beep($320, $64);
  Beep($3E8, $64);
  Beep($4B0, $64);
  Beep($578, $64);
  Beep($640, $64);
  Beep($708, $64);
  Beep($7D0, $64);
  Beep($898, $64);
  Beep($960, $64);
und
Delphi-Quellcode:
  Beep($32, $64);
  Beep($64, $64);
  Beep($C8, $64);
  Beep($190, $64);
  Beep($258, $64);
  Beep($320, $64);
  Beep($3E8, $64);
  Beep($4B0, $64);
  Beep($578, $64);
  Beep($640, $64);
  Beep($708, $64);
  Beep($7D0, $64);
  Beep($898, $64);
  Beep($960, $64);

hathor 27. Dez 2014 13:37

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Wegen UPX: Die Debug-Exe ist 11250KB gross!

Horst0815 kommt der Sache schon sehr nahe - deshalb hier die Auflösung:

Delphi-Quellcode:
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;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function BeepThread: DWORD; stdcall;
begin
  result := 0;
  Winapi.Windows.Beep(50, 100);
  Winapi.Windows.Beep(100, 100);
  Winapi.Windows.Beep(200, 100);
  Winapi.Windows.Beep(400, 100);
  Winapi.Windows.Beep(600, 100);
  Winapi.Windows.Beep(800, 100);
  Winapi.Windows.Beep(1000, 100);
  Winapi.Windows.Beep(1200, 100);
  Winapi.Windows.Beep(1400, 100);
  Winapi.Windows.Beep(1600, 100);
  Winapi.Windows.Beep(1800, 100);
  Winapi.Windows.Beep(2000, 100);
  Winapi.Windows.Beep(2200, 100);
  Winapi.Windows.Beep(2400, 100);
end;

function BeepThread2: DWORD; stdcall;
begin
  result := 0;
  Winapi.Windows.Beep(2400, 100);
  Winapi.Windows.Beep(2200, 100);
  Winapi.Windows.Beep(2000, 100);
  Winapi.Windows.Beep(1800, 100);
  Winapi.Windows.Beep(1600, 100);
  Winapi.Windows.Beep(1400, 100);
  Winapi.Windows.Beep(1200, 100);
  Winapi.Windows.Beep(1000, 100);
  Winapi.Windows.Beep(800, 100);
  Winapi.Windows.Beep(600, 100);
  Winapi.Windows.Beep(400, 100);
  Winapi.Windows.Beep(200, 100);
  Winapi.Windows.Beep(100, 100);
  Winapi.Windows.Beep(50, 100);
  Winapi.Windows.Beep(100, 100);
  Winapi.Windows.Beep(200, 100);
  Winapi.Windows.Beep(400, 100);
  Winapi.Windows.Beep(600, 100);
  Winapi.Windows.Beep(800, 100);
  Winapi.Windows.Beep(1000, 100);
  Winapi.Windows.Beep(1200, 100);
  Winapi.Windows.Beep(1400, 100);
  Winapi.Windows.Beep(1600, 100);
  Winapi.Windows.Beep(1800, 100);
  Winapi.Windows.Beep(2000, 100);
  Winapi.Windows.Beep(2200, 100);
  Winapi.Windows.Beep(2400, 100);
end;

procedure TForm1.Button1Click(Sender: TObject);
var tID : Cardinal;
begin
CreateThread(nil, 0, @BeepThread2, NIL, 0, tID);
CreateThread(nil, 0, @BeepThread, NIL, 0, tID);
end;

end.

Bernhard Geyer 27. Dez 2014 13:58

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Zitat:

Zitat von hathor (Beitrag 1284789)
Wegen UPX: Die Debug-Exe ist 11250KB gross!

Wäre dann nicht der erste Schritt keine Debug-Infos mitzuliefern? Oder sollte damit die Lösung einfacher werden?

hathor 27. Dez 2014 14:09

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Die Release-Build, die mit UPX bearbeitet worden ist, war auch noch sehr gross -> 2229KB.

Bernhard Geyer 27. Dez 2014 14:14

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Zitat:

Zitat von hathor (Beitrag 1284794)
Die Release-Build, die mit UPX bearbeitet worden ist, war auch noch sehr gross -> 2229KB.

Und was hat UPX für einen unterschied gebracht das man die Exe eh noch Zipped?

hathor 27. Dez 2014 14:22

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Exe-Files kann man manchmal nicht direkt up-/downloaden.

turboPASCAL 27. Dez 2014 18:24

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von hathor (Beitrag 1284794)
Die Release-Build, die mit UPX bearbeitet worden ist, war auch noch sehr gross -> 2229KB.

Autsch...

Ich mag mein Delphi6, keine Schnickschnack, kein Komfort aber schnittige kleine Programme. :stupid:


PS.:
Nein, das Programm enthälet keinen Virus oder Malware. Falls euer Virenscanner darauf anspringen sollte liegt
es vermutlich daran, das einige Scanner mit Heuristik anspringen...
https://www.virustotal.com/de/file/3...c338/analysis/

mensch72 27. Dez 2014 19:51

AW: Weihnachtsraetsel - Code für Programm gesucht
 
Im CallStack findet man intern im Beep irgendwo auch noch ein Sleep für die Duration, aber der Delphi/WinAPI Code passt.

Debug-Infos hin oder her, UPX hin oder her, solche Sachen sind purer Spaß. Für ein Rätsel OK, aber wenn es drauf ankommt dann greife man doch bitte zu professionellen Sachen.
Mir wäre bei UPX und anderen "PE" Tools das Risiko einer potentiellen Infektionswarung durch irgendeinen Virusschutz bei den Anwendern zu groß.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
Seite 2 von 3     12 3      

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