DLL aus Speicher laden?
-
Ist es möglich, eine DLL aus dem Speicher statt von der Festplatte mit LoadLibrary zu laden?
Ich habe bisher keine Möglichkeit gefunden.
Wenn nein, gibt es Alternativen zu LoadLibrary?
-
Nooze schrieb:
Ist es möglich, eine DLL aus dem Speicher statt von der Festplatte mit LoadLibrary zu laden?
Nö.
Wenn nein, gibt es Alternativen zu LoadLibrary?
Klar, du kannst selbst den nötigen Code schreiben. Also die ganzen Import-, Relocation-, ... Einträge im PE Image durchgehen und auflösen.
Wie das genau geht kann ich dir nicht sagen, hab's noch nie gemacht, und hab auch keinen Link parat.
Ich würde auch eher davon abraten, ist den Aufwand nicht wert.
Gibt ja schliesslich immer noch die Möglichkeit Temp-Files anzulegen.
-
Hier ein paar Links:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366887.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366898.aspx
-
Nooze schrieb:
Ist es möglich, eine DLL aus dem Speicher statt von der Festplatte mit LoadLibrary zu laden?
Ich habe bisher keine Möglichkeit gefunden.
Wenn nein, gibt es Alternativen zu LoadLibrary?Na klar. Ramdisk anlegen und DLL laden ...
Was hast Du denn konkret vor ? Wozu braucht man sowas ?
-
Was haben die meisten Leute vor, die DLLs oder EXEn aus dem RAM laden wollen?
Tip: etwas was Virenscanner zu Recht als gefährlichen Code flaggen.
-
@ hustbaer: Jo, genau. Ich will den Ultratrojaner bauen und Amerika sprengen. Was auch sonst?
@ dot: Danke für die Links. Hat mit dem eigentlichen Problem aber eher wenig zu tun.
Habe mich jetzt etwas mit dem PE Format beschäftigt. Mal schauen, was sich damit anstellen lässt. Mit etwas intensiverer Google Suche und sehr viel rumgefrickele sollte dabei etwas nützliches entstehen.
Und mal ehrlich: Ich finde solche Themen einfach nur spannend. Nur Frage ich mich, warum Windows solch eine Funktion nicht zur Verfügung stellt?
Ich glaube nicht, dass Microsoft 1980 oder was-weiß-ich-wann schon an böse Absichten gedacht hat. Es verfehlt wohl eher den Sinn von DLLs.Aber gut, dass die Nutzer dieses Forums an die Sicherheitsaspekte denken
-
Nooze schrieb:
@ dot: Danke für die Links. Hat mit dem eigentlichen Problem aber eher wenig zu tun.
Naja, du willst Code irgendwo im Speicher zur Ausführung bringen, alles was du dazu brauchst sind diese Funktionen (vor allem die zweite)
Nooze schrieb:
Und mal ehrlich: Ich finde solche Themen einfach nur spannend. Nur Frage ich mich, warum Windows solch eine Funktion nicht zur Verfügung stellt?
Ich glaube nicht, dass Microsoft 1980 oder was-weiß-ich-wann schon an böse Absichten gedacht hat.Was genau wäre denn der Sinn eines solchen Feature?
Der alleinige Zweck einer exe, dll, bzw. des PE Format im Allgemeinen ist doch, ausführbaren Code von der Festplatte in den Speicher zu laden. Wenn dein Code aber doch schon im Speicher ist, was ist dann eigentlich noch das Problem!?Nooze schrieb:
Es verfehlt wohl eher den Sinn von DLLs.
Absolut...
-
Relocs, Imports, ...
-
In irgendwelche Tabels wird man es noch einklinken müssen, wenn z.B. GetModuleHandle(Ex)() die "DLL" finden können soll...
-
Alles nur hergeleitetes Geschwafel.
-
Manuell ein ziemliches Gefrickel, darf man annehmen.
Vielleicht hilft dir das: http://www.enigmaprotector.com/en/aboutvb.html
-
Wenn man Google benutzt wird man sofort fündig... ich verstehe diese Diskussion um dieses Thema nicht.
Die Idee von DLLs wird damit verbogen und vernichtet.
Es gibt nicht einen "guten" Sinn hinter solcher Aktion...Just my 2 cents und für mich EOD.
-
Martin Richter schrieb:
Es gibt nicht einen "guten" Sinn hinter solcher Aktion...
DOCH GIBT ES .... omfg
-
Und der wäre z.B.?
-
Hi schrieb:
Martin Richter schrieb:
Es gibt nicht einen "guten" Sinn hinter solcher Aktion...
DOCH GIBT ES .... omfg
Na dann raus mit der Sprache. Ich bin gespannt...
-
Schutz vor Crackern. Obfuscation. Nichts externes, was man dann einfacher reversen kann.
Deppensicherer. Einfachere Updates. Klar, für kleine Programme.
Oder man kann so auch einfach ein Programm um eigenen Code erweitern, dessen source man nicht hat.
Viele Fälle gibts nicht, das stimmt wohl. Aber manchmal ist es genau das, was man braucht. Nur eine Datei.
-
Hi schrieb:
Schutz vor Crackern. Obfuscation. Nichts externes, was man dann einfacher reversen kann.
Du glaubst doch nicht im ernst dass die deine dll nicht finden!? Das würd wohl sogar ich schaffen, obwohl ich absolut 0 Erfahrung mit solchen Dingen hab...
Hi schrieb:
Deppensicherer.
Wenns deppensicher sein soll, dann macht man einen anständigen Installer.
Hi schrieb:
Einfachere Updates.
wtf?
Hi schrieb:
Oder man kann so auch einfach ein Programm um eigenen Code erweitern, dessen source man nicht hat.
Inwiefern?
Hi schrieb:
Aber manchmal ist es genau das, was man braucht. Nur eine Datei.
In diesen Fällen würd ich eher versuchen das Problem, nämlich die Tatsache dass ich zwei Dateien hab wo ich nur eine will, zu lösen anstatt zu derart starken Psychopharmaka zu greifen...
-
Ich hatte zwar schon EOD angekündigt aber es reitzt mich auf diesen Unsinn zu antworten:
Abgesehen von allen Argumenten die folgen.
Die Idee einer DLL, Speicher zu sparen, Pflege einfach zu machen, Code wiederzuverwenden. wird durch solch ein Verfahren konterkariert.
Dann benötige ich keine DLL sondern nur ein Stück statische Lib.
BTW: Als Hook Codebasis wäre solch eine eingebette DLL auch nich geeignet!
Also warum dann überhaupt eine DLL wenn der Code sowieso nur in dieser Exe drin ist und in dieser genutzt werden kann?Hi schrieb:
Schutz vor Crackern. Obfuscation. Nichts externes, was man dann einfacher reversen kann.
Quatsch. Irgendwann ist das Ding im Speicherund für jeden Debugger sichtbar!
Schutzmeachinsmen erschließen sich meistens dem "Reverse Engineer" erst beim aktiven Debuggen. Eine DLL alleine oder der sichtbare Code nützt selten.Hi schrieb:
Deppensicherer. Einfachere Updates. Klar, für kleine Programme.
Quatsch. Da man mittlerweile sowieso Admin Rechte benötigt um in die Programmverzeichnisse zu installieren kommt man um den Installer nicht drum herum.
Und selbst wenn. COPY und PASTE einer Dateigruppe geht auch.Hi schrieb:
Oder man kann so auch einfach ein Programm um eigenen Code erweitern, dessen source man nicht hat.
Wie das? Wie kann man damit was verändern?
Hi schrieb:
Viele Fälle gibts nicht, das stimmt wohl. Aber manchmal ist es genau das, was man braucht. Nur eine Datei.
Keiner der hier genannten Gründe ist ein Grund! Alles nur leere Argmente.
Bleiben also nur "Bösartigkeit" um "Minderwissende" reinzulegen. Oder Bösartigekeit zu verschleiern.
Oder es bleibt die Illegalität, DLLs zu benutzen an der man keine Rechte hat, dies aber verschleiern möchte...Aber auch wird der Anonyme Nutzer (komisch, dass solche Anfragen immer anonym sind), wieder die große Hackerfreiheit postulieren und sagen "er wüsste schon warum dies sinnvoll ist, dass muß er uns aber nicht sagen...".
-
Hab grad nicht viel Zeit, schreibe vllt später noch mehr:
Es erhöht den Aufwand des crackens, und das zählt! Loader und Binary können verschlüsselt in der .exe abgelegt werden, nur benötigte codeteile entschlüsselt und ausgeführt werden usw... aber davon habt ihr scheinbar keinen Plan.
Man kann ein Programm, dessen source man nicht hat, eine .exe zB, um eigenen Code erweitern. DLL schreiben, Hooks einsetzen oder sonstwas, und diese DLL in die .exe einbinden. Beim start der .exe wird der eigene Code dann mitgeladen und ausgeführt.
So schwer zu verstehen?
-
Hi schrieb:
Loader und Binary können verschlüsselt in der .exe abgelegt werden, nur benötigte codeteile entschlüsselt und ausgeführt werden usw... aber davon habt ihr scheinbar keinen Plan.
Das ist uns klar und hat absolut nichts mit dlls zu tun!?
Hi schrieb:
Man kann ein Programm, dessen source man nicht hat, eine .exe zB, um eigenen Code erweitern. DLL schreiben, Hooks einsetzen oder sonstwas, [...]
Ja, das wissen wir natürlich ebenfalls, was hat das mit der Fragestellung hier zu tun?
Hi schrieb:
[...] und diese DLL in die .exe einbinden. Beim start der .exe wird der eigene Code dann mitgeladen und ausgeführt.
Erklär einem interessierten Laien doch mal, wie genau du die dll in die exe packst, wie genau die dll dann "mitgeladen" wird und wie genau der Code aus dieser dll dann zur Ausführung kommt. Da bin ich jetzt mal echt gespannt
Hi schrieb:
So schwer zu verstehen?
Ja, der Zusammenhang zum Thema ist mir leider immer noch nicht klar, vermutlich bin ich einfach zu dumm und unwissend