Seite 3 von 5

Verfasst: 18.07.2008 18:48
von ts-soft
Mit nem engl. Artikel tue ich mich schwer, aber ich habe Resourcen grund-
sätzlich am ende gefunden, bzw. dahinter waren höchsten angehängte, nicht
zur exe gehörende Dateien.
Ist ja auch logisch, da Resourcen ja nicht automatisch mit der Exe in den
Speicher geladen werden.
Andere DataSections können sich überall befinden, aber Resourcen gehören
IMHO ans ende :mrgreen: (wenn nicht haue ich die Exe)

Gruß
Thomas

Verfasst: 18.07.2008 19:21
von CNESM
@ Rings
1. in deinem Tool ist eine Exe integriert, das ist wohl der STUB.
2.Dein Stub selbst ist nicht gepackt, hat also viele 0'en drinne
3.Die verwendeten API-Aufrufe ähneln denen aus den 2 genannten Bsp.
(einfach einmal die Imports anschauen)
Das mit der integrierten Exe ist korrekt. Der STUB wird nachher durch Teile der zu packenden Exe ersetzt. Bin derweil noch dabei, beide Exen auszumisten. Tue mich da aber ein bissle schwer. Kann mich doch so schlecht von Dingen trennen 8)

Das ich den STUB nicht gepackt habe ist mir so nicht bekannt. Hab mich schon gewundert, wo die ganzen Lücken herkommen :mrgreen:

Die API's der Beispiel sind zum Teil übernommen worden, da ich das Rad nicht neu erfinden wollte. Andererseits zeigt sich da wieder meine schlechter Coderstil. Hab derweil noch Codes drinnen, die eigentlich nicht genutzt werden (Icon, ZW-API, GetFileVersionInfoA usw.). Ich schmeiss das gleich alles mal raus.
OK, aber ich habe zum Testen von Programmen im pre-pre-alpha-Stadium oder so nicht die Lust und Zeit. Dann warte ich mit neuen Tests, bis das Programm weiter entwickelt ist.
Ob Catjia noch weiter entwickelt wird, hängt von meiner Motivation ab. Da ich der Meinung bin, das es schon gute Packer gibt und heutzutage solche Programme nicht mehr wirklich benötigt werden, wäre das eher unsinnig. Zudem ist das Programm ja nix besonderes (Mit ein bissle Arbeit kann sich das jeder selbst zusammenbasteln). Mal schauen, wie lange ich motiviert bin :)

@ Little John

Stimmt, die Exe ist bei mir auch defekt. Bei CPP wundert mich das aber auch nicht. Die müssen ja immer ne Ausnahme machen :mrgreen: Ich habe bisher nur PB Programme getestet und die laufen echt gut. Werd mich auch mal an andere Programme ranmachen, wo ich jetzt weiß, das die Fehler eher bei anders compilierten Codes zu suchen sind. Danke für das Beispiel !!!!

Verfasst: 18.07.2008 19:45
von Thorium
ts-soft hat geschrieben: Ist ja auch logisch, da Resourcen ja nicht automatisch mit der Exe in den
Speicher geladen werden.
Andere DataSections können sich überall befinden, aber Resourcen gehören
IMHO ans ende :mrgreen: (wenn nicht haue ich die Exe)
:)
Naja, das dachte ich auch. Aber das ist etwas blöd gemacht mit den Executables unter Windows. Das gesammte Image wird in den Speicher geladen. Da ist natürlich auch noch ne Menge anderer nutzloser Kram dabei wie der DOS-Stub. Der dafür da ist unter DOS anzuzeigen das dieses Programm für Windows ist. Die Ressourcen werden als Teil des Images auch schon komplett in den Speicher geladen. Eine Ausnahme bilded lediglich Windows CE, da wird das Image dynamisch geladen um den Speicher optimal auszunutzen.

