środa, 20 stycznia 2010

Jak wkompilować DLL do EXE

Bardzo stare (ma już z 5 lat) i epickie ^^ czyli:

jak wkompilować DLL do naszego programu.

--- INFO ---
DLLtoPAS jest wersją programu pod starą wersję DLLLoadera.
Przemielone nim moduły będą działać po drobnych przeróbkach.

Obecnie nie mam czasu, chęci ani potrzeby, na napisanie wersji
pod nowy unit.
Jeśli ktoś chce może napisać podobny program pod nową wersję
modułu :).

Jeśli go napiszesz, wyślij na email: hnb[małpa]dathox.com

a zrobię update + credits dla Ciebie.

--- USES ---
Unit jest prosty w obsłudze:

function AddDLL(Name:pchar;Data:pointer;Size:longword):PDLLFileListItem;
procedure RemoveDLLItem(Item:PDLLFileListItem);
procedure RemoveDLL(Name:pchar);
function PatchImports(hLibModule:hmodule):hmodule;

function FindDLLModulePerName(const Name:pchar):PDLLModule;
function FindDLLModulePerWideName(const Name:pwidechar):PDLLModule;
function FindDLLModulePerImageBase(const ImageBase:pointer):PDLLModule;
function FindDLLModulePerAddress(const Address:pointer):PDLLModule;

function GetProcAddressByOrdinal(Module:hmodule;Ordinal:longword):pointer;
function GetProcAddressByHash(Module:hmodule;Hash:longword):pointer;
function GetProcAddressByName(Module:hmodule;ModuleName:pchar):pointer;

function LoadDLLModule(ModuleData:pointer;const ModuleName:pchar;FileSize:longword):PDLLModule;
function FreeDLLModule(DLLModule:PDLLModule):boolean;



Jak to działa w praktyce (mniej więcej) możemy zobaczyć na przykładzie
przetrawionych modułów przez DLLtoPAS.

--- ABOUT ---
Dzięki dla Goriona za pomoc kilka lat temu w napisaniu DLLtoPAS i dla
autora DLL Loadera - BeRo

Pozdrawiam, Maciej HNB Izak
hnb[małpa]dathox.com

[LINK]

1 komentarz:

olesio pisze...

Jakby ktoś miał problemy jednak z obsługą tego modułu to można użyc do
ładowania dllki z zasobów DllLoader w wersji z 2004 roku dostępnej pod
poniższym adresem. Obsługuje się go znacznie łatwiej, bo jest to klasa
którą tworzymy i ładujemy do niej zawartośc ResourceStreama albo - jak
kto woli - tworzymy programem dll2pas moduł zawierający tablicę bajtów
z dllki podanej w patametrze. Zaś do napisania tego komentarza skłonił
mnie fakt że googlując delphi dll w exe, mozna trafić na stronę HNR :)

http://www.basegraph.com/bg/tutorials/eng_tutor_dlltools/dlltools.html