@@ -9,6 +9,7 @@ of the unloaded target module.
9
9
10
10
## Usage
11
11
12
+ 1 . The build environment is Visual Studio 2017.
12
13
1 . Add ` ReflectiveUnloader.c \ ReflectiveUnloader.h ` to the desired project.
13
14
Once added, call ` ReflectiveUnloader() ` with a handle to the module to unload
14
15
and reconstruct.
@@ -28,8 +29,8 @@ original contents to the writable sections.
28
29
29
30
If the ` .restore ` section is not present, the unloader will simply skip this
30
31
step. This allows the unloader to perform the same task for arbitrary unpatched
31
- PE files, however ** any modifications to segments made at runtime will be present
32
- in the unloaded PE file** .
32
+ PE files, however ** any modifications to segments made at runtime will be
33
+ present in the unloaded PE file** .
33
34
34
35
#### Visual Studio Build Event
35
36
The ` pe_patch.py ` script can be executed automatically for every build using a
@@ -78,6 +79,22 @@ VOID ReflectiveUnloaderFree(
78
79
* dwSize* \[ in\]
79
80
> Size of the blob returned by ReflectiveUnloader
80
81
82
+ ## Proof of Concept
83
+ The proof of concept included in the project is the ` Main.c ` file. This can be
84
+ compiled into a ` ReflectiveUnloader.dll ` which is compartible with
85
+ [ Reflective DLL Injection] [ 1 ] . The resulting executable can then be injected
86
+ into an arbitrary process (assuming premissions and architecture constraints are
87
+ met) with the [ inject.exe] [ 4 ] utility. Take note of the hash of the DLL file
88
+ before proceeding. See the [ releases page] [ 5 ] for pre-built binaries.
89
+
90
+ Once the DLL is injected into a process, it will display a message box. This is
91
+ used to present the user with an opportunity to delete the original DLL from
92
+ disk. After the message box is closed, a new and identical copy will be written
93
+ to ` %USERPROFILE%\\Desktop\\ReflectiveUnloader.dll ` .
94
+
95
+ Finally the user can compare the hashes of the two files to determine that they
96
+ are identical.
97
+
81
98
## License
82
99
This project is released under the BSD 3-clause license, for more details see
83
100
the [ LICENSE] [ license-url ] file.
@@ -90,4 +107,6 @@ the [LICENSE][license-url] file.
90
107
[ 1 ] : https://github.com/stephenfewer/ReflectiveDLLInjection
91
108
[ 2 ] : https://msdn.microsoft.com/en-us/library/windows/desktop/ms683199(v=vs.85).aspx
92
109
[ 3 ] : https://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspx
110
+ [ 4 ] : https://github.com/stephenfewer/ReflectiveDLLInjection/tree/master/bin
111
+ [ 5 ] : https://github.com/zeroSteiner/reflective-unloader/releases
93
112
[ license-url ] : https://github.com/zeroSteiner/reflective-unloader/blob/master/LICENSE
0 commit comments