ś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]