The history of origin began with the fact that I greatly bred DAL and BLL used in different projects. And at one fine moment, it became interesting to me whether a specific method is used or not used in child projects, or it can be safely deleted without notifying anyone. The first version searched through reflection and loading through memory. But you can read about the limitations of different search methods through reflection in description of different plugin loading providers. As a result, I had to dig to PE and CLI...
User interface is available at:
Plugin can read PE files with two options:
Win32Loader— Using Win32 API function LoadLibrary
StreamLoader— Using managed class System.IO.FileStream
You can open PE file using several options:
MaxArrayDisplay10 — Mar array length that will be displayed
ShowAsHexValueFalse — Display digits as decimal or hexadecimal.
ShowBaseMetaTablesFalse — Display base tables in dynamic structures instead of strongly typed ones (Closer to binary file type).
LoaderStreamLoader — How to load PE file
Win32Loader— Using Win32 API function LoadLibrary (We can skip RVA changing algorithms and bypass packers but you have to avare of viruses)
StreamLoader— Using namaged class System.IO.FileStream (Hav to calculate valid RVA's and can't read packed PE files)
MonitorFileChangeFalse — When updating a file on the hard disk, the file will be automatically updated in all open windows for displaying data from the current file
Type GetEntityType()— Return PEFile type
Object CreateEntityInstance(String filePath)— Create instance of PEFile type transfer as argument path to file.
String GetSearchObjects(String searchPath)— Returns files array with extension *.dll, *.exe from searchPath filder.
The interface displays information on the following directories and titles
The names of structures and enumerated types correspond to the names in the standard C++ header file that describes the PE format. Below, in part, are the supported structures.