Verfasst: 18.07.2008 20:08
von ts-soft
Das kann nicht sein, Resourcen werden nur bei Anforderung geladen!
Automatisch geladen wird z.B. das ExeIcon um es im Fenster zu zeigen,
sowie weitere vom Programm benötigte Resourcen, der Rest wird erst bei
Anforderung geladen!
Kannst ja mal ein großes Bild als Resource in eine Exe binden und nicht
laden, dann dieselbe Exe ohne die Resource und jeweils den
Speicherverbrauch überprüfen! Bleibt gleich, sonst lügt Microsoft (was ja
nicht das erste mal wäre :mrgreen: )
Früher gabs da noch ein Flag für, obs gleich geladen wird, aber das wird
inzwischen ignoriert, Resourcen werden nur bei Bedarf geladen (ich glaube ich wiederhole mich)

Gruß
Thomas

Verfasst: 18.07.2008 20:31
von Thorium
Wie kann es dann sein das Ressourcen korrekt geladen werden obwohl sie dank eines Exe-Packers auf der Platte nur komrimiert und somit nicht durch den PE-Loader zugänglich vorliegen?

Verfasst: 18.07.2008 20:34
von Little John
ts-soft hat geschrieben:(wenn nicht haue ich die Exe)
Heißt das deshalb "Software", weil jemand das weichgeklopft hat? :D
SCNR

Ich kann noch eine Aussage von Herrn Petzold zu diesem Thema beisteuern:
Icons und Cursorformen fallen in eine Klasse, zu der auch Dialoge und Menüs gehören: sie werden als Ressourcen bezeichnet - als Daten, die in der .EXE-Datei des Programms gespeichert sind. Wenn Windows ein Programm in den Hauptspeicher lädt und startet, bleiben diese Daten erst einmal unberücksichtigt: Ressourcen werden erst zu den Zeitpunkten individuell geladen, zu denen sie ein Programm wirklich braucht.
Charles Petzold:
Windows-Programmierung
deutsche Übersetzung der 5. Aufl. (2000)
Microsoft Press Deutschland
S. 399

Gruß, Little John

Verfasst: 18.07.2008 20:47
von ts-soft
@Little John: Danke Dir und dem alten Petzold :mrgreen:


@Thorium: Wie das bei UPX & Co genau geht weiß ich nicht, verbiegen kann
man ja alles

Verfasst: 18.07.2008 21:08
von Thorium
So habs grad nochmal verifiziert, was in dem Buch steht stimmt nicht.
Habe es getestet indem ich eine Textdatei als binäre Ressource eingebunden habe. Diese wird nicht von vom Programm geladen, angezeigt oder sonst wie behandelt. Das Programm gibt nur eine MessageBox aus damits nicht gleich wieder beendet wird. Habe dann den Prozessspeicher nach dem Text durchsucht der in der Textdatei ist und wie ich sagte ist er im Speicher zu finden und zwar im Image des Executables, welches komplett in den Speicher geladen wurde.

Könnt es gerne selbst nachtesten.

Verfasst: 18.07.2008 21:20
von Little John
Thorium hat geschrieben:So habs grad nochmal verifiziert, was in dem Buch steht stimmt nicht.
Habe es getestet indem ich eine Textdatei als binäre Ressource eingebunden habe.
Wie geht das denn mit PB? Das wollte ich sowieso noch fragen. :)

Gruß, Little John

Verfasst: 18.07.2008 21:31
von ts-soft
Little John hat geschrieben: Wie geht das denn mit PB? Das wollte ich sowieso noch fragen. :)

Gruß, Little John
text.rc hat geschrieben:// Pfade immer absolut, bitte anpassen
TEXT RC_DATA "E:\\Eigene Dateien\\PureBasic\\Libs\\RC_DATA\\Examples\\Sample.Rtf"

Code: Alles auswählen

PORC "text.rc"

Code: Alles auswählen

Import "text.res" : EndImport
Zum nutzen:
http://www.realsource.de/snippet/34-sni ... ource.html