the first, Sorry for my bad english-knowing.
In programming languages there are two import-possible: (import: call a DLL function)
- Static import: When the application start, automatically loaded the DLL, and when the application stopped automatically unload the DLL.
- Dynamic import: Using the Windows's functions: LoadLibrary(), FreeLibrary(), GetProcAddress(), GetProcedureAddress() etc..
I have read tutorials, and i learned: The DLL load into memory once when a application call the DLL. It means: More program uses one DLL. But, I tested and I think this is not true. And I lokked for this, and other tutorials have written: When a DLL call, the DLL load into the application-memory-space, so the DLL is not in the memory once.
But is a problem, because if there are many applications uses the DLL, the result-memory-size is bigger as if I link the DLL's function into application.
So what is a true, and Can I call a DLL's function, to the DLL is be in the memory once?
Thanks, and sorry for my bad English-knowing
A loaded DLL in a memory
Moderators: DllAdmin, DLLADMIN ONLY
Re: A loaded DLL in a memory
I'm developing an application that requires high levels of security and needs to hide certain libraries so that they cannot be detected from file scanning and such.
It isn't a virus or anything malicious but it does need to contain code that is undetectable so to speak.
I thought up a way to do this but am unsure how to complete the final step. For instance, I compiled a DLL, converted the DLL file to a base 64 Encoded String, Encrypted the String and Saved it inside of a new project as a String variable.
Now, when I compile my main application hypothetically it should Decrypt the String to base 64 encoding, decode base 64 into byte array and load the byte array as a library inside of the executable. All of this should be done in memory without file IO during run-time.
The final step of loading the library during run time from raw memory is the step where I am confused. I'm sure this has to be possible. I know that DLLImport command allows external libraries to be loaded but what about libraries built in memory. Could I cast the byte array to an interface and access the code that way?
It isn't a virus or anything malicious but it does need to contain code that is undetectable so to speak.
I thought up a way to do this but am unsure how to complete the final step. For instance, I compiled a DLL, converted the DLL file to a base 64 Encoded String, Encrypted the String and Saved it inside of a new project as a String variable.
Now, when I compile my main application hypothetically it should Decrypt the String to base 64 encoding, decode base 64 into byte array and load the byte array as a library inside of the executable. All of this should be done in memory without file IO during run-time.
The final step of loading the library during run time from raw memory is the step where I am confused. I'm sure this has to be possible. I know that DLLImport command allows external libraries to be loaded but what about libraries built in memory. Could I cast the byte array to an interface and access the code that way?