AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Aufruf von Resource will nicht funktionieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aufruf von Resource will nicht funktionieren

Ein Thema von Avax2k · begonnen am 28. Okt 2005 · letzter Beitrag vom 28. Okt 2005
Antwort Antwort
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#1

Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 04:50
hallo habe folgenden Code um eine Datei aus einer Res-datei auszuführen
Delphi-Quellcode:
implementation

{$R *.dfm}
{$R F:\Test.res}

function ExtractResTo(Instance: LongWord; BinResName, NewPath, ResType: PChar): Boolean;
(*******************************************************************************
Function:  ExtractResTo
Returns:    Boolean (true=success)
Version:    Function version 3.0[mod]
            Parameters modified, SEH stripped.
*******************************************************************************)

var
  ResSize,
    HG,
    HI,
    SizeWritten,
    hFileWrite: LongWord;
begin
  result := false;
  HI := FindResource(Instance, BinResname, ResType);
  if HI <> 0 then
  begin
    HG := LoadResource(Instance, HI);
    if HG <> 0 then
    begin
      ResSize := SizeOfResource(Instance, HI);
      hFileWrite := CreateFile(NewPath, GENERIC_READ or GENERIC_WRITE,
        FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS,
        FILE_ATTRIBUTE_ARCHIVE, 0);
      if hFileWrite <> INVALID_HANDLE_VALUE then
      begin
        result := (WriteFile(hFileWrite, LockResource(HG)^, ResSize,
          SizeWritten, nil) and (SizeWritten = ResSize));
        CloseHandle(hFileWrite);
      end;
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ExtractResTo(HInstance,'Test.res','F:\',RT_RCDATA);
ShellExecute(Application.Handle, 'open', 'F:\Test.exe',nil,nil,SW_SHOW);
end;
die Mainform wird aufgerufen, ohne fehler, jedoch die Test.exe nicht aus der test.res entpackt und auch nicht ausgeführt.
Der Inhalt der RC-Datei die mit BCC32 ausgeführt wurde war wie folgt:
Zitat:
Prog1 RCDATA Test.exe
habe ich jetzt den Befehl falsch aufgerufen, oder ist da woanders einFehler, der die Datei nicht wieder aus der Res extrahieren will??

wäre dankbar, wenn jemand den Aufruf, sofern dieser falsch sein sollte korrigiert oder einen anderen fehler der ursächlich ist.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 05:02
Moin Avax2k,

probiere doch mal so:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ExtractResTo(HInstance, 'Prog1', 'F:\Test.exe', RT_RCDATA);
  ShellExecute(Application.Handle, 'open', 'F:\Test.exe', nil, nil, SW_SHOW);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 05:15
hallo marabu

und schon wieder hast du mir weitergeholfen, denn es funktioniert.

Ich habe jedoch ein kleines Problem und zwar die Test.exe ist, wenn sie auf der Platte ist kopierbar.
Gibt es eine Möglichkeit das Kopieren der Datei zu verhindern?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 05:33
Dazu fallen mir zwei Sachen ein. Wenn du deine Resource auf meinem Rechner auspacken willst, dann wird dein Programm scheitern, da es bei mir kein F Laufwerk gibt. Und wenn dein ausgepacktes Programm jemals laufen soll, dann braucht der Starter das EXECUTABLE Recht, welches unter Windows mit dem READ Recht verknüpft ist. Abgesehen davon, dass auf vielen Rechnern XP Home läuft und dort diese Rechte nicht zur Verfügung stehen, kannst du auch nicht einfach ein Benutzer-Konto auf einer fremden Maschine einrichten, dem du exklusiven Zugriff auf diese ausführbare Datei gibst. Was hast du denn vor?

marabu
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 11:26
mir ist bewusst, dass nur wenige eine F:\ Partition besitzen, jedoch habe ich dies mit F:\ lediglich getestet ob mein Programm auch wirklich das tut, was ich will, im späteren Programm würede ich es dann abändern.
Was ich dadurch erreichen will ist, ich möchte Dateien einbinden, die nur beim Ausführen eines bestimmten Befehls im Hauptprogramm aus der hauptanwendung extrahiert und ausgeführt werden. Will damit verhindern, dass die Leute sich bestimmte Dateien einfach so kopieren können, wenn es Sound dateien sind zum Beispiel und dann ohne mein Programm einfach in jedem Player abspielen könnten.
Habe mir überlegt die Dateien nur in den Speicher zu lesen und nicht auf die Platte zu schreiben, aber das würde bei Systemen mit wenig Arbeitsspeicher zu großen Problemen führen und das System nur unnötig ausbremsen. Wobei wenn ich jeweils nur immer eine datei laden würde, könnte es gehen auch wenn diese 100mb ist da ja heutzutage die Windows XP Rechner mindestens 256MB Ram haben..oder doch nicht ?!

jedenfalls bin ich für andere Lösungswege aufgeschlossen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 11:38
Vergiss es. Sollten sie nicht verschlüsselt in der Ressource stehen, kannst du sie mit jedem beliebigen ResHacker da rauskopieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 12:21
du hast recht, an diese Idee habe ich gar nicht gedacht..es würde somit ausreichen, dass ich zuerst meine Datei durch einen Ecoder schicke und die Dateiendung beibehalte.
Sprich:

wave1.wav --> Encoder ausgeführt --> wave1.wav die nicht mehr abgespielt werden kann beim Doppelklick da Fehlermeldung kommt, dass es keine gültige wav-Datei ist.
Dann könnte ich diese als Wave deklarierend in die Res packen und erst im Hauptprogramm den Encoder nach dem Aufruf der Datei starten mit dem Ergebnis, dass die Datei auf der Platte immer verschlüsselt wäre, auch in der Res und nur vom Programm entschlüsselt.
Somit würde jeder, der die Datei beim Entpacken aus der Res kopiert, nichts mit ihr anfangen können..es sei denn er hätte jetzt meinen Decoder..oder die verschlüsselung eben geknackt.

ich denke aber wenn ich RC4 verwende, sollte dies Problem für immer erledigt sein, oder was meint ihr ?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 12:28
Vergiss es.

Wenn alle Stricke reißen, kann man immernoch vom Lautsprecherausgang aufnehmen

Mal abgesehen, dass du sowisoeine entschlüsselte Datei auf der Festplatte ablegen musst, wenn du keinen eigenen Player schreiben willst.

Warum willst du deine Audiodateien eigendlich auf gedeh und verderb schützen ?

Und zur Not kann man die Entschlüsselungsroutine deines Programms kopieren, und dann die Ressourcen entschlüsseln, du siehst, es gibt quasi keinen wirksamen Schutz.
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 13:32
es geht auch darum Otto-Normal Verbraucher davon abzuhalten Kopien anzufertigen.
Klar können die Profis jedes Programm knacken, aber wenn jeder so denken würde, wie du dann würde keine Softwarefirma einen Schutz machen sondern ihre Programme gleich verschenken.
Und die Entschlüsselungsroutine aus meinem Programm zu extrahieren ist eine Aufgabe die kein Möchtegern Hacker im Stande ist zu bewältigen, sondern eben dann nurjenigen, die auch in der Lage sind High-End geschützte Produkte mit Dongle Simulation usw. zu knacken.
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:58 Uhr.
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