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: View→Executables→PE/CLI View
Plugin can read PE files with two options:
Win32Loader
— Using Win32 API function LoadLibraryStreamLoader
— Using managed class System.IO.FileStreamYou can open PE file using several options:
MaxArrayDisplay
10 — Mar array length that will be displayedShowAsHexValue
False — Display digits as decimal or hexadecimal.ShowBaseMetaTables
False — Display base tables in dynamic structures instead of strongly typed ones (Closer to binary file type).Loader
StreamLoader — 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)MonitorFileChange
False — When updating a file on the hard disk, the file will be automatically updated in all open windows for displaying data from the current fileType GetEntityType()
— Return PEFile typeObject 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.