Message board for the users of flat assembler.
> Windows > Need advice on Library Load
Tomazas 26 Nov 2006, 23:38
I am newbie to assemler and I need advice on loading huge library list. I have around 11 libraries which contains each from 3 to 70 functions which should be done each like this:
lea eax, aKernel32_dll ; "kernel32.dll" push eax call ds:LoadLibraryA push eax lea eax, aKernelFunc ; "HeapAlloc" mov eax, [ebp-8] ; Library Name push eax call ds:GetProcAddress mov [ebp-204h], eax ; Stored local variable, each time different mov ecx, [ebp-208h] ; DWORD address to store to mov [ecx], eax ; DWORD=Address of function for later use jmp ds:dword_16752890
The idea is that Library loaded and the should store a long list of function to different dword_16752F00, next one to dword_16752F04 and etc. Library names are stored in format
0<byte-lenght>0<Funtion name 1 DLL1>0<lenght 2>0<function Name2>0.... <last function name>00000<lenght DLL2 function 1>0<function name 1 DLL2>0<lenght 2 DLL2>0<.......
So when end of a list for same DLL library, zero lenght would be return and that should mean time to load a new library and the assign to DWORD each time with 4 bytes difference. When library loaded a one DWORD skipped.
Libraries are not difficult to hardcode but not functions, there is too many.
So probably the idea would be:
push eax; library1 Loadlibrary push eax ; library address push eax; dword start of list functions names=16752FF5 push eax; dword start of variables to store=:16752890 Call LoadAllFunction add eax, 8; dword start of list functions names=16752FF5+8 add eax, 4; dword start of variables to store=:16752890 mov eax, offset Library2 ;Now repeat this code again 11 times ;DLL names are sored similar as function names just more simple way: ;Library1.DLL000000Library2.DLL000000 ;L____16 bytes_____|______16 bytes___|
Result should look like this:
16752890 dword_16752890; Address of function 1, DLL1 16752894 dword_16752894; Address of function 2, DLL1 ... 16752994 dword_16752994; Address of function 56 (last), DLL1 16752998 =0 1675299B dword_1675299B; Address of function 1, DLL2 ...
and so on.
Main question: how would code look like for LoadAllFunction?
Thanks for any help
|26 Nov 2006, 23:38||
< Last Thread | Next Thread >
Copyright © 1999-2023, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.