├── .gitattributes
├── .gitignore
├── .gitmodules
├── README.md
├── WinHideEx.sln
├── WinHideEx
├── WinHideEx.vcxproj
├── WinHideEx.vcxproj.filters
├── dllmain.cpp
├── framework.h
├── pch.cpp
└── pch.h
├── WinHideExGUI
├── App.config
├── CustomApplicationContext.cs
├── MainForm.Designer.cs
├── MainForm.cs
├── MainForm.resx
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Resources
│ └── AppIcon.ico
├── WinHideEx.ico
├── WinHideExGUI.csproj
└── packages.config
└── WinHideExInstaller
└── WinHideExInstaller.vdproj
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Oo]ut/
33 | [Ll]og/
34 | [Ll]ogs/
35 |
36 | # Visual Studio 2015/2017 cache/options directory
37 | .vs/
38 | # Uncomment if you have tasks that create the project's static files in wwwroot
39 | #wwwroot/
40 |
41 | # Visual Studio 2017 auto generated files
42 | Generated\ Files/
43 |
44 | # MSTest test Results
45 | [Tt]est[Rr]esult*/
46 | [Bb]uild[Ll]og.*
47 |
48 | # NUnit
49 | *.VisualState.xml
50 | TestResult.xml
51 | nunit-*.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # Benchmark Results
59 | BenchmarkDotNet.Artifacts/
60 |
61 | # .NET Core
62 | project.lock.json
63 | project.fragment.lock.json
64 | artifacts/
65 |
66 | # ASP.NET Scaffolding
67 | ScaffoldingReadMe.txt
68 |
69 | # StyleCop
70 | StyleCopReport.xml
71 |
72 | # Files built by Visual Studio
73 | *_i.c
74 | *_p.c
75 | *_h.h
76 | *.ilk
77 | *.meta
78 | *.obj
79 | *.iobj
80 | *.pch
81 | *.pdb
82 | *.ipdb
83 | *.pgc
84 | *.pgd
85 | *.rsp
86 | *.sbr
87 | *.tlb
88 | *.tli
89 | *.tlh
90 | *.tmp
91 | *.tmp_proj
92 | *_wpftmp.csproj
93 | *.log
94 | *.vspscc
95 | *.vssscc
96 | .builds
97 | *.pidb
98 | *.svclog
99 | *.scc
100 |
101 | # Chutzpah Test files
102 | _Chutzpah*
103 |
104 | # Visual C++ cache files
105 | ipch/
106 | *.aps
107 | *.ncb
108 | *.opendb
109 | *.opensdf
110 | *.sdf
111 | *.cachefile
112 | *.VC.db
113 | *.VC.VC.opendb
114 |
115 | # Visual Studio profiler
116 | *.psess
117 | *.vsp
118 | *.vspx
119 | *.sap
120 |
121 | # Visual Studio Trace Files
122 | *.e2e
123 |
124 | # TFS 2012 Local Workspace
125 | $tf/
126 |
127 | # Guidance Automation Toolkit
128 | *.gpState
129 |
130 | # ReSharper is a .NET coding add-in
131 | _ReSharper*/
132 | *.[Rr]e[Ss]harper
133 | *.DotSettings.user
134 |
135 | # TeamCity is a build add-in
136 | _TeamCity*
137 |
138 | # DotCover is a Code Coverage Tool
139 | *.dotCover
140 |
141 | # AxoCover is a Code Coverage Tool
142 | .axoCover/*
143 | !.axoCover/settings.json
144 |
145 | # Coverlet is a free, cross platform Code Coverage Tool
146 | coverage*.json
147 | coverage*.xml
148 | coverage*.info
149 |
150 | # Visual Studio code coverage results
151 | *.coverage
152 | *.coveragexml
153 |
154 | # NCrunch
155 | _NCrunch_*
156 | .*crunch*.local.xml
157 | nCrunchTemp_*
158 |
159 | # MightyMoose
160 | *.mm.*
161 | AutoTest.Net/
162 |
163 | # Web workbench (sass)
164 | .sass-cache/
165 |
166 | # Installshield output folder
167 | [Ee]xpress/
168 |
169 | # DocProject is a documentation generator add-in
170 | DocProject/buildhelp/
171 | DocProject/Help/*.HxT
172 | DocProject/Help/*.HxC
173 | DocProject/Help/*.hhc
174 | DocProject/Help/*.hhk
175 | DocProject/Help/*.hhp
176 | DocProject/Help/Html2
177 | DocProject/Help/html
178 |
179 | # Click-Once directory
180 | publish/
181 |
182 | # Publish Web Output
183 | *.[Pp]ublish.xml
184 | *.azurePubxml
185 | # Note: Comment the next line if you want to checkin your web deploy settings,
186 | # but database connection strings (with potential passwords) will be unencrypted
187 | *.pubxml
188 | *.publishproj
189 |
190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
191 | # checkin your Azure Web App publish settings, but sensitive information contained
192 | # in these scripts will be unencrypted
193 | PublishScripts/
194 |
195 | # NuGet Packages
196 | *.nupkg
197 | # NuGet Symbol Packages
198 | *.snupkg
199 | # The packages folder can be ignored because of Package Restore
200 | **/[Pp]ackages/*
201 | # except build/, which is used as an MSBuild target.
202 | !**/[Pp]ackages/build/
203 | # Uncomment if necessary however generally it will be regenerated when needed
204 | #!**/[Pp]ackages/repositories.config
205 | # NuGet v3's project.json files produces more ignorable files
206 | *.nuget.props
207 | *.nuget.targets
208 |
209 | # Microsoft Azure Build Output
210 | csx/
211 | *.build.csdef
212 |
213 | # Microsoft Azure Emulator
214 | ecf/
215 | rcf/
216 |
217 | # Windows Store app package directories and files
218 | AppPackages/
219 | BundleArtifacts/
220 | Package.StoreAssociation.xml
221 | _pkginfo.txt
222 | *.appx
223 | *.appxbundle
224 | *.appxupload
225 |
226 | # Visual Studio cache files
227 | # files ending in .cache can be ignored
228 | *.[Cc]ache
229 | # but keep track of directories ending in .cache
230 | !?*.[Cc]ache/
231 |
232 | # Others
233 | ClientBin/
234 | ~$*
235 | *~
236 | *.dbmdl
237 | *.dbproj.schemaview
238 | *.jfm
239 | *.pfx
240 | *.publishsettings
241 | orleans.codegen.cs
242 |
243 | # Including strong name files can present a security risk
244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
245 | #*.snk
246 |
247 | # Since there are multiple workflows, uncomment next line to ignore bower_components
248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
249 | #bower_components/
250 |
251 | # RIA/Silverlight projects
252 | Generated_Code/
253 |
254 | # Backup & report files from converting an old project file
255 | # to a newer Visual Studio version. Backup files are not needed,
256 | # because we have git ;-)
257 | _UpgradeReport_Files/
258 | Backup*/
259 | UpgradeLog*.XML
260 | UpgradeLog*.htm
261 | ServiceFabricBackup/
262 | *.rptproj.bak
263 |
264 | # SQL Server files
265 | *.mdf
266 | *.ldf
267 | *.ndf
268 |
269 | # Business Intelligence projects
270 | *.rdl.data
271 | *.bim.layout
272 | *.bim_*.settings
273 | *.rptproj.rsuser
274 | *- [Bb]ackup.rdl
275 | *- [Bb]ackup ([0-9]).rdl
276 | *- [Bb]ackup ([0-9][0-9]).rdl
277 |
278 | # Microsoft Fakes
279 | FakesAssemblies/
280 |
281 | # GhostDoc plugin setting file
282 | *.GhostDoc.xml
283 |
284 | # Node.js Tools for Visual Studio
285 | .ntvs_analysis.dat
286 | node_modules/
287 |
288 | # Visual Studio 6 build log
289 | *.plg
290 |
291 | # Visual Studio 6 workspace options file
292 | *.opt
293 |
294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
295 | *.vbw
296 |
297 | # Visual Studio LightSwitch build output
298 | **/*.HTMLClient/GeneratedArtifacts
299 | **/*.DesktopClient/GeneratedArtifacts
300 | **/*.DesktopClient/ModelManifest.xml
301 | **/*.Server/GeneratedArtifacts
302 | **/*.Server/ModelManifest.xml
303 | _Pvt_Extensions
304 |
305 | # Paket dependency manager
306 | .paket/paket.exe
307 | paket-files/
308 |
309 | # FAKE - F# Make
310 | .fake/
311 |
312 | # CodeRush personal settings
313 | .cr/personal
314 |
315 | # Python Tools for Visual Studio (PTVS)
316 | __pycache__/
317 | *.pyc
318 |
319 | # Cake - Uncomment if you are using it
320 | # tools/**
321 | # !tools/packages.config
322 |
323 | # Tabs Studio
324 | *.tss
325 |
326 | # Telerik's JustMock configuration file
327 | *.jmconfig
328 |
329 | # BizTalk build output
330 | *.btp.cs
331 | *.btm.cs
332 | *.odx.cs
333 | *.xsd.cs
334 |
335 | # OpenCover UI analysis results
336 | OpenCover/
337 |
338 | # Azure Stream Analytics local run output
339 | ASALocalRun/
340 |
341 | # MSBuild Binary and Structured Log
342 | *.binlog
343 |
344 | # NVidia Nsight GPU debugger configuration file
345 | *.nvuser
346 |
347 | # MFractors (Xamarin productivity tool) working folder
348 | .mfractor/
349 |
350 | # Local History for Visual Studio
351 | .localhistory/
352 |
353 | # BeatPulse healthcheck temp database
354 | healthchecksdb
355 |
356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
357 | MigrationBackup/
358 |
359 | # Ionide (cross platform F# VS Code tools) working folder
360 | .ionide/
361 |
362 | # Fody - auto-generated XML schema
363 | FodyWeavers.xsd
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "Detours"]
2 | path = Detours
3 | url = https://github.com/microsoft/Detours
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # WinHideEx (Windows Hider Extended)
2 | _"Hide all of those pesky unwanted files and folders using DLL injection!"_
3 |
4 | ## What is this?
5 | WinHideEx is a piece of software designed to hide pesky, cluttery, or otherwise unwanted files and directories automatically by hooking NtQueryDirectoryFile(Ex)
6 | system calls. It does this through remote DLL injection (managed by WinHideEx GUI) and API hooking using [Microsoft Detours](https://github.com/microsoft/Detours).
7 |
8 | With WinHideEx you can hide whatever files and folders you wish, so long as the target application has been injected at some point by the provided injector service.
9 | Simply load the management GUI from the toolbar, add the programs you wish to hide files/directories from (for example, I have added Windows Explorer and Command
10 | Prompt), create a "hider" regex to match those unsightly inodes (example: "\\..*" will hide all files and folders beginning with a dot), and finally click save! The
11 | service will continuously monitor the process list for any new matching program instances and magically patch them as well. It's simple!
12 |
13 | ## Why?
14 | Because I hated having tons of gross dotfiles visible all over my home directory. Windows explorer doesn't have an option to hide them, so I took matters into my own
15 | hands. Yes, I'm _aware_ that you can manually mark all of them with the "hidden" attribute but it's like playing NTFS whack-a-mole with a filesystem watcher script.
16 | This way feels much more elegant, extendable, and granular. Plus, it was a lot of fun to write over the weekend and put my malware analysis knowledge to good use!
17 | Who knows, maybe you'll learn a thing or two about thunking the Windows native API after browsing through this mess of a codebase.
18 |
19 | ## Wait? I have to inject into *EVERY* process? Why not just write a VFS filter driver to hide files?
20 | Ok, admittedly the requirement of force-injecting strange WinHideEx$ARCH.dll files into system processes sounds a bit asinine. Honestly, that's because it is.
21 | I put a lot of care into making my API hooking logic as safe and bug-free as 2 days worth of half-assed effort allowed. So yes, I admit it, after basic brainstorming
22 | I too came to the easy conclusion that writing a filter driver is, in fact, the "correct" way of doing things. But distributing a filter driver isn't easy. In fact,
23 | Microsoft makes it downright hard to release unsigned drivers to the masses. Even userspace drivers. Driver signing requires both time and lots of money. And,
24 | honestly, I have neither. So if you want to take on this task and pay an arm and a leg for a code signing certificate I say best of luck to you bold adventurer!
25 |
26 | ## Installation
27 | I'm a nice fellow, so I put compiled builds and a fancy installer over at [the releases page](https://github.com/joshumax/WinHideEx/releases/). Feel free to try it
28 | out on your machine and report any bugs. The GUI is admittedly basic, but it should be generally self-explainatory. Please note that if something explodes and
29 | kills your cat, I am in no way liable for the destruction it causes. This is basically one giant hack; you have been warned.
30 |
31 | ## Contributing
32 | If you feel like contributing to this chaos, feel free to send a pull request or open up an issue. I don't bite. Perhaps you might want to start by expanding this
33 | README?
34 |
--------------------------------------------------------------------------------
/WinHideEx.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.31129.286
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinHideEx", "WinHideEx\WinHideEx.vcxproj", "{8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinHideExGUI", "WinHideExGUI\WinHideExGUI.csproj", "{2C29A8A9-DEFC-4559-8920-D5283055BF1B}"
9 | EndProject
10 | Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "WinHideExInstaller", "WinHideExInstaller\WinHideExInstaller.vdproj", "{2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | All|Any CPU = All|Any CPU
15 | All|ARM = All|ARM
16 | All|ARM64 = All|ARM64
17 | All|x64 = All|x64
18 | All|x86 = All|x86
19 | Debug|Any CPU = Debug|Any CPU
20 | Debug|ARM = Debug|ARM
21 | Debug|ARM64 = Debug|ARM64
22 | Debug|x64 = Debug|x64
23 | Debug|x86 = Debug|x86
24 | DebugMDd|Any CPU = DebugMDd|Any CPU
25 | DebugMDd|ARM = DebugMDd|ARM
26 | DebugMDd|ARM64 = DebugMDd|ARM64
27 | DebugMDd|x64 = DebugMDd|x64
28 | DebugMDd|x86 = DebugMDd|x86
29 | Release|Any CPU = Release|Any CPU
30 | Release|ARM = Release|ARM
31 | Release|ARM64 = Release|ARM64
32 | Release|x64 = Release|x64
33 | Release|x86 = Release|x86
34 | ReleaseMD|Any CPU = ReleaseMD|Any CPU
35 | ReleaseMD|ARM = ReleaseMD|ARM
36 | ReleaseMD|ARM64 = ReleaseMD|ARM64
37 | ReleaseMD|x64 = ReleaseMD|x64
38 | ReleaseMD|x86 = ReleaseMD|x86
39 | EndGlobalSection
40 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
41 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|Any CPU.ActiveCfg = Release|Win32
42 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|Any CPU.Build.0 = Release|Win32
43 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|ARM.ActiveCfg = Release|Win32
44 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|ARM.Build.0 = Release|Win32
45 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|ARM64.ActiveCfg = Release|Win32
46 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|ARM64.Build.0 = Release|Win32
47 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|x64.ActiveCfg = Release|x64
48 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|x64.Build.0 = Release|x64
49 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|x86.ActiveCfg = Release|Win32
50 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.All|x86.Build.0 = Release|Win32
51 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Debug|Any CPU.ActiveCfg = Debug|Win32
52 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Debug|ARM.ActiveCfg = Debug|Win32
53 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Debug|ARM64.ActiveCfg = Debug|Win32
54 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Debug|x64.ActiveCfg = Debug|x64
55 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Debug|x64.Build.0 = Debug|x64
56 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Debug|x86.ActiveCfg = Debug|Win32
57 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Debug|x86.Build.0 = Debug|Win32
58 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|Any CPU.ActiveCfg = Release|x64
59 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|Any CPU.Build.0 = Release|x64
60 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|ARM.ActiveCfg = Release|Win32
61 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|ARM.Build.0 = Release|Win32
62 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|ARM64.ActiveCfg = Release|Win32
63 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|ARM64.Build.0 = Release|Win32
64 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|x64.ActiveCfg = Debug|x64
65 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|x64.Build.0 = Debug|x64
66 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|x86.ActiveCfg = Debug|Win32
67 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.DebugMDd|x86.Build.0 = Debug|Win32
68 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Release|Any CPU.ActiveCfg = Release|Win32
69 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Release|Any CPU.Build.0 = Release|Win32
70 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Release|ARM.ActiveCfg = Release|Win32
71 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Release|ARM64.ActiveCfg = Release|Win32
72 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Release|x64.ActiveCfg = Release|x64
73 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Release|x64.Build.0 = Release|x64
74 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Release|x86.ActiveCfg = Release|Win32
75 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.Release|x86.Build.0 = Release|Win32
76 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|Any CPU.ActiveCfg = Release|x64
77 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|Any CPU.Build.0 = Release|x64
78 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|ARM.ActiveCfg = Release|Win32
79 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|ARM.Build.0 = Release|Win32
80 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|ARM64.ActiveCfg = Release|Win32
81 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|ARM64.Build.0 = Release|Win32
82 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|x64.ActiveCfg = Release|x64
83 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|x64.Build.0 = Release|x64
84 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|x86.ActiveCfg = Release|Win32
85 | {8571D9F4-B21B-43A9-8FD9-F2EEB3B1071B}.ReleaseMD|x86.Build.0 = Release|Win32
86 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|Any CPU.ActiveCfg = Release|Any CPU
87 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|Any CPU.Build.0 = Release|Any CPU
88 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|ARM.ActiveCfg = Release|Any CPU
89 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|ARM.Build.0 = Release|Any CPU
90 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|ARM64.ActiveCfg = Release|Any CPU
91 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|ARM64.Build.0 = Release|Any CPU
92 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|x64.ActiveCfg = Release|Any CPU
93 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|x64.Build.0 = Release|Any CPU
94 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|x86.ActiveCfg = Release|Any CPU
95 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.All|x86.Build.0 = Release|Any CPU
96 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
97 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
98 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|ARM.ActiveCfg = Debug|Any CPU
99 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|ARM.Build.0 = Debug|Any CPU
100 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|ARM64.ActiveCfg = Debug|Any CPU
101 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|ARM64.Build.0 = Debug|Any CPU
102 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|x64.ActiveCfg = Debug|Any CPU
103 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|x64.Build.0 = Debug|Any CPU
104 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|x86.ActiveCfg = Debug|Any CPU
105 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Debug|x86.Build.0 = Debug|Any CPU
106 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|Any CPU.ActiveCfg = Debug|Any CPU
107 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|Any CPU.Build.0 = Debug|Any CPU
108 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|ARM.ActiveCfg = Debug|Any CPU
109 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|ARM.Build.0 = Debug|Any CPU
110 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|ARM64.ActiveCfg = Debug|Any CPU
111 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|ARM64.Build.0 = Debug|Any CPU
112 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|x64.ActiveCfg = Debug|Any CPU
113 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|x64.Build.0 = Debug|Any CPU
114 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|x86.ActiveCfg = Debug|Any CPU
115 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.DebugMDd|x86.Build.0 = Debug|Any CPU
116 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
117 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|Any CPU.Build.0 = Release|Any CPU
118 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|ARM.ActiveCfg = Release|Any CPU
119 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|ARM.Build.0 = Release|Any CPU
120 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|ARM64.ActiveCfg = Release|Any CPU
121 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|ARM64.Build.0 = Release|Any CPU
122 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|x64.ActiveCfg = Release|Any CPU
123 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|x64.Build.0 = Release|Any CPU
124 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|x86.ActiveCfg = Release|Any CPU
125 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.Release|x86.Build.0 = Release|Any CPU
126 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|Any CPU.ActiveCfg = Release|Any CPU
127 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|Any CPU.Build.0 = Release|Any CPU
128 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|ARM.ActiveCfg = Release|Any CPU
129 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|ARM.Build.0 = Release|Any CPU
130 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|ARM64.ActiveCfg = Release|Any CPU
131 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|ARM64.Build.0 = Release|Any CPU
132 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|x64.ActiveCfg = Release|Any CPU
133 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|x64.Build.0 = Release|Any CPU
134 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|x86.ActiveCfg = Release|Any CPU
135 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}.ReleaseMD|x86.Build.0 = Release|Any CPU
136 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.All|Any CPU.ActiveCfg = Debug
137 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.All|ARM.ActiveCfg = Debug
138 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.All|ARM64.ActiveCfg = Debug
139 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.All|x64.ActiveCfg = Debug
140 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.All|x86.ActiveCfg = Debug
141 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Debug|Any CPU.ActiveCfg = Debug
142 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Debug|ARM.ActiveCfg = Debug
143 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Debug|ARM64.ActiveCfg = Debug
144 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Debug|x64.ActiveCfg = Debug
145 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Debug|x86.ActiveCfg = Debug
146 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.DebugMDd|Any CPU.ActiveCfg = Debug
147 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.DebugMDd|ARM.ActiveCfg = Debug
148 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.DebugMDd|ARM64.ActiveCfg = Debug
149 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.DebugMDd|x64.ActiveCfg = Debug
150 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.DebugMDd|x86.ActiveCfg = Debug
151 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Release|Any CPU.ActiveCfg = Release
152 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Release|ARM.ActiveCfg = Release
153 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Release|ARM64.ActiveCfg = Release
154 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Release|x64.ActiveCfg = Release
155 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.Release|x86.ActiveCfg = Release
156 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.ReleaseMD|Any CPU.ActiveCfg = Release
157 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.ReleaseMD|ARM.ActiveCfg = Release
158 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.ReleaseMD|ARM64.ActiveCfg = Release
159 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.ReleaseMD|x64.ActiveCfg = Release
160 | {2BEB7EDB-7B6C-4B46-943F-0E0BEF4FD718}.ReleaseMD|x86.ActiveCfg = Release
161 | EndGlobalSection
162 | GlobalSection(SolutionProperties) = preSolution
163 | HideSolutionNode = FALSE
164 | EndGlobalSection
165 | GlobalSection(ExtensibilityGlobals) = postSolution
166 | SolutionGuid = {93C510BD-A493-4960-8B68-C94C09655A15}
167 | EndGlobalSection
168 | EndGlobal
169 |
--------------------------------------------------------------------------------
/WinHideEx/WinHideEx.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 | Debug
14 | x64
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 |
22 | 16.0
23 | Win32Proj
24 | {8571d9f4-b21b-43a9-8fd9-f2eeb3b1071b}
25 | WinHideEx
26 | 10.0
27 |
28 |
29 |
30 | DynamicLibrary
31 | true
32 | v142
33 | Unicode
34 |
35 |
36 | DynamicLibrary
37 | false
38 | v142
39 | true
40 | Unicode
41 |
42 |
43 | DynamicLibrary
44 | true
45 | v142
46 | Unicode
47 |
48 |
49 | DynamicLibrary
50 | false
51 | v142
52 | true
53 | Unicode
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | true
75 | ../Detours/lib.X86;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86)
76 | $(ProjectName)$(PlatformArchitecture)
77 |
78 |
79 | false
80 | ../Detours/lib.X86;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86)
81 | $(ProjectName)$(PlatformArchitecture)
82 |
83 |
84 | true
85 | ../Detours/lib.X64;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)
86 | $(ProjectName)$(PlatformArchitecture)
87 |
88 |
89 | false
90 | ../Detours/lib.X64;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)
91 | $(ProjectName)$(PlatformArchitecture)
92 |
93 |
94 |
95 | Level3
96 | true
97 | WIN32;_DEBUG;WINHIDEEX_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
98 | true
99 | Use
100 | pch.h
101 |
102 |
103 | Windows
104 | true
105 | false
106 | ntdll.lib;detours.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
107 | /export:DetourFinishHelperProcess,@1,NONAME %(AdditionalOptions)
108 |
109 |
110 |
111 |
112 | Level3
113 | true
114 | true
115 | true
116 | WIN32;NDEBUG;WINHIDEEX_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
117 | true
118 | Use
119 | pch.h
120 |
121 |
122 | Windows
123 | true
124 | true
125 | true
126 | false
127 | ntdll.lib;detours.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
128 | /export:DetourFinishHelperProcess,@1,NONAME %(AdditionalOptions)
129 |
130 |
131 |
132 |
133 | Level3
134 | true
135 | _DEBUG;WINHIDEEX_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
136 | true
137 | Use
138 | pch.h
139 |
140 |
141 | Windows
142 | true
143 | false
144 | ntdll.lib;detours.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
145 | /export:DetourFinishHelperProcess,@1,NONAME %(AdditionalOptions)
146 |
147 |
148 |
149 |
150 | Level3
151 | true
152 | true
153 | true
154 | NDEBUG;WINHIDEEX_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
155 | true
156 | Use
157 | pch.h
158 |
159 |
160 | Windows
161 | true
162 | true
163 | true
164 | false
165 | ntdll.lib;detours.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
166 | /export:DetourFinishHelperProcess,@1,NONAME %(AdditionalOptions)
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 | Create
177 | Create
178 | Create
179 | Create
180 |
181 |
182 |
183 |
184 |
185 |
--------------------------------------------------------------------------------
/WinHideEx/WinHideEx.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Header Files
20 |
21 |
22 | Header Files
23 |
24 |
25 |
26 |
27 | Source Files
28 |
29 |
30 | Source Files
31 |
32 |
33 |
--------------------------------------------------------------------------------
/WinHideEx/dllmain.cpp:
--------------------------------------------------------------------------------
1 | // dllmain.cpp : Defines the entry point for the DLL application.
2 | // Copyright (C) 2022 Josh Max - See LICENSE for details.
3 | #include "pch.h"
4 |
5 | #include
6 | #include
7 | #include
8 | #include "../Detours/include/detours.h"
9 |
10 | // Debug tracing
11 | //#define DEBUG_TRACE
12 |
13 | // Native API function prototypes
14 | typedef LONG NTSTATUS;
15 | #define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
16 |
17 | // Registry definitions
18 | constexpr PCWSTR REG_SUBKEY_NAME = L"SOFTWARE\\WinHideEx";
19 | constexpr PCWSTR REG_VALUE_NAME_ENABLED = L"HookSettings";
20 | constexpr PCWSTR REG_VALUE_NAME_REGEX = L"RegularExpression";
21 |
22 | typedef struct _IO_STATUS_BLOCK
23 | {
24 | NTSTATUS Status;
25 | ULONG Information;
26 | } IO_STATUS_BLOCK, * PIO_STATUS_BLOCK;
27 |
28 | typedef struct _UNICODE_STRING
29 | {
30 | USHORT Length;
31 | USHORT MaximumLength;
32 | PWSTR Buffer;
33 | } UNICODE_STRING, * PUNICODE_STRING;
34 |
35 | typedef struct _STRING
36 | {
37 | USHORT Length;
38 | USHORT MaximumLength;
39 | PCHAR Buffer;
40 | } ANSI_STRING, * PANSI_STRING;
41 |
42 | typedef enum class _FILE_INFORMATION_CLASS
43 | {
44 | FileDirectoryInformation = 1,
45 | FileFullDirectoryInformation, // 2
46 | FileBothDirectoryInformation, // 3
47 | FileBasicInformation, // 4
48 | FileStandardInformation, // 5
49 | FileInternalInformation, // 6
50 | FileEaInformation, // 7
51 | FileAccessInformation, // 8
52 | FileNameInformation, // 9
53 | FileRenameInformation, // 10
54 | FileLinkInformation, // 11
55 | FileNamesInformation, // 12
56 | FileDispositionInformation, // 13
57 | FilePositionInformation, // 14
58 | FileFullEaInformation, // 15
59 | FileModeInformation, // 16
60 | FileAlignmentInformation, // 17
61 | FileAllInformation, // 18
62 | FileAllocationInformation, // 19
63 | FileEndOfFileInformation, // 20
64 | FileAlternateNameInformation, // 21
65 | FileStreamInformation, // 22
66 | FilePipeInformation, // 23
67 | FilePipeLocalInformation, // 24
68 | FilePipeRemoteInformation, // 25
69 | FileMailslotQueryInformation, // 26
70 | FileMailslotSetInformation, // 27
71 | FileCompressionInformation, // 28
72 | FileObjectIdInformation, // 29
73 | FileCompletionInformation, // 30
74 | FileMoveClusterInformation, // 31
75 | FileQuotaInformation, // 32
76 | FileReparsePointInformation, // 33
77 | FileNetworkOpenInformation, // 34
78 | FileAttributeTagInformation, // 35
79 | FileTrackingInformation, // 36
80 | FileIdBothDirectoryInformation, // 37
81 | FileIdFullDirectoryInformation, // 38
82 | FileValidDataLengthInformation, // 39
83 | FileShortNameInformation, // 40
84 | FileIoCompletionNotificationInformation, // 41
85 | FileIoStatusBlockRangeInformation, // 42
86 | FileIoPriorityHintInformation, // 43
87 | FileSfioReserveInformation, // 44
88 | FileSfioVolumeInformation, // 45
89 | FileHardLinkInformation, // 46
90 | FileProcessIdsUsingFileInformation, // 47
91 | FileNormalizedNameInformation, // 48
92 | FileNetworkPhysicalNameInformation, // 49
93 | FileIdGlobalTxDirectoryInformation, // 50
94 | FileIsRemoteDeviceInformation, // 51
95 | FileUnusedInformation, // 52
96 | FileNumaNodeInformation, // 53
97 | FileStandardLinkInformation, // 54
98 | FileRemoteProtocolInformation, // 55
99 |
100 | FileRenameInformationBypassAccessCheck, // 56
101 | FileLinkInformationBypassAccessCheck, // 57
102 |
103 | FileVolumeNameInformation, // 58
104 | FileIdInformation, // 59
105 | FileIdExtdDirectoryInformation, // 60
106 | FileReplaceCompletionInformation, // 61
107 | FileHardLinkFullIdInformation, // 62
108 | FileIdExtdBothDirectoryInformation, // 63
109 | FileDispositionInformationEx, // 64
110 | FileRenameInformationEx, // 65
111 | FileRenameInformationExBypassAccessCheck, // 66
112 | FileDesiredStorageClassInformation, // 67
113 | FileStatInformation, // 68
114 | FileMemoryPartitionInformation, // 69
115 | FileStatLxInformation, // 70
116 | FileCaseSensitiveInformation, // 71
117 | FileLinkInformationEx, // 72
118 | FileLinkInformationExBypassAccessCheck, // 73
119 | FileStorageReserveIdInformation, // 74
120 | FileCaseSensitiveInformationForceAccessCheck, // 75
121 | FileKnownFolderInformation, // 76
122 |
123 | FileMaximumInformation
124 | } FILE_INFORMATION_CLASS, * PFILE_INFORMATION_CLASS;
125 |
126 | typedef struct _FILE_BOTH_DIRECTORY_INFORMATION
127 | {
128 | ULONG NextEntryOffset;
129 | ULONG FileIndex;
130 | LARGE_INTEGER CreationTime;
131 | LARGE_INTEGER LastAccessTime;
132 | LARGE_INTEGER LastWriteTime;
133 | LARGE_INTEGER ChangeTime;
134 | LARGE_INTEGER EndOfFile;
135 | LARGE_INTEGER AllocationSize;
136 | ULONG FileAttributes;
137 | ULONG FileNameLength;
138 | ULONG EaInformationLength;
139 | UCHAR AlternateNameLength;
140 | WCHAR AlternateName[12];
141 | WCHAR FileName[1];
142 | } FILE_BOTH_DIR_INFORMATION, * PFILE_BOTH_DIR_INFORMATION;
143 |
144 | typedef struct _FILE_DIRECTORY_INFORMATION
145 | {
146 | ULONG NextEntryOffset;
147 | ULONG FileIndex;
148 | LARGE_INTEGER CreationTime;
149 | LARGE_INTEGER LastAccessTime;
150 | LARGE_INTEGER LastWriteTime;
151 | LARGE_INTEGER ChangeTime;
152 | LARGE_INTEGER EndOfFile;
153 | LARGE_INTEGER AllocationSize;
154 | ULONG FileAttributes;
155 | ULONG FileNameLength;
156 | WCHAR FileName[1];
157 | } FILE_DIRECTORY_INFORMATION, * PFILE_DIRECTORY_INFORMATION;
158 |
159 |
160 | typedef struct _FILE_FULL_DIR_INFORMATION
161 | {
162 | ULONG NextEntryOffset;
163 | ULONG FileIndex;
164 | LARGE_INTEGER CreationTime;
165 | LARGE_INTEGER LastAccessTime;
166 | LARGE_INTEGER LastWriteTime;
167 | LARGE_INTEGER ChangeTime;
168 | LARGE_INTEGER EndOfFile;
169 | LARGE_INTEGER AllocationSize;
170 | ULONG FileAttributes;
171 | ULONG FileNameLength;
172 | ULONG EaSize;
173 | WCHAR FileName[1];
174 | } FILE_FULL_DIR_INFORMATION, * PFILE_FULL_DIR_INFORMATION;
175 |
176 | typedef struct _FILE_ID_FULL_DIR_INFORMATION
177 | {
178 | ULONG NextEntryOffset;
179 | ULONG FileIndex;
180 | LARGE_INTEGER CreationTime;
181 | LARGE_INTEGER LastAccessTime;
182 | LARGE_INTEGER LastWriteTime;
183 | LARGE_INTEGER ChangeTime;
184 | LARGE_INTEGER EndOfFile;
185 | LARGE_INTEGER AllocationSize;
186 | ULONG FileAttributes;
187 | ULONG FileNameLength;
188 | ULONG EaSize;
189 | LARGE_INTEGER FileId;
190 | WCHAR FileName[1];
191 | } FILE_ID_FULL_DIR_INFORMATION, * PFILE_ID_FULL_DIR_INFORMATION;
192 |
193 | typedef struct _FILE_ID_BOTH_DIR_INFORMATION
194 | {
195 | ULONG NextEntryOffset;
196 | ULONG FileIndex;
197 | LARGE_INTEGER CreationTime;
198 | LARGE_INTEGER LastAccessTime;
199 | LARGE_INTEGER LastWriteTime;
200 | LARGE_INTEGER ChangeTime;
201 | LARGE_INTEGER EndOfFile;
202 | LARGE_INTEGER AllocationSize;
203 | ULONG FileAttributes;
204 | ULONG FileNameLength;
205 | ULONG EaSize;
206 | CCHAR ShortNameLength;
207 | WCHAR ShortName[12];
208 | LARGE_INTEGER FileId;
209 | WCHAR FileName[1];
210 | } FILE_ID_BOTH_DIR_INFORMATION, * PFILE_ID_BOTH_DIR_INFORMATION;
211 |
212 | typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
213 | ULONG NextEntryOffset;
214 | ULONG FileIndex;
215 | LARGE_INTEGER CreationTime;
216 | LARGE_INTEGER LastAccessTime;
217 | LARGE_INTEGER LastWriteTime;
218 | LARGE_INTEGER ChangeTime;
219 | LARGE_INTEGER EndOfFile;
220 | LARGE_INTEGER AllocationSize;
221 | ULONG FileAttributes;
222 | ULONG FileNameLength;
223 | LARGE_INTEGER FileId;
224 | GUID LockingTransactionId;
225 | ULONG TxInfoFlags;
226 | WCHAR FileName[1];
227 | } FILE_ID_GLOBAL_TX_DIR_INFORMATION, * PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
228 |
229 | typedef struct _FILE_ID_EXTD_DIR_INFORMATION {
230 | ULONG NextEntryOffset;
231 | ULONG FileIndex;
232 | LARGE_INTEGER CreationTime;
233 | LARGE_INTEGER LastAccessTime;
234 | LARGE_INTEGER LastWriteTime;
235 | LARGE_INTEGER ChangeTime;
236 | LARGE_INTEGER EndOfFile;
237 | LARGE_INTEGER AllocationSize;
238 | ULONG FileAttributes;
239 | ULONG FileNameLength;
240 | ULONG EaSize;
241 | ULONG ReparsePointTag;
242 | FILE_ID_128 FileId;
243 | WCHAR FileName[1];
244 | } FILE_ID_EXTD_DIR_INFORMATION, * PFILE_ID_EXTD_DIR_INFORMATION;
245 |
246 | typedef struct _FILE_ID_EXTD_BOTH_DIR_INFORMATION {
247 | ULONG NextEntryOffset;
248 | ULONG FileIndex;
249 | LARGE_INTEGER CreationTime;
250 | LARGE_INTEGER LastAccessTime;
251 | LARGE_INTEGER LastWriteTime;
252 | LARGE_INTEGER ChangeTime;
253 | LARGE_INTEGER EndOfFile;
254 | LARGE_INTEGER AllocationSize;
255 | ULONG FileAttributes;
256 | ULONG FileNameLength;
257 | ULONG EaSize;
258 | ULONG ReparsePointTag;
259 | FILE_ID_128 FileId;
260 | CCHAR ShortNameLength;
261 | WCHAR ShortName[12];
262 | WCHAR FileName[1];
263 | } FILE_ID_EXTD_BOTH_DIR_INFORMATION, * PFILE_ID_EXTD_BOTH_DIR_INFORMATION;
264 |
265 | typedef struct _FILE_NAMES_INFORMATION
266 | {
267 | ULONG NextEntryOffset;
268 | ULONG FileIndex;
269 | ULONG FileNameLength;
270 | WCHAR FileName[1];
271 | } FILE_NAMES_INFORMATION, * PFILE_NAMES_INFORMATION;
272 |
273 | typedef VOID(NTAPI* PIO_APC_ROUTINE)(
274 | IN PVOID ApcContext,
275 | IN PIO_STATUS_BLOCK IoStatusBlock,
276 | IN ULONG Reserved);
277 |
278 | typedef NTSTATUS(NTAPI* NtQueryDirectoryFile)(
279 | IN HANDLE FileHandle,
280 | IN HANDLE Event,
281 | IN PIO_APC_ROUTINE ApcRoutine,
282 | IN PVOID ApcContext,
283 | OUT PIO_STATUS_BLOCK IoStatusBlock,
284 | OUT PVOID FileInformation,
285 | IN ULONG Length,
286 | IN FILE_INFORMATION_CLASS FileInformationClass,
287 | IN BOOLEAN ReturnSingleEntry,
288 | IN PUNICODE_STRING FileName,
289 | IN BOOLEAN RestartScan);
290 |
291 | typedef NTSTATUS(NTAPI* NtQueryDirectoryFileEx)(
292 | IN HANDLE FileHandle,
293 | IN HANDLE Event,
294 | IN PIO_APC_ROUTINE ApcRoutine,
295 | IN PVOID ApcContext,
296 | OUT PIO_STATUS_BLOCK IoStatusBlock,
297 | OUT PVOID FileInformation,
298 | IN ULONG Length,
299 | IN FILE_INFORMATION_CLASS FileInformationClass,
300 | IN ULONG QueryFlags,
301 | IN PUNICODE_STRING FileName);
302 |
303 | // Handles to our original (unhooked) functions
304 | NtQueryDirectoryFile TrueNtQueryDirectoryFile = NULL;
305 | NtQueryDirectoryFileEx TrueNtQueryDirectoryFileEx = NULL;
306 |
307 | // Based on code from https://github.com/GiovanniDicanio/ReadStringsFromRegistry/
308 | std::wstring RegistryGetString(HKEY key, PCWSTR subKey, PCWSTR valueName)
309 | {
310 | DWORD keyType = 0;
311 | DWORD dataSize = 0;
312 | const DWORD flags = RRF_RT_REG_SZ; // Only read strings (REG_SZ)
313 | LONG result = RegGetValue(
314 | key,
315 | subKey,
316 | valueName,
317 | flags,
318 | &keyType,
319 | nullptr,
320 | &dataSize);
321 |
322 | if (result != ERROR_SUCCESS || keyType != REG_SZ)
323 | return L"";
324 |
325 | // Allocate a buffer to hold our registry data
326 | PWCHAR buf = (PWCHAR)malloc(dataSize);
327 |
328 | if (buf == NULL)
329 | return L"";
330 |
331 | result = RegGetValue(
332 | key,
333 | subKey,
334 | valueName,
335 | flags,
336 | nullptr,
337 | buf, // Write string in this destination buffer
338 | &dataSize);
339 |
340 | if (result != ERROR_SUCCESS)
341 | return L"";
342 |
343 | std::wstring res(buf);
344 | free(buf);
345 |
346 | return res;
347 | }
348 |
349 | BOOL RegexCompare(PWCHAR FileName, int NumCharacters)
350 | {
351 | std::wstring ws(FileName, FileName + NumCharacters);
352 | std::wstring regVal = RegistryGetString(HKEY_CURRENT_USER, REG_SUBKEY_NAME, REG_VALUE_NAME_REGEX);
353 |
354 | if (regVal.empty())
355 | return FALSE;
356 |
357 | return std::regex_match(ws, std::wregex(regVal));
358 | }
359 |
360 | template
361 | void CheckAndModifyMatchingDetails(fiType FileInformation)
362 | {
363 | // Check if the client is enabled
364 | if (RegistryGetString(HKEY_CURRENT_USER, REG_SUBKEY_NAME, REG_VALUE_NAME_ENABLED) != L"enabled")
365 | {
366 | #ifdef DEBUG_TRACE
367 | printf("CheckAndModifyMatchingDetails: disabled due to registry config\n");
368 | #endif // DEBUG_TRACE
369 |
370 | return;
371 | }
372 |
373 | // NextEntryOffset is the offset in bytes to the next FileInformation entry returned by the syscall
374 | // so we first convert the current address to a char* and perform pointer arithmetic. Next, we save
375 | // the old FileInformation pointer address and compare it to the new address to see if there are more entries
376 | for (fiType OldFileInformation = NULL; OldFileInformation != FileInformation;
377 | FileInformation = (fiType)((char*)FileInformation + FileInformation->NextEntryOffset))
378 | {
379 | // Save current pointer address
380 | OldFileInformation = FileInformation;
381 |
382 | // Ignore "." and ".."
383 | if (FileInformation->FileNameLength == 2 && !memcmp(FileInformation->FileName, L".", 2) ||
384 | FileInformation->FileNameLength == 4 && !memcmp(FileInformation->FileName, L"..", 4))
385 | continue;
386 |
387 | // Hide files if they match the loaded regular expression list
388 | if (RegexCompare(FileInformation->FileName, FileInformation->FileNameLength / sizeof(WCHAR)))
389 | FileInformation->FileAttributes |= FILE_ATTRIBUTE_HIDDEN;
390 | }
391 | }
392 |
393 | BOOL ModifyFileInformation(FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation)
394 | {
395 | #ifdef DEBUG_TRACE
396 | printf("ModifyFileInformation fiType = %d\n", FileInformationClass);
397 | #endif // DEBUG_TRACE
398 |
399 | switch (FileInformationClass)
400 | {
401 | case FILE_INFORMATION_CLASS::FileDirectoryInformation:
402 | CheckAndModifyMatchingDetails((PFILE_DIRECTORY_INFORMATION)FileInformation);
403 | break;
404 | case FILE_INFORMATION_CLASS::FileIdBothDirectoryInformation:
405 | CheckAndModifyMatchingDetails((PFILE_ID_BOTH_DIR_INFORMATION)FileInformation);
406 | break;
407 | case FILE_INFORMATION_CLASS::FileBothDirectoryInformation:
408 | CheckAndModifyMatchingDetails((PFILE_BOTH_DIR_INFORMATION)FileInformation);
409 | break;
410 | case FILE_INFORMATION_CLASS::FileIdFullDirectoryInformation:
411 | CheckAndModifyMatchingDetails((PFILE_ID_FULL_DIR_INFORMATION)FileInformation);
412 | break;
413 | case FILE_INFORMATION_CLASS::FileFullDirectoryInformation:
414 | CheckAndModifyMatchingDetails((PFILE_FULL_DIR_INFORMATION)FileInformation);
415 | break;
416 | case FILE_INFORMATION_CLASS::FileIdGlobalTxDirectoryInformation:
417 | CheckAndModifyMatchingDetails((PFILE_ID_GLOBAL_TX_DIR_INFORMATION)FileInformation);
418 | break;
419 | case FILE_INFORMATION_CLASS::FileIdExtdDirectoryInformation:
420 | CheckAndModifyMatchingDetails((PFILE_ID_EXTD_DIR_INFORMATION)FileInformation);
421 | break;
422 | case FILE_INFORMATION_CLASS::FileIdExtdBothDirectoryInformation:
423 | CheckAndModifyMatchingDetails((PFILE_ID_EXTD_BOTH_DIR_INFORMATION)FileInformation);
424 | break;
425 | default:
426 | #ifdef DEBUG_TRACE
427 | printf("Irgnored directory fiType = %d\n", FileInformationClass);
428 | #endif // DEBUG_TRACE
429 |
430 | return FALSE;
431 | }
432 |
433 | return TRUE;
434 | }
435 |
436 | NTSTATUS NTAPI NewNtQueryDirectoryFile(HANDLE FileHandle, HANDLE Event, PIO_APC_ROUTINE ApcRoutine,
437 | PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, PVOID FileInformation, ULONG Length,
438 | FILE_INFORMATION_CLASS FileInformationClass, BOOLEAN ReturnSingleEntry, PUNICODE_STRING FileName,
439 | BOOLEAN RestartScan)
440 | {
441 | #ifdef DEBUG_TRACE
442 | printf("Hooked NewNtQueryDirectoryFile\n");
443 | #endif // DEBUG_TRACE
444 |
445 | NTSTATUS ret = TrueNtQueryDirectoryFile(FileHandle, Event, ApcRoutine, ApcContext, IoStatusBlock, FileInformation, Length, FileInformationClass, ReturnSingleEntry, FileName, RestartScan);
446 |
447 | if (ret != STATUS_SUCCESS)
448 | return ret;
449 |
450 | // Modify NewNtQueryDirectoryFile file attributes
451 | ModifyFileInformation(FileInformationClass, FileInformation);
452 |
453 | return ret;
454 | }
455 |
456 | NTSTATUS NTAPI NewNtQueryDirectoryFileEx(HANDLE FileHandle, HANDLE Event, PIO_APC_ROUTINE ApcRoutine,
457 | PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, PVOID FileInformation, ULONG Length,
458 | FILE_INFORMATION_CLASS FileInformationClass, ULONG QueryFlags, PUNICODE_STRING FileName)
459 | {
460 | #ifdef DEBUG_TRACE
461 | printf("Hooked NewNtQueryDirectoryFileEx\n");
462 | #endif // DEBUG_TRACE
463 |
464 | NTSTATUS ret = TrueNtQueryDirectoryFileEx(FileHandle, Event, ApcRoutine, ApcContext, IoStatusBlock, FileInformation, Length, FileInformationClass, QueryFlags, FileName);
465 |
466 | if (ret != STATUS_SUCCESS)
467 | return ret;
468 |
469 | // Modify NewNtQueryDirectoryFileEx file attributes
470 | ModifyFileInformation(FileInformationClass, FileInformation);
471 |
472 | return ret;
473 | }
474 |
475 | BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved)
476 | {
477 | LONG error;
478 | (void)hinst;
479 | (void)reserved;
480 |
481 | if (DetourIsHelperProcess())
482 | return TRUE;
483 |
484 | if (dwReason == DLL_PROCESS_ATTACH)
485 | {
486 | DetourRestoreAfterWith();
487 |
488 | #ifdef DEBUG_TRACE
489 | printf("WinHideEx" DETOURS_STRINGIFY(DETOURS_BITS) ".dll: starting.\n");
490 | fflush(stdout);
491 | #endif // DEBUG_TRACE
492 |
493 | DetourTransactionBegin();
494 | DetourUpdateThread(GetCurrentThread());
495 |
496 | // Get our handle to the WinNT API DLL
497 | HMODULE hNtDLL = GetModuleHandle(L"ntdll.dll");
498 |
499 | if (hNtDLL == NULL)
500 | {
501 | #ifdef DEBUG_TRACE
502 | printf("Error detouring NtQueryDirectoryFile, could not get handle to ntdll!");
503 | #endif // DEBUG_TRACE
504 |
505 | return TRUE;
506 | }
507 |
508 | TrueNtQueryDirectoryFile = (NtQueryDirectoryFile)GetProcAddress(hNtDLL, "NtQueryDirectoryFile");
509 | TrueNtQueryDirectoryFileEx = (NtQueryDirectoryFileEx)GetProcAddress(hNtDLL, "NtQueryDirectoryFileEx");
510 |
511 | DetourAttach(&(PVOID&)TrueNtQueryDirectoryFile, NewNtQueryDirectoryFile);
512 | DetourAttach(&(PVOID&)TrueNtQueryDirectoryFileEx, NewNtQueryDirectoryFileEx);
513 | error = DetourTransactionCommit();
514 |
515 | #ifdef DEBUG_TRACE
516 | if (error == NO_ERROR)
517 | printf("WinHideEx" DETOURS_STRINGIFY(DETOURS_BITS) ".dll: detoured!\n");
518 | else
519 | printf("WinHideEx" DETOURS_STRINGIFY(DETOURS_BITS) ".dll: error detouring: %ld\n", error);
520 | #endif // DEBUG_TRACE
521 | }
522 | else if (dwReason == DLL_PROCESS_DETACH)
523 | {
524 | DetourTransactionBegin();
525 | DetourUpdateThread(GetCurrentThread());
526 | DetourDetach(&(PVOID&)TrueNtQueryDirectoryFile, NewNtQueryDirectoryFile);
527 | DetourDetach(&(PVOID&)TrueNtQueryDirectoryFileEx, NewNtQueryDirectoryFileEx);
528 | error = DetourTransactionCommit();
529 |
530 | #ifdef DEBUG_TRACE
531 | printf("WinHideEx" DETOURS_STRINGIFY(DETOURS_BITS) ".dll: removed (result=%ld).\n", error);
532 | fflush(stdout);
533 | #endif // DEBUG_TRACE
534 | }
535 |
536 | return TRUE;
537 | }
--------------------------------------------------------------------------------
/WinHideEx/framework.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
4 | // Windows Header Files
5 | #include
6 |
--------------------------------------------------------------------------------
/WinHideEx/pch.cpp:
--------------------------------------------------------------------------------
1 | // pch.cpp: source file corresponding to the pre-compiled header
2 |
3 | #include "pch.h"
4 |
5 | // When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
6 |
--------------------------------------------------------------------------------
/WinHideEx/pch.h:
--------------------------------------------------------------------------------
1 | // pch.h: This is a precompiled header file.
2 | // Files listed below are compiled only once, improving build performance for future builds.
3 | // This also affects IntelliSense performance, including code completion and many code browsing features.
4 | // However, files listed here are ALL re-compiled if any one of them is updated between builds.
5 | // Do not add files here that you will be updating frequently as this negates the performance advantage.
6 |
7 | #ifndef PCH_H
8 | #define PCH_H
9 |
10 | // add headers that you want to pre-compile here
11 | #include "framework.h"
12 |
13 | #endif //PCH_H
14 |
--------------------------------------------------------------------------------
/WinHideExGUI/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/WinHideExGUI/CustomApplicationContext.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows.Forms;
7 |
8 | namespace WinHideExGUI
9 | {
10 | ///
11 | /// An implementation of .
12 | ///
13 | public class CustomApplicationContext : ApplicationContext
14 | {
15 | ///
16 | /// The main application form.
17 | ///
18 | private Form _mainForm;
19 |
20 | ///
21 | /// Initializes a new instance of the class.
22 | ///
23 | /// The main form of the application.
24 | public CustomApplicationContext(Form mainForm)
25 | {
26 | _mainForm = mainForm;
27 |
28 | if (_mainForm != null)
29 | {
30 | // Wire up the destroy events similar to how the base ApplicationContext
31 | // does things when a form is provided.
32 | _mainForm.HandleDestroyed += OnFormDestroy;
33 |
34 | // We still want to call Show() here, but we can at least hide it from the user
35 | // by setting Opacity to 0 while the form is being shown for the first time.
36 | _mainForm.ShowInTaskbar = false;
37 | _mainForm.Opacity = 0;
38 | _mainForm.Show();
39 | _mainForm.Hide();
40 | _mainForm.Opacity = 1;
41 | _mainForm.ShowInTaskbar = true;
42 | }
43 | }
44 |
45 | ///
46 | /// Handles the event.
47 | ///
48 | /// The source of the event.
49 | /// An that contains the event data.
50 | private void OnFormDestroy(object sender, EventArgs e)
51 | {
52 | if (sender is Form form && !form.RecreatingHandle)
53 | {
54 | form.HandleDestroyed -= OnFormDestroy;
55 | OnMainFormClosed(sender, e);
56 | }
57 | }
58 |
59 | ///
60 | /// Performs application-defined tasks associated with freeing, releasing,
61 | /// or resetting unmanaged resources.
62 | ///
63 | ///
64 | /// true if invoked from the method;
65 | /// false if invoked from the finalizer.
66 | ///
67 | protected override void Dispose(bool disposing)
68 | {
69 | if (disposing)
70 | {
71 | if (_mainForm != null)
72 | {
73 | if (!_mainForm.IsDisposed)
74 | {
75 | _mainForm.Dispose();
76 | }
77 |
78 | _mainForm = null;
79 | }
80 | }
81 |
82 | base.Dispose(disposing);
83 | }
84 | }
85 | }
--------------------------------------------------------------------------------
/WinHideExGUI/MainForm.Designer.cs:
--------------------------------------------------------------------------------
1 | using WinHideExGUI.Properties;
2 |
3 | namespace WinHideExGUI
4 | {
5 | partial class MainForm
6 | {
7 | ///
8 | /// Required designer variable.
9 | ///
10 | private System.ComponentModel.IContainer components = null;
11 |
12 | ///
13 | /// Clean up any resources being used.
14 | ///
15 | /// true if managed resources should be disposed; otherwise, false.
16 | protected override void Dispose(bool disposing)
17 | {
18 | if (disposing && (components != null))
19 | {
20 | components.Dispose();
21 | }
22 | base.Dispose(disposing);
23 | }
24 |
25 | #region Windows Form Designer generated code
26 |
27 | ///
28 | /// Required method for Designer support - do not modify
29 | /// the contents of this method with the code editor.
30 | ///
31 | private void InitializeComponent()
32 | {
33 | this.components = new System.ComponentModel.Container();
34 | this.NotifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
35 | this.InjectionEnabled = new System.Windows.Forms.CheckBox();
36 | this.RunOnStartup = new System.Windows.Forms.CheckBox();
37 | this.InjectList = new System.Windows.Forms.ListBox();
38 | this.AddProgram = new System.Windows.Forms.Button();
39 | this.DeleteProgram = new System.Windows.Forms.Button();
40 | this.label1 = new System.Windows.Forms.Label();
41 | this.InjectionWorker = new System.ComponentModel.BackgroundWorker();
42 | this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
43 | this.SaveButton = new System.Windows.Forms.Button();
44 | this.RegexList = new System.Windows.Forms.TextBox();
45 | this.SuspendLayout();
46 | //
47 | // NotifyIcon1
48 | //
49 | this.NotifyIcon1.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info;
50 | this.NotifyIcon1.BalloonTipText = "Click to open the GUI";
51 | this.NotifyIcon1.Icon = global::WinHideExGUI.Properties.Resources.AppIcon;
52 | this.NotifyIcon1.Text = "WinHideEx";
53 | this.NotifyIcon1.Visible = true;
54 | this.NotifyIcon1.Click += new System.EventHandler(this.NotifyIcon1_Click);
55 | //
56 | // InjectionEnabled
57 | //
58 | this.InjectionEnabled.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
59 | this.InjectionEnabled.AutoSize = true;
60 | this.InjectionEnabled.Location = new System.Drawing.Point(12, 432);
61 | this.InjectionEnabled.Name = "InjectionEnabled";
62 | this.InjectionEnabled.Size = new System.Drawing.Size(65, 17);
63 | this.InjectionEnabled.TabIndex = 0;
64 | this.InjectionEnabled.Text = "Enabled";
65 | this.InjectionEnabled.UseVisualStyleBackColor = true;
66 | //
67 | // RunOnStartup
68 | //
69 | this.RunOnStartup.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
70 | this.RunOnStartup.AutoSize = true;
71 | this.RunOnStartup.Location = new System.Drawing.Point(83, 432);
72 | this.RunOnStartup.Name = "RunOnStartup";
73 | this.RunOnStartup.Size = new System.Drawing.Size(98, 17);
74 | this.RunOnStartup.TabIndex = 1;
75 | this.RunOnStartup.Text = "Run on Startup";
76 | this.RunOnStartup.UseVisualStyleBackColor = true;
77 | //
78 | // InjectList
79 | //
80 | this.InjectList.FormattingEnabled = true;
81 | this.InjectList.Location = new System.Drawing.Point(12, 41);
82 | this.InjectList.Name = "InjectList";
83 | this.InjectList.Size = new System.Drawing.Size(260, 225);
84 | this.InjectList.TabIndex = 2;
85 | //
86 | // AddProgram
87 | //
88 | this.AddProgram.Location = new System.Drawing.Point(12, 12);
89 | this.AddProgram.Name = "AddProgram";
90 | this.AddProgram.Size = new System.Drawing.Size(120, 23);
91 | this.AddProgram.TabIndex = 3;
92 | this.AddProgram.Text = "Add Application";
93 | this.AddProgram.UseVisualStyleBackColor = true;
94 | this.AddProgram.Click += new System.EventHandler(this.AddProgram_Click);
95 | //
96 | // DeleteProgram
97 | //
98 | this.DeleteProgram.Location = new System.Drawing.Point(152, 12);
99 | this.DeleteProgram.Name = "DeleteProgram";
100 | this.DeleteProgram.Size = new System.Drawing.Size(120, 23);
101 | this.DeleteProgram.TabIndex = 4;
102 | this.DeleteProgram.Text = "Delete Selected";
103 | this.DeleteProgram.UseVisualStyleBackColor = true;
104 | this.DeleteProgram.Click += new System.EventHandler(this.DeleteProgram_Click);
105 | //
106 | // label1
107 | //
108 | this.label1.AutoSize = true;
109 | this.label1.Location = new System.Drawing.Point(12, 276);
110 | this.label1.Name = "label1";
111 | this.label1.Size = new System.Drawing.Size(218, 13);
112 | this.label1.TabIndex = 6;
113 | this.label1.Text = "Regular expressions: (newlines equate to \"|\")";
114 | //
115 | // InjectionWorker
116 | //
117 | this.InjectionWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.InjectionWorker_DoWork);
118 | //
119 | // SaveButton
120 | //
121 | this.SaveButton.Location = new System.Drawing.Point(187, 428);
122 | this.SaveButton.Name = "SaveButton";
123 | this.SaveButton.Size = new System.Drawing.Size(85, 23);
124 | this.SaveButton.TabIndex = 8;
125 | this.SaveButton.Text = "Save Changes";
126 | this.SaveButton.UseVisualStyleBackColor = true;
127 | this.SaveButton.Click += new System.EventHandler(this.SaveButton_Click);
128 | //
129 | // RegexList
130 | //
131 | this.RegexList.Location = new System.Drawing.Point(12, 292);
132 | this.RegexList.Multiline = true;
133 | this.RegexList.Name = "RegexList";
134 | this.RegexList.Size = new System.Drawing.Size(260, 130);
135 | this.RegexList.TabIndex = 9;
136 | //
137 | // MainForm
138 | //
139 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
140 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
141 | this.ClientSize = new System.Drawing.Size(284, 461);
142 | this.Controls.Add(this.RegexList);
143 | this.Controls.Add(this.SaveButton);
144 | this.Controls.Add(this.label1);
145 | this.Controls.Add(this.DeleteProgram);
146 | this.Controls.Add(this.AddProgram);
147 | this.Controls.Add(this.InjectList);
148 | this.Controls.Add(this.RunOnStartup);
149 | this.Controls.Add(this.InjectionEnabled);
150 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
151 | this.Name = "MainForm";
152 | this.Text = Resources.AppName;
153 | this.Load += new System.EventHandler(this.MainForm_Load);
154 | this.ResumeLayout(false);
155 | this.PerformLayout();
156 |
157 | }
158 |
159 | #endregion
160 |
161 | private System.Windows.Forms.NotifyIcon NotifyIcon1;
162 | private System.Windows.Forms.CheckBox InjectionEnabled;
163 | private System.Windows.Forms.CheckBox RunOnStartup;
164 | private System.Windows.Forms.ListBox InjectList;
165 | private System.Windows.Forms.Button AddProgram;
166 | private System.Windows.Forms.Button DeleteProgram;
167 | private System.Windows.Forms.Label label1;
168 | private System.ComponentModel.BackgroundWorker InjectionWorker;
169 | private System.ComponentModel.BackgroundWorker backgroundWorker1;
170 | private System.Windows.Forms.Button SaveButton;
171 | private System.Windows.Forms.TextBox RegexList;
172 | }
173 | }
174 |
175 |
--------------------------------------------------------------------------------
/WinHideExGUI/MainForm.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32;
2 | using Reloaded.Injector;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.ComponentModel;
6 | using System.Diagnostics;
7 | using System.Drawing;
8 | using System.IO;
9 | using System.Runtime.InteropServices;
10 | using System.Text;
11 | using System.Windows.Forms;
12 | using WinHideExGUI.Properties;
13 |
14 | namespace WinHideExGUI
15 | {
16 | public partial class MainForm : Form
17 | {
18 | // Hidden status
19 | private bool hidden = false;
20 |
21 | // Registry stuff
22 | private RegistryKey RegKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\WinHideEx");
23 | private RegistryKey Autorun = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
24 | private readonly string RegInjectionTargets = "InjectionTargets";
25 | private readonly string RegRegularExpression = "RegularExpression";
26 | private readonly string RegHookSettings = "HookSettings";
27 |
28 | // The name of our DLLs to inject
29 | private readonly string DLL32Bit = "WinHideEx32.dll";
30 | private readonly string DLL64Bit = "WinHideEx64.dll";
31 |
32 | public MainForm()
33 | {
34 | this.InitializeComponent();
35 | }
36 |
37 | void Exit(object sender, EventArgs e)
38 | {
39 | // Hide tray icon, otherwise it will remain shown until user mouses over it
40 | this.NotifyIcon1.Visible = false;
41 |
42 | Application.Exit();
43 | }
44 |
45 | private string[] GetInjectionTargetsFromRegistry()
46 | {
47 | if (RegKey == null)
48 | return null;
49 |
50 | string res = (string)RegKey.GetValue(RegInjectionTargets);
51 |
52 | if (res == null)
53 | return null;
54 |
55 | return res.Split(';');
56 | }
57 |
58 | private string GetRegularExpressionFromRegistry()
59 | {
60 | string default_regex = "\\..*";
61 | if (RegKey == null)
62 | return default_regex;
63 |
64 | string res = (string)RegKey.GetValue(RegRegularExpression);
65 |
66 | // Load our default regex (hide all dotfiles)
67 | if (res == null)
68 | return default_regex;
69 |
70 | return res.Replace('|', '\n');
71 | }
72 |
73 | private bool GetEnabledStatusFromRegistry()
74 | {
75 | if (RegKey == null)
76 | return false;
77 |
78 | string res = (string)RegKey.GetValue(RegHookSettings);
79 |
80 | if (res == null)
81 | return false;
82 |
83 | return res == "enabled";
84 | }
85 |
86 | private void WriteSettingsToRegistry()
87 | {
88 | // Save all of our values back to the registry
89 | RegKey.SetValue(RegHookSettings, this.InjectionEnabled.Checked ? "enabled" : "disabled");
90 | RegKey.SetValue(RegRegularExpression, String.Join("|",
91 | this.RegexList.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)));
92 |
93 | var list = new List();
94 | foreach (var item in this.InjectList.Items)
95 | {
96 | list.Add(item.ToString());
97 | }
98 |
99 | RegKey.SetValue(RegInjectionTargets, String.Join(";", list));
100 |
101 | // Autorun setting
102 | if (this.RunOnStartup.Checked)
103 | this.Autorun.SetValue(Resources.AppName, Application.ExecutablePath);
104 | else
105 | this.Autorun.DeleteValue(Resources.AppName, false);
106 | }
107 |
108 | private void LoadSettingsFromRegistry()
109 | {
110 | // Add our existing inject targets
111 | string[] targets = GetInjectionTargetsFromRegistry();
112 | if (targets != null)
113 | {
114 | foreach (string target in targets)
115 | this.InjectList.Items.Add(target);
116 | }
117 |
118 | // Add our existing regexes
119 | this.RegexList.Text = GetRegularExpressionFromRegistry();
120 |
121 | // Add our existing inject enabled status
122 | this.InjectionEnabled.Checked = GetEnabledStatusFromRegistry();
123 |
124 | // Update our autorun checkbox
125 | this.RunOnStartup.Checked = this.Autorun.GetValue(Resources.AppName) != null;
126 | }
127 |
128 | private void MainForm_Load(object sender, EventArgs e)
129 | {
130 | this.NotifyIcon1.ContextMenu = new ContextMenu(new MenuItem[] {
131 | new MenuItem("Exit", Exit)
132 | });
133 |
134 | this.Hide();
135 | this.hidden = true;
136 |
137 | // Load our existing settings from the registry
138 | LoadSettingsFromRegistry();
139 |
140 | // Write back again to load sane defaults on first run
141 | WriteSettingsToRegistry();
142 |
143 | // Run our Injection worker
144 | InjectionWorker.RunWorkerAsync();
145 | }
146 |
147 | protected override void OnFormClosing(FormClosingEventArgs e)
148 | {
149 | base.OnFormClosing(e);
150 | if (e.CloseReason == CloseReason.UserClosing)
151 | {
152 | e.Cancel = true;
153 | this.Hide();
154 | }
155 | }
156 |
157 | private void NotifyIcon1_Click(object sender, EventArgs e)
158 | {
159 | if (hidden)
160 | {
161 | this.StartPosition = FormStartPosition.Manual;
162 | this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width,
163 | Screen.PrimaryScreen.WorkingArea.Height - this.Height);
164 |
165 | this.Show();
166 | this.hidden = false;
167 | }
168 | else
169 | {
170 | this.Hide();
171 | this.hidden = true;
172 | }
173 | }
174 |
175 | private void AddProgram_Click(object sender, EventArgs e)
176 | {
177 | OpenFileDialog open = new OpenFileDialog();
178 | open.InitialDirectory = @"C:\";
179 | open.RestoreDirectory = true;
180 | open.Title = "Add an Application to Inject";
181 | open.Filter = "Application files (*.exe)|*.exe";
182 |
183 | if (open.ShowDialog() == DialogResult.OK)
184 | {
185 | if (InjectList.Items.Contains(open.FileName))
186 | return;
187 | else
188 | InjectList.Items.Add(open.FileName);
189 | }
190 | }
191 |
192 | private void DeleteProgram_Click(object sender, EventArgs e)
193 | {
194 | if (InjectList.SelectedIndex == -1)
195 | return;
196 |
197 | InjectList.Items.RemoveAt(InjectList.SelectedIndex);
198 | }
199 |
200 | private void InjectionWorker_DoWork(object sender, DoWorkEventArgs e)
201 | {
202 | // Loop through all the targets every 1 second and see
203 | // if they need to be injected with our WinHideEx DLL
204 | while (true)
205 | {
206 | System.Threading.Thread.Sleep(1000);
207 |
208 | string[] all_to_inject = GetInjectionTargetsFromRegistry();
209 | if (all_to_inject == null)
210 | break;
211 |
212 | foreach (var process in Process.GetProcesses())
213 | {
214 | foreach (var to_inject in all_to_inject)
215 | {
216 | // Check if the process file name is in our list, and if so, inject our DLL
217 | if (GetProcessFilename(process) == to_inject)
218 | InjectDLLIntoProcess(process);
219 | }
220 | }
221 | }
222 | }
223 |
224 | private void InjectDLLIntoProcess(Process process)
225 | {
226 | // Don't re-inject into a process we've already injected
227 | foreach (var module in CollectModules(process))
228 | {
229 | if (module.ModuleName == this.DLL32Bit || module.ModuleName == this.DLL64Bit)
230 | return;
231 | }
232 |
233 | // Actually inject the DLL now!
234 | Injector injector = new Injector(process);
235 |
236 | // SHould we load the 32 bit or 64 bit DLL in the target process?
237 | string DLL = Is64Bit(process) ? this.DLL64Bit : this.DLL32Bit;
238 |
239 | injector.Inject(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + DLL);
240 | injector.Dispose();
241 | }
242 |
243 | private static bool Is64Bit(Process process)
244 | {
245 | if (!Environment.Is64BitOperatingSystem)
246 | return false;
247 |
248 | if (!IsWow64Process(process.Handle, out bool isWow64))
249 | throw new Win32Exception();
250 |
251 | return !isWow64;
252 | }
253 |
254 | [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
255 | [return: MarshalAs(UnmanagedType.Bool)]
256 | private static extern bool IsWow64Process([In] IntPtr process, [Out] out bool wow64Process);
257 |
258 | [Flags]
259 | private enum ProcessAccessFlags : uint
260 | {
261 | QueryLimitedInformation = 0x00001000
262 | }
263 |
264 | [DllImport("kernel32.dll", SetLastError = true)]
265 | private static extern bool QueryFullProcessImageName([In] IntPtr hProcess, [In] int dwFlags,
266 | [Out] StringBuilder lpExeName, ref int lpdwSize);
267 |
268 | [DllImport("kernel32.dll", SetLastError = true)]
269 | private static extern IntPtr OpenProcess(ProcessAccessFlags processAccess, bool bInheritHandle,
270 | int processId);
271 |
272 | String GetProcessFilename(Process p)
273 | {
274 | int capacity = 2000;
275 | StringBuilder builder = new StringBuilder(capacity);
276 | IntPtr ptr = OpenProcess(ProcessAccessFlags.QueryLimitedInformation, false, p.Id);
277 |
278 | if (!QueryFullProcessImageName(ptr, 0, builder, ref capacity))
279 | {
280 | return String.Empty;
281 | }
282 |
283 | return builder.ToString();
284 | }
285 |
286 | public List CollectModules(Process process)
287 | {
288 | List collectedModules = new List();
289 |
290 | IntPtr[] modulePointers = new IntPtr[0];
291 |
292 | // Determine number of modules
293 | if (!Native.EnumProcessModulesEx(process.Handle, modulePointers, 0, out int bytesNeeded, (uint)Native.ModuleFilter.ListModulesAll))
294 | {
295 | return collectedModules;
296 | }
297 |
298 | int totalNumberofModules = bytesNeeded / IntPtr.Size;
299 | modulePointers = new IntPtr[totalNumberofModules];
300 |
301 | // Collect modules from the process
302 | if (Native.EnumProcessModulesEx(process.Handle, modulePointers, bytesNeeded, out bytesNeeded, (uint)Native.ModuleFilter.ListModulesAll))
303 | {
304 | for (int index = 0; index < totalNumberofModules; index++)
305 | {
306 | StringBuilder moduleFilePath = new StringBuilder(1024);
307 | Native.GetModuleFileNameEx(process.Handle, modulePointers[index], moduleFilePath, (uint)(moduleFilePath.Capacity));
308 |
309 | string moduleName = Path.GetFileName(moduleFilePath.ToString());
310 | Native.ModuleInformation moduleInformation = new Native.ModuleInformation();
311 | Native.GetModuleInformation(process.Handle, modulePointers[index], out moduleInformation, (uint)(IntPtr.Size * (modulePointers.Length)));
312 |
313 | // Convert to a normalized module and add it to our list
314 | Module module = new Module(moduleName, moduleInformation.lpBaseOfDll, moduleInformation.SizeOfImage);
315 | collectedModules.Add(module);
316 | }
317 | }
318 |
319 | return collectedModules;
320 | }
321 |
322 | public class Native
323 | {
324 | [StructLayout(LayoutKind.Sequential)]
325 | public struct ModuleInformation
326 | {
327 | public IntPtr lpBaseOfDll;
328 | public uint SizeOfImage;
329 | public IntPtr EntryPoint;
330 | }
331 |
332 | internal enum ModuleFilter
333 | {
334 | ListModulesDefault = 0x0,
335 | ListModules32Bit = 0x01,
336 | ListModules64Bit = 0x02,
337 | ListModulesAll = 0x03,
338 | }
339 |
340 | [DllImport("psapi.dll")]
341 | public static extern bool EnumProcessModulesEx(IntPtr hProcess, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.U4)][In][Out] IntPtr[] lphModule, int cb, [MarshalAs(UnmanagedType.U4)] out int lpcbNeeded, uint dwFilterFlag);
342 |
343 | [DllImport("psapi.dll")]
344 | public static extern uint GetModuleFileNameEx(IntPtr hProcess, IntPtr hModule, [Out] StringBuilder lpBaseName, [In][MarshalAs(UnmanagedType.U4)] uint nSize);
345 |
346 | [DllImport("psapi.dll", SetLastError = true)]
347 | public static extern bool GetModuleInformation(IntPtr hProcess, IntPtr hModule, out ModuleInformation lpmodinfo, uint cb);
348 | }
349 |
350 | public class Module
351 | {
352 | public Module(string moduleName, IntPtr baseAddress, uint size)
353 | {
354 | this.ModuleName = moduleName;
355 | this.BaseAddress = baseAddress;
356 | this.Size = size;
357 | }
358 |
359 | public string ModuleName { get; set; }
360 | public IntPtr BaseAddress { get; set; }
361 | public uint Size { get; set; }
362 | }
363 |
364 | private void SaveButton_Click(object sender, EventArgs e)
365 | {
366 | WriteSettingsToRegistry();
367 | }
368 | }
369 | }
--------------------------------------------------------------------------------
/WinHideExGUI/MainForm.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 132, 17
125 |
126 |
127 | 270, 17
128 |
129 |
--------------------------------------------------------------------------------
/WinHideExGUI/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Windows.Forms;
4 | using WinHideExGUI.Properties;
5 |
6 | namespace WinHideExGUI
7 | {
8 | static class Program
9 | {
10 | // Our mutex
11 | private static Mutex mutex = null;
12 |
13 | ///
14 | /// The main entry point for the application.
15 | ///
16 | [STAThread]
17 | static void Main()
18 | {
19 | mutex = new Mutex(true, Resources.AppName, out bool createdNew);
20 |
21 | if (!createdNew)
22 | {
23 | MessageBox.Show("Another instance of the application is already running!");
24 | return;
25 | }
26 |
27 | Application.EnableVisualStyles();
28 | Application.SetCompatibleTextRenderingDefault(false);
29 | Application.Run(new CustomApplicationContext(new MainForm()));
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/WinHideExGUI/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("WinHideEx GUI")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("WinHideExGUI")]
13 | [assembly: AssemblyCopyright("Copyright © 2022 Josh Max")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("2c29a8a9-defc-4559-8920-d5283055bf1b")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/WinHideExGUI/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WinHideExGUI.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WinHideExGUI.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
65 | ///
66 | internal static System.Drawing.Icon AppIcon {
67 | get {
68 | object obj = ResourceManager.GetObject("AppIcon", resourceCulture);
69 | return ((System.Drawing.Icon)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized string similar to WinHideEx GUI.
75 | ///
76 | internal static string AppName {
77 | get {
78 | return ResourceManager.GetString("AppName", resourceCulture);
79 | }
80 | }
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/WinHideExGUI/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\AppIcon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | WinHideEx GUI
126 |
127 |
--------------------------------------------------------------------------------
/WinHideExGUI/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 |
12 | namespace WinHideExGUI.Properties
13 | {
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
17 | {
18 |
19 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
20 |
21 | public static Settings Default
22 | {
23 | get
24 | {
25 | return defaultInstance;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/WinHideExGUI/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/WinHideExGUI/Resources/AppIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshumax/WinHideEx/8191616b8621ce2b274e25feba38f4999d7fde2f/WinHideExGUI/Resources/AppIcon.ico
--------------------------------------------------------------------------------
/WinHideExGUI/WinHideEx.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshumax/WinHideEx/8191616b8621ce2b274e25feba38f4999d7fde2f/WinHideExGUI/WinHideEx.ico
--------------------------------------------------------------------------------
/WinHideExGUI/WinHideExGUI.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {2C29A8A9-DEFC-4559-8920-D5283055BF1B}
8 | WinExe
9 | WinHideExGUI
10 | WinHideExGUI
11 | v4.7.2
12 | 512
13 | true
14 | true
15 |
16 |
17 |
18 |
19 | x64
20 | true
21 | full
22 | false
23 | bin\Debug\
24 | TRACE;DEBUG
25 | prompt
26 | 4
27 | false
28 |
29 |
30 | x64
31 | pdbonly
32 | true
33 | bin\Release\
34 | TRACE
35 | prompt
36 | 4
37 |
38 |
39 | WinHideEx.ico
40 |
41 |
42 |
43 | ..\packages\PeNet.0.8.1\lib\net461\PeNet.dll
44 |
45 |
46 | ..\packages\PeNet.Asn1.1.3.1\lib\net461\PeNet.Asn1.dll
47 |
48 |
49 | ..\packages\Reloaded.Assembler.1.0.14\lib\netstandard2.0\Reloaded.Assembler.dll
50 |
51 |
52 | ..\packages\Reloaded.Injector.1.2.5\lib\net472\Reloaded.Injector.dll
53 |
54 |
55 | ..\packages\Reloaded.Memory.7.0.0\lib\netstandard2.0\Reloaded.Memory.dll
56 |
57 |
58 | ..\packages\Reloaded.Memory.Buffers.2.0.0\lib\netstandard2.0\Reloaded.Memory.Buffers.dll
59 |
60 |
61 |
62 | ..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll
63 |
64 |
65 |
66 | ..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll
67 |
68 |
69 |
70 | ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll
71 |
72 |
73 | ..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 | Form
89 |
90 |
91 | MainForm.cs
92 |
93 |
94 |
95 |
96 | MainForm.cs
97 |
98 |
99 | ResXFileCodeGenerator
100 | Resources.Designer.cs
101 | Designer
102 |
103 |
104 | True
105 | Resources.resx
106 | True
107 |
108 |
109 |
110 | SettingsSingleFileGenerator
111 | Settings.Designer.cs
112 |
113 |
114 | True
115 | Settings.settings
116 | True
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
133 |
134 |
135 |
136 |
--------------------------------------------------------------------------------
/WinHideExGUI/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/WinHideExInstaller/WinHideExInstaller.vdproj:
--------------------------------------------------------------------------------
1 | "DeployProject"
2 | {
3 | "VSVersion" = "3:800"
4 | "ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
5 | "IsWebType" = "8:FALSE"
6 | "ProjectName" = "8:WinHideExInstaller"
7 | "LanguageId" = "3:1033"
8 | "CodePage" = "3:1252"
9 | "UILanguageId" = "3:1033"
10 | "SccProjectName" = "8:"
11 | "SccLocalPath" = "8:"
12 | "SccAuxPath" = "8:"
13 | "SccProvider" = "8:"
14 | "Hierarchy"
15 | {
16 | "Entry"
17 | {
18 | "MsmKey" = "8:_18AA9FE27B06D2999E9AA39BC932407D"
19 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
20 | "MsmSig" = "8:_UNDEFINED"
21 | }
22 | "Entry"
23 | {
24 | "MsmKey" = "8:_18AA9FE27B06D2999E9AA39BC932407D"
25 | "OwnerKey" = "8:_37E263D903C52D4DC26E5738737B06F8"
26 | "MsmSig" = "8:_UNDEFINED"
27 | }
28 | "Entry"
29 | {
30 | "MsmKey" = "8:_1A0D84BA019746D3829EA762507DB6EA"
31 | "OwnerKey" = "8:_UNDEFINED"
32 | "MsmSig" = "8:_UNDEFINED"
33 | }
34 | "Entry"
35 | {
36 | "MsmKey" = "8:_37E263D903C52D4DC26E5738737B06F8"
37 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
38 | "MsmSig" = "8:_UNDEFINED"
39 | }
40 | "Entry"
41 | {
42 | "MsmKey" = "8:_3917CD86A3B446A1A5B754B928BEFFE9"
43 | "OwnerKey" = "8:_UNDEFINED"
44 | "MsmSig" = "8:_UNDEFINED"
45 | }
46 | "Entry"
47 | {
48 | "MsmKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
49 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
50 | "MsmSig" = "8:_UNDEFINED"
51 | }
52 | "Entry"
53 | {
54 | "MsmKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
55 | "OwnerKey" = "8:_E895627EDDE55495D5384B35D1CB8494"
56 | "MsmSig" = "8:_UNDEFINED"
57 | }
58 | "Entry"
59 | {
60 | "MsmKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
61 | "OwnerKey" = "8:_D3DC46A3C194CC8CD3C6F48B59EB9464"
62 | "MsmSig" = "8:_UNDEFINED"
63 | }
64 | "Entry"
65 | {
66 | "MsmKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
67 | "OwnerKey" = "8:_E5E6E16CA9AE39A6DB8165B60641AA91"
68 | "MsmSig" = "8:_UNDEFINED"
69 | }
70 | "Entry"
71 | {
72 | "MsmKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
73 | "OwnerKey" = "8:_7D7E47CA952BF47962EE25004BBECAC2"
74 | "MsmSig" = "8:_UNDEFINED"
75 | }
76 | "Entry"
77 | {
78 | "MsmKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
79 | "OwnerKey" = "8:_18AA9FE27B06D2999E9AA39BC932407D"
80 | "MsmSig" = "8:_UNDEFINED"
81 | }
82 | "Entry"
83 | {
84 | "MsmKey" = "8:_69600971CC172E82E16ACB5B2F84391D"
85 | "OwnerKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
86 | "MsmSig" = "8:_UNDEFINED"
87 | }
88 | "Entry"
89 | {
90 | "MsmKey" = "8:_7203171E2A2916309280339D543265A5"
91 | "OwnerKey" = "8:_7D2DA98F3536E04BD78A79CC70C83ADF"
92 | "MsmSig" = "8:_UNDEFINED"
93 | }
94 | "Entry"
95 | {
96 | "MsmKey" = "8:_7203171E2A2916309280339D543265A5"
97 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
98 | "MsmSig" = "8:_UNDEFINED"
99 | }
100 | "Entry"
101 | {
102 | "MsmKey" = "8:_7714F830714B3F81E1546FA71CFB8680"
103 | "OwnerKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
104 | "MsmSig" = "8:_UNDEFINED"
105 | }
106 | "Entry"
107 | {
108 | "MsmKey" = "8:_7D2DA98F3536E04BD78A79CC70C83ADF"
109 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
110 | "MsmSig" = "8:_UNDEFINED"
111 | }
112 | "Entry"
113 | {
114 | "MsmKey" = "8:_7D2DA98F3536E04BD78A79CC70C83ADF"
115 | "OwnerKey" = "8:_37E263D903C52D4DC26E5738737B06F8"
116 | "MsmSig" = "8:_UNDEFINED"
117 | }
118 | "Entry"
119 | {
120 | "MsmKey" = "8:_7D7E47CA952BF47962EE25004BBECAC2"
121 | "OwnerKey" = "8:_18AA9FE27B06D2999E9AA39BC932407D"
122 | "MsmSig" = "8:_UNDEFINED"
123 | }
124 | "Entry"
125 | {
126 | "MsmKey" = "8:_7D7E47CA952BF47962EE25004BBECAC2"
127 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
128 | "MsmSig" = "8:_UNDEFINED"
129 | }
130 | "Entry"
131 | {
132 | "MsmKey" = "8:_7D7E47CA952BF47962EE25004BBECAC2"
133 | "OwnerKey" = "8:_37E263D903C52D4DC26E5738737B06F8"
134 | "MsmSig" = "8:_UNDEFINED"
135 | }
136 | "Entry"
137 | {
138 | "MsmKey" = "8:_7D7E47CA952BF47962EE25004BBECAC2"
139 | "OwnerKey" = "8:_E895627EDDE55495D5384B35D1CB8494"
140 | "MsmSig" = "8:_UNDEFINED"
141 | }
142 | "Entry"
143 | {
144 | "MsmKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
145 | "OwnerKey" = "8:_UNDEFINED"
146 | "MsmSig" = "8:_UNDEFINED"
147 | }
148 | "Entry"
149 | {
150 | "MsmKey" = "8:_905DC3A4D10D0E9B788196073D79ADA7"
151 | "OwnerKey" = "8:_E5E6E16CA9AE39A6DB8165B60641AA91"
152 | "MsmSig" = "8:_UNDEFINED"
153 | }
154 | "Entry"
155 | {
156 | "MsmKey" = "8:_905DC3A4D10D0E9B788196073D79ADA7"
157 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
158 | "MsmSig" = "8:_UNDEFINED"
159 | }
160 | "Entry"
161 | {
162 | "MsmKey" = "8:_905DC3A4D10D0E9B788196073D79ADA7"
163 | "OwnerKey" = "8:_7D7E47CA952BF47962EE25004BBECAC2"
164 | "MsmSig" = "8:_UNDEFINED"
165 | }
166 | "Entry"
167 | {
168 | "MsmKey" = "8:_93EF5D1F309A279E0C75FA5C1161109C"
169 | "OwnerKey" = "8:_E5E6E16CA9AE39A6DB8165B60641AA91"
170 | "MsmSig" = "8:_UNDEFINED"
171 | }
172 | "Entry"
173 | {
174 | "MsmKey" = "8:_93EF5D1F309A279E0C75FA5C1161109C"
175 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
176 | "MsmSig" = "8:_UNDEFINED"
177 | }
178 | "Entry"
179 | {
180 | "MsmKey" = "8:_A1311E89D74443C2AE48486FCBAB1151"
181 | "OwnerKey" = "8:_UNDEFINED"
182 | "MsmSig" = "8:_UNDEFINED"
183 | }
184 | "Entry"
185 | {
186 | "MsmKey" = "8:_A9DC615F0EEBA3B3014F76FF951503C0"
187 | "OwnerKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
188 | "MsmSig" = "8:_UNDEFINED"
189 | }
190 | "Entry"
191 | {
192 | "MsmKey" = "8:_BCA9A153DD704E722D4EFE47F900390F"
193 | "OwnerKey" = "8:_7714F830714B3F81E1546FA71CFB8680"
194 | "MsmSig" = "8:_UNDEFINED"
195 | }
196 | "Entry"
197 | {
198 | "MsmKey" = "8:_BCA9A153DD704E722D4EFE47F900390F"
199 | "OwnerKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
200 | "MsmSig" = "8:_UNDEFINED"
201 | }
202 | "Entry"
203 | {
204 | "MsmKey" = "8:_C31480FEC2684FDFBF2260C86B39079B"
205 | "OwnerKey" = "8:_UNDEFINED"
206 | "MsmSig" = "8:_UNDEFINED"
207 | }
208 | "Entry"
209 | {
210 | "MsmKey" = "8:_CFA2EC9C3DFC579CBFE39347F949A6E6"
211 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
212 | "MsmSig" = "8:_UNDEFINED"
213 | }
214 | "Entry"
215 | {
216 | "MsmKey" = "8:_D3DC46A3C194CC8CD3C6F48B59EB9464"
217 | "OwnerKey" = "8:_E5E6E16CA9AE39A6DB8165B60641AA91"
218 | "MsmSig" = "8:_UNDEFINED"
219 | }
220 | "Entry"
221 | {
222 | "MsmKey" = "8:_D3DC46A3C194CC8CD3C6F48B59EB9464"
223 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
224 | "MsmSig" = "8:_UNDEFINED"
225 | }
226 | "Entry"
227 | {
228 | "MsmKey" = "8:_E5E6E16CA9AE39A6DB8165B60641AA91"
229 | "OwnerKey" = "8:_7D7E47CA952BF47962EE25004BBECAC2"
230 | "MsmSig" = "8:_UNDEFINED"
231 | }
232 | "Entry"
233 | {
234 | "MsmKey" = "8:_E5E6E16CA9AE39A6DB8165B60641AA91"
235 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
236 | "MsmSig" = "8:_UNDEFINED"
237 | }
238 | "Entry"
239 | {
240 | "MsmKey" = "8:_E5E6E16CA9AE39A6DB8165B60641AA91"
241 | "OwnerKey" = "8:_E895627EDDE55495D5384B35D1CB8494"
242 | "MsmSig" = "8:_UNDEFINED"
243 | }
244 | "Entry"
245 | {
246 | "MsmKey" = "8:_E895627EDDE55495D5384B35D1CB8494"
247 | "OwnerKey" = "8:_18AA9FE27B06D2999E9AA39BC932407D"
248 | "MsmSig" = "8:_UNDEFINED"
249 | }
250 | "Entry"
251 | {
252 | "MsmKey" = "8:_E895627EDDE55495D5384B35D1CB8494"
253 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
254 | "MsmSig" = "8:_UNDEFINED"
255 | }
256 | "Entry"
257 | {
258 | "MsmKey" = "8:_E895627EDDE55495D5384B35D1CB8494"
259 | "OwnerKey" = "8:_37E263D903C52D4DC26E5738737B06F8"
260 | "MsmSig" = "8:_UNDEFINED"
261 | }
262 | "Entry"
263 | {
264 | "MsmKey" = "8:_UNDEFINED"
265 | "OwnerKey" = "8:_69600971CC172E82E16ACB5B2F84391D"
266 | "MsmSig" = "8:_UNDEFINED"
267 | }
268 | "Entry"
269 | {
270 | "MsmKey" = "8:_UNDEFINED"
271 | "OwnerKey" = "8:_37E263D903C52D4DC26E5738737B06F8"
272 | "MsmSig" = "8:_UNDEFINED"
273 | }
274 | "Entry"
275 | {
276 | "MsmKey" = "8:_UNDEFINED"
277 | "OwnerKey" = "8:_905DC3A4D10D0E9B788196073D79ADA7"
278 | "MsmSig" = "8:_UNDEFINED"
279 | }
280 | "Entry"
281 | {
282 | "MsmKey" = "8:_UNDEFINED"
283 | "OwnerKey" = "8:_93EF5D1F309A279E0C75FA5C1161109C"
284 | "MsmSig" = "8:_UNDEFINED"
285 | }
286 | "Entry"
287 | {
288 | "MsmKey" = "8:_UNDEFINED"
289 | "OwnerKey" = "8:_7203171E2A2916309280339D543265A5"
290 | "MsmSig" = "8:_UNDEFINED"
291 | }
292 | "Entry"
293 | {
294 | "MsmKey" = "8:_UNDEFINED"
295 | "OwnerKey" = "8:_7D2DA98F3536E04BD78A79CC70C83ADF"
296 | "MsmSig" = "8:_UNDEFINED"
297 | }
298 | "Entry"
299 | {
300 | "MsmKey" = "8:_UNDEFINED"
301 | "OwnerKey" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
302 | "MsmSig" = "8:_UNDEFINED"
303 | }
304 | "Entry"
305 | {
306 | "MsmKey" = "8:_UNDEFINED"
307 | "OwnerKey" = "8:_CFA2EC9C3DFC579CBFE39347F949A6E6"
308 | "MsmSig" = "8:_UNDEFINED"
309 | }
310 | "Entry"
311 | {
312 | "MsmKey" = "8:_UNDEFINED"
313 | "OwnerKey" = "8:_443D51ACD45EBFA91C757D68DAAE292E"
314 | "MsmSig" = "8:_UNDEFINED"
315 | }
316 | "Entry"
317 | {
318 | "MsmKey" = "8:_UNDEFINED"
319 | "OwnerKey" = "8:_A9DC615F0EEBA3B3014F76FF951503C0"
320 | "MsmSig" = "8:_UNDEFINED"
321 | }
322 | "Entry"
323 | {
324 | "MsmKey" = "8:_UNDEFINED"
325 | "OwnerKey" = "8:_7714F830714B3F81E1546FA71CFB8680"
326 | "MsmSig" = "8:_UNDEFINED"
327 | }
328 | "Entry"
329 | {
330 | "MsmKey" = "8:_UNDEFINED"
331 | "OwnerKey" = "8:_BCA9A153DD704E722D4EFE47F900390F"
332 | "MsmSig" = "8:_UNDEFINED"
333 | }
334 | }
335 | "Configurations"
336 | {
337 | "Debug"
338 | {
339 | "DisplayName" = "8:Debug"
340 | "IsDebugOnly" = "11:TRUE"
341 | "IsReleaseOnly" = "11:FALSE"
342 | "OutputFilename" = "8:Debug\\WinHideExInstaller.msi"
343 | "PackageFilesAs" = "3:2"
344 | "PackageFileSize" = "3:-2147483648"
345 | "CabType" = "3:1"
346 | "Compression" = "3:2"
347 | "SignOutput" = "11:FALSE"
348 | "CertificateFile" = "8:"
349 | "PrivateKeyFile" = "8:"
350 | "TimeStampServer" = "8:"
351 | "InstallerBootstrapper" = "3:2"
352 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
353 | {
354 | "Enabled" = "11:TRUE"
355 | "PromptEnabled" = "11:TRUE"
356 | "PrerequisitesLocation" = "2:1"
357 | "Url" = "8:"
358 | "ComponentsUrl" = "8:"
359 | }
360 | }
361 | "Release"
362 | {
363 | "DisplayName" = "8:Release"
364 | "IsDebugOnly" = "11:FALSE"
365 | "IsReleaseOnly" = "11:TRUE"
366 | "OutputFilename" = "8:Release\\WinHideExInstaller.msi"
367 | "PackageFilesAs" = "3:2"
368 | "PackageFileSize" = "3:-2147483648"
369 | "CabType" = "3:1"
370 | "Compression" = "3:2"
371 | "SignOutput" = "11:FALSE"
372 | "CertificateFile" = "8:"
373 | "PrivateKeyFile" = "8:"
374 | "TimeStampServer" = "8:"
375 | "InstallerBootstrapper" = "3:2"
376 | "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
377 | {
378 | "Enabled" = "11:TRUE"
379 | "PromptEnabled" = "11:TRUE"
380 | "PrerequisitesLocation" = "2:1"
381 | "Url" = "8:"
382 | "ComponentsUrl" = "8:"
383 | "Items"
384 | {
385 | "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
386 | {
387 | "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
388 | "ProductCode" = "8:.NETFramework,Version=v4.7.2"
389 | }
390 | }
391 | }
392 | }
393 | }
394 | "Deployable"
395 | {
396 | "CustomAction"
397 | {
398 | }
399 | "DefaultFeature"
400 | {
401 | "Name" = "8:DefaultFeature"
402 | "Title" = "8:"
403 | "Description" = "8:"
404 | }
405 | "ExternalPersistence"
406 | {
407 | "LaunchCondition"
408 | {
409 | "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_A13001567F0D4DA5B042BAA40C1C8114"
410 | {
411 | "Name" = "8:.NET Framework"
412 | "Message" = "8:[VSDNETMSG]"
413 | "FrameworkVersion" = "8:.NETFramework,Version=v4.7.2"
414 | "AllowLaterVersions" = "11:FALSE"
415 | "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262"
416 | }
417 | }
418 | }
419 | "File"
420 | {
421 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_18AA9FE27B06D2999E9AA39BC932407D"
422 | {
423 | "AssemblyRegister" = "3:1"
424 | "AssemblyIsInGAC" = "11:FALSE"
425 | "AssemblyAsmDisplayName" = "8:Reloaded.Assembler, Version=1.0.14.0, Culture=neutral, processorArchitecture=MSIL"
426 | "ScatterAssemblies"
427 | {
428 | "_18AA9FE27B06D2999E9AA39BC932407D"
429 | {
430 | "Name" = "8:Reloaded.Assembler.dll"
431 | "Attributes" = "3:512"
432 | }
433 | }
434 | "SourcePath" = "8:Reloaded.Assembler.dll"
435 | "TargetName" = "8:"
436 | "Tag" = "8:"
437 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
438 | "Condition" = "8:"
439 | "Transitive" = "11:FALSE"
440 | "Vital" = "11:TRUE"
441 | "ReadOnly" = "11:FALSE"
442 | "Hidden" = "11:FALSE"
443 | "System" = "11:FALSE"
444 | "Permanent" = "11:FALSE"
445 | "SharedLegacy" = "11:FALSE"
446 | "PackageAs" = "3:1"
447 | "Register" = "3:1"
448 | "Exclude" = "11:FALSE"
449 | "IsDependency" = "11:TRUE"
450 | "IsolateTo" = "8:"
451 | }
452 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1A0D84BA019746D3829EA762507DB6EA"
453 | {
454 | "SourcePath" = "8:..\\x64\\Release\\WinHideEx64.dll"
455 | "TargetName" = "8:WinHideEx64.dll"
456 | "Tag" = "8:"
457 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
458 | "Condition" = "8:"
459 | "Transitive" = "11:FALSE"
460 | "Vital" = "11:TRUE"
461 | "ReadOnly" = "11:FALSE"
462 | "Hidden" = "11:FALSE"
463 | "System" = "11:FALSE"
464 | "Permanent" = "11:FALSE"
465 | "SharedLegacy" = "11:FALSE"
466 | "PackageAs" = "3:1"
467 | "Register" = "3:1"
468 | "Exclude" = "11:FALSE"
469 | "IsDependency" = "11:FALSE"
470 | "IsolateTo" = "8:"
471 | }
472 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_37E263D903C52D4DC26E5738737B06F8"
473 | {
474 | "AssemblyRegister" = "3:1"
475 | "AssemblyIsInGAC" = "11:FALSE"
476 | "AssemblyAsmDisplayName" = "8:Reloaded.Injector, Version=1.2.5.0, Culture=neutral, processorArchitecture=MSIL"
477 | "ScatterAssemblies"
478 | {
479 | "_37E263D903C52D4DC26E5738737B06F8"
480 | {
481 | "Name" = "8:Reloaded.Injector.dll"
482 | "Attributes" = "3:512"
483 | }
484 | }
485 | "SourcePath" = "8:Reloaded.Injector.dll"
486 | "TargetName" = "8:"
487 | "Tag" = "8:"
488 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
489 | "Condition" = "8:"
490 | "Transitive" = "11:FALSE"
491 | "Vital" = "11:TRUE"
492 | "ReadOnly" = "11:FALSE"
493 | "Hidden" = "11:FALSE"
494 | "System" = "11:FALSE"
495 | "Permanent" = "11:FALSE"
496 | "SharedLegacy" = "11:FALSE"
497 | "PackageAs" = "3:1"
498 | "Register" = "3:1"
499 | "Exclude" = "11:FALSE"
500 | "IsDependency" = "11:TRUE"
501 | "IsolateTo" = "8:"
502 | }
503 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3917CD86A3B446A1A5B754B928BEFFE9"
504 | {
505 | "SourcePath" = "8:..\\Release\\WinHideEx32.dll"
506 | "TargetName" = "8:WinHideEx32.dll"
507 | "Tag" = "8:"
508 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
509 | "Condition" = "8:"
510 | "Transitive" = "11:FALSE"
511 | "Vital" = "11:TRUE"
512 | "ReadOnly" = "11:FALSE"
513 | "Hidden" = "11:FALSE"
514 | "System" = "11:FALSE"
515 | "Permanent" = "11:FALSE"
516 | "SharedLegacy" = "11:FALSE"
517 | "PackageAs" = "3:1"
518 | "Register" = "3:1"
519 | "Exclude" = "11:FALSE"
520 | "IsDependency" = "11:FALSE"
521 | "IsolateTo" = "8:"
522 | }
523 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_443D51ACD45EBFA91C757D68DAAE292E"
524 | {
525 | "AssemblyRegister" = "3:1"
526 | "AssemblyIsInGAC" = "11:FALSE"
527 | "AssemblyAsmDisplayName" = "8:netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"
528 | "ScatterAssemblies"
529 | {
530 | "_443D51ACD45EBFA91C757D68DAAE292E"
531 | {
532 | "Name" = "8:netstandard.dll"
533 | "Attributes" = "3:512"
534 | }
535 | }
536 | "SourcePath" = "8:netstandard.dll"
537 | "TargetName" = "8:"
538 | "Tag" = "8:"
539 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
540 | "Condition" = "8:"
541 | "Transitive" = "11:FALSE"
542 | "Vital" = "11:TRUE"
543 | "ReadOnly" = "11:FALSE"
544 | "Hidden" = "11:FALSE"
545 | "System" = "11:FALSE"
546 | "Permanent" = "11:FALSE"
547 | "SharedLegacy" = "11:FALSE"
548 | "PackageAs" = "3:1"
549 | "Register" = "3:1"
550 | "Exclude" = "11:FALSE"
551 | "IsDependency" = "11:TRUE"
552 | "IsolateTo" = "8:"
553 | }
554 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_69600971CC172E82E16ACB5B2F84391D"
555 | {
556 | "AssemblyRegister" = "3:1"
557 | "AssemblyIsInGAC" = "11:TRUE"
558 | "AssemblyAsmDisplayName" = "8:System.Diagnostics.Tracing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
559 | "ScatterAssemblies"
560 | {
561 | "_69600971CC172E82E16ACB5B2F84391D"
562 | {
563 | "Name" = "8:System.Diagnostics.Tracing.dll"
564 | "Attributes" = "3:512"
565 | }
566 | }
567 | "SourcePath" = "8:System.Diagnostics.Tracing.dll"
568 | "TargetName" = "8:"
569 | "Tag" = "8:"
570 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
571 | "Condition" = "8:"
572 | "Transitive" = "11:FALSE"
573 | "Vital" = "11:TRUE"
574 | "ReadOnly" = "11:FALSE"
575 | "Hidden" = "11:FALSE"
576 | "System" = "11:FALSE"
577 | "Permanent" = "11:FALSE"
578 | "SharedLegacy" = "11:FALSE"
579 | "PackageAs" = "3:1"
580 | "Register" = "3:1"
581 | "Exclude" = "11:TRUE"
582 | "IsDependency" = "11:TRUE"
583 | "IsolateTo" = "8:"
584 | }
585 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7203171E2A2916309280339D543265A5"
586 | {
587 | "AssemblyRegister" = "3:1"
588 | "AssemblyIsInGAC" = "11:FALSE"
589 | "AssemblyAsmDisplayName" = "8:PeNet.Asn1, Version=1.3.1.0, Culture=neutral, processorArchitecture=MSIL"
590 | "ScatterAssemblies"
591 | {
592 | "_7203171E2A2916309280339D543265A5"
593 | {
594 | "Name" = "8:PeNet.Asn1.dll"
595 | "Attributes" = "3:512"
596 | }
597 | }
598 | "SourcePath" = "8:PeNet.Asn1.dll"
599 | "TargetName" = "8:"
600 | "Tag" = "8:"
601 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
602 | "Condition" = "8:"
603 | "Transitive" = "11:FALSE"
604 | "Vital" = "11:TRUE"
605 | "ReadOnly" = "11:FALSE"
606 | "Hidden" = "11:FALSE"
607 | "System" = "11:FALSE"
608 | "Permanent" = "11:FALSE"
609 | "SharedLegacy" = "11:FALSE"
610 | "PackageAs" = "3:1"
611 | "Register" = "3:1"
612 | "Exclude" = "11:FALSE"
613 | "IsDependency" = "11:TRUE"
614 | "IsolateTo" = "8:"
615 | }
616 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7714F830714B3F81E1546FA71CFB8680"
617 | {
618 | "AssemblyRegister" = "3:1"
619 | "AssemblyIsInGAC" = "11:TRUE"
620 | "AssemblyAsmDisplayName" = "8:System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
621 | "ScatterAssemblies"
622 | {
623 | "_7714F830714B3F81E1546FA71CFB8680"
624 | {
625 | "Name" = "8:System.IO.Compression.FileSystem.dll"
626 | "Attributes" = "3:512"
627 | }
628 | }
629 | "SourcePath" = "8:System.IO.Compression.FileSystem.dll"
630 | "TargetName" = "8:"
631 | "Tag" = "8:"
632 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
633 | "Condition" = "8:"
634 | "Transitive" = "11:FALSE"
635 | "Vital" = "11:TRUE"
636 | "ReadOnly" = "11:FALSE"
637 | "Hidden" = "11:FALSE"
638 | "System" = "11:FALSE"
639 | "Permanent" = "11:FALSE"
640 | "SharedLegacy" = "11:FALSE"
641 | "PackageAs" = "3:1"
642 | "Register" = "3:1"
643 | "Exclude" = "11:TRUE"
644 | "IsDependency" = "11:TRUE"
645 | "IsolateTo" = "8:"
646 | }
647 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7D2DA98F3536E04BD78A79CC70C83ADF"
648 | {
649 | "AssemblyRegister" = "3:1"
650 | "AssemblyIsInGAC" = "11:FALSE"
651 | "AssemblyAsmDisplayName" = "8:PeNet, Version=0.8.1.0, Culture=neutral, processorArchitecture=MSIL"
652 | "ScatterAssemblies"
653 | {
654 | "_7D2DA98F3536E04BD78A79CC70C83ADF"
655 | {
656 | "Name" = "8:PeNet.dll"
657 | "Attributes" = "3:512"
658 | }
659 | }
660 | "SourcePath" = "8:PeNet.dll"
661 | "TargetName" = "8:"
662 | "Tag" = "8:"
663 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
664 | "Condition" = "8:"
665 | "Transitive" = "11:FALSE"
666 | "Vital" = "11:TRUE"
667 | "ReadOnly" = "11:FALSE"
668 | "Hidden" = "11:FALSE"
669 | "System" = "11:FALSE"
670 | "Permanent" = "11:FALSE"
671 | "SharedLegacy" = "11:FALSE"
672 | "PackageAs" = "3:1"
673 | "Register" = "3:1"
674 | "Exclude" = "11:FALSE"
675 | "IsDependency" = "11:TRUE"
676 | "IsolateTo" = "8:"
677 | }
678 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7D7E47CA952BF47962EE25004BBECAC2"
679 | {
680 | "AssemblyRegister" = "3:1"
681 | "AssemblyIsInGAC" = "11:FALSE"
682 | "AssemblyAsmDisplayName" = "8:Reloaded.Memory, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL"
683 | "ScatterAssemblies"
684 | {
685 | "_7D7E47CA952BF47962EE25004BBECAC2"
686 | {
687 | "Name" = "8:Reloaded.Memory.dll"
688 | "Attributes" = "3:512"
689 | }
690 | }
691 | "SourcePath" = "8:Reloaded.Memory.dll"
692 | "TargetName" = "8:"
693 | "Tag" = "8:"
694 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
695 | "Condition" = "8:"
696 | "Transitive" = "11:FALSE"
697 | "Vital" = "11:TRUE"
698 | "ReadOnly" = "11:FALSE"
699 | "Hidden" = "11:FALSE"
700 | "System" = "11:FALSE"
701 | "Permanent" = "11:FALSE"
702 | "SharedLegacy" = "11:FALSE"
703 | "PackageAs" = "3:1"
704 | "Register" = "3:1"
705 | "Exclude" = "11:FALSE"
706 | "IsDependency" = "11:TRUE"
707 | "IsolateTo" = "8:"
708 | }
709 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_905DC3A4D10D0E9B788196073D79ADA7"
710 | {
711 | "AssemblyRegister" = "3:1"
712 | "AssemblyIsInGAC" = "11:FALSE"
713 | "AssemblyAsmDisplayName" = "8:System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
714 | "ScatterAssemblies"
715 | {
716 | "_905DC3A4D10D0E9B788196073D79ADA7"
717 | {
718 | "Name" = "8:System.Runtime.CompilerServices.Unsafe.dll"
719 | "Attributes" = "3:512"
720 | }
721 | }
722 | "SourcePath" = "8:System.Runtime.CompilerServices.Unsafe.dll"
723 | "TargetName" = "8:"
724 | "Tag" = "8:"
725 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
726 | "Condition" = "8:"
727 | "Transitive" = "11:FALSE"
728 | "Vital" = "11:TRUE"
729 | "ReadOnly" = "11:FALSE"
730 | "Hidden" = "11:FALSE"
731 | "System" = "11:FALSE"
732 | "Permanent" = "11:FALSE"
733 | "SharedLegacy" = "11:FALSE"
734 | "PackageAs" = "3:1"
735 | "Register" = "3:1"
736 | "Exclude" = "11:FALSE"
737 | "IsDependency" = "11:TRUE"
738 | "IsolateTo" = "8:"
739 | }
740 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_93EF5D1F309A279E0C75FA5C1161109C"
741 | {
742 | "AssemblyRegister" = "3:1"
743 | "AssemblyIsInGAC" = "11:FALSE"
744 | "AssemblyAsmDisplayName" = "8:System.Numerics.Vectors, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
745 | "ScatterAssemblies"
746 | {
747 | "_93EF5D1F309A279E0C75FA5C1161109C"
748 | {
749 | "Name" = "8:System.Numerics.Vectors.dll"
750 | "Attributes" = "3:512"
751 | }
752 | }
753 | "SourcePath" = "8:System.Numerics.Vectors.dll"
754 | "TargetName" = "8:"
755 | "Tag" = "8:"
756 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
757 | "Condition" = "8:"
758 | "Transitive" = "11:FALSE"
759 | "Vital" = "11:TRUE"
760 | "ReadOnly" = "11:FALSE"
761 | "Hidden" = "11:FALSE"
762 | "System" = "11:FALSE"
763 | "Permanent" = "11:FALSE"
764 | "SharedLegacy" = "11:FALSE"
765 | "PackageAs" = "3:1"
766 | "Register" = "3:1"
767 | "Exclude" = "11:FALSE"
768 | "IsDependency" = "11:TRUE"
769 | "IsolateTo" = "8:"
770 | }
771 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A1311E89D74443C2AE48486FCBAB1151"
772 | {
773 | "SourcePath" = "8:..\\WinHideExGUI\\bin\\Release\\FASMX64.DLL"
774 | "TargetName" = "8:FASMX64.DLL"
775 | "Tag" = "8:"
776 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
777 | "Condition" = "8:"
778 | "Transitive" = "11:FALSE"
779 | "Vital" = "11:TRUE"
780 | "ReadOnly" = "11:FALSE"
781 | "Hidden" = "11:FALSE"
782 | "System" = "11:FALSE"
783 | "Permanent" = "11:FALSE"
784 | "SharedLegacy" = "11:FALSE"
785 | "PackageAs" = "3:1"
786 | "Register" = "3:1"
787 | "Exclude" = "11:FALSE"
788 | "IsDependency" = "11:FALSE"
789 | "IsolateTo" = "8:"
790 | }
791 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_A9DC615F0EEBA3B3014F76FF951503C0"
792 | {
793 | "AssemblyRegister" = "3:1"
794 | "AssemblyIsInGAC" = "11:TRUE"
795 | "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
796 | "ScatterAssemblies"
797 | {
798 | "_A9DC615F0EEBA3B3014F76FF951503C0"
799 | {
800 | "Name" = "8:System.Net.Http.dll"
801 | "Attributes" = "3:512"
802 | }
803 | }
804 | "SourcePath" = "8:System.Net.Http.dll"
805 | "TargetName" = "8:"
806 | "Tag" = "8:"
807 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
808 | "Condition" = "8:"
809 | "Transitive" = "11:FALSE"
810 | "Vital" = "11:TRUE"
811 | "ReadOnly" = "11:FALSE"
812 | "Hidden" = "11:FALSE"
813 | "System" = "11:FALSE"
814 | "Permanent" = "11:FALSE"
815 | "SharedLegacy" = "11:FALSE"
816 | "PackageAs" = "3:1"
817 | "Register" = "3:1"
818 | "Exclude" = "11:TRUE"
819 | "IsDependency" = "11:TRUE"
820 | "IsolateTo" = "8:"
821 | }
822 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_BCA9A153DD704E722D4EFE47F900390F"
823 | {
824 | "AssemblyRegister" = "3:1"
825 | "AssemblyIsInGAC" = "11:TRUE"
826 | "AssemblyAsmDisplayName" = "8:System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
827 | "ScatterAssemblies"
828 | {
829 | "_BCA9A153DD704E722D4EFE47F900390F"
830 | {
831 | "Name" = "8:System.IO.Compression.dll"
832 | "Attributes" = "3:512"
833 | }
834 | }
835 | "SourcePath" = "8:System.IO.Compression.dll"
836 | "TargetName" = "8:"
837 | "Tag" = "8:"
838 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
839 | "Condition" = "8:"
840 | "Transitive" = "11:FALSE"
841 | "Vital" = "11:TRUE"
842 | "ReadOnly" = "11:FALSE"
843 | "Hidden" = "11:FALSE"
844 | "System" = "11:FALSE"
845 | "Permanent" = "11:FALSE"
846 | "SharedLegacy" = "11:FALSE"
847 | "PackageAs" = "3:1"
848 | "Register" = "3:1"
849 | "Exclude" = "11:TRUE"
850 | "IsDependency" = "11:TRUE"
851 | "IsolateTo" = "8:"
852 | }
853 | "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C31480FEC2684FDFBF2260C86B39079B"
854 | {
855 | "SourcePath" = "8:..\\WinHideExGUI\\bin\\Release\\FASM.DLL"
856 | "TargetName" = "8:FASM.DLL"
857 | "Tag" = "8:"
858 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
859 | "Condition" = "8:"
860 | "Transitive" = "11:FALSE"
861 | "Vital" = "11:TRUE"
862 | "ReadOnly" = "11:FALSE"
863 | "Hidden" = "11:FALSE"
864 | "System" = "11:FALSE"
865 | "Permanent" = "11:FALSE"
866 | "SharedLegacy" = "11:FALSE"
867 | "PackageAs" = "3:1"
868 | "Register" = "3:1"
869 | "Exclude" = "11:FALSE"
870 | "IsDependency" = "11:FALSE"
871 | "IsolateTo" = "8:"
872 | }
873 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_CFA2EC9C3DFC579CBFE39347F949A6E6"
874 | {
875 | "AssemblyRegister" = "3:1"
876 | "AssemblyIsInGAC" = "11:FALSE"
877 | "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
878 | "ScatterAssemblies"
879 | {
880 | "_CFA2EC9C3DFC579CBFE39347F949A6E6"
881 | {
882 | "Name" = "8:System.Net.Http.dll"
883 | "Attributes" = "3:512"
884 | }
885 | }
886 | "SourcePath" = "8:System.Net.Http.dll"
887 | "TargetName" = "8:"
888 | "Tag" = "8:"
889 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
890 | "Condition" = "8:"
891 | "Transitive" = "11:FALSE"
892 | "Vital" = "11:TRUE"
893 | "ReadOnly" = "11:FALSE"
894 | "Hidden" = "11:FALSE"
895 | "System" = "11:FALSE"
896 | "Permanent" = "11:FALSE"
897 | "SharedLegacy" = "11:FALSE"
898 | "PackageAs" = "3:1"
899 | "Register" = "3:1"
900 | "Exclude" = "11:TRUE"
901 | "IsDependency" = "11:TRUE"
902 | "IsolateTo" = "8:"
903 | }
904 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_D3DC46A3C194CC8CD3C6F48B59EB9464"
905 | {
906 | "AssemblyRegister" = "3:1"
907 | "AssemblyIsInGAC" = "11:FALSE"
908 | "AssemblyAsmDisplayName" = "8:System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
909 | "ScatterAssemblies"
910 | {
911 | "_D3DC46A3C194CC8CD3C6F48B59EB9464"
912 | {
913 | "Name" = "8:System.Buffers.dll"
914 | "Attributes" = "3:512"
915 | }
916 | }
917 | "SourcePath" = "8:System.Buffers.dll"
918 | "TargetName" = "8:"
919 | "Tag" = "8:"
920 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
921 | "Condition" = "8:"
922 | "Transitive" = "11:FALSE"
923 | "Vital" = "11:TRUE"
924 | "ReadOnly" = "11:FALSE"
925 | "Hidden" = "11:FALSE"
926 | "System" = "11:FALSE"
927 | "Permanent" = "11:FALSE"
928 | "SharedLegacy" = "11:FALSE"
929 | "PackageAs" = "3:1"
930 | "Register" = "3:1"
931 | "Exclude" = "11:FALSE"
932 | "IsDependency" = "11:TRUE"
933 | "IsolateTo" = "8:"
934 | }
935 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E5E6E16CA9AE39A6DB8165B60641AA91"
936 | {
937 | "AssemblyRegister" = "3:1"
938 | "AssemblyIsInGAC" = "11:FALSE"
939 | "AssemblyAsmDisplayName" = "8:System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
940 | "ScatterAssemblies"
941 | {
942 | "_E5E6E16CA9AE39A6DB8165B60641AA91"
943 | {
944 | "Name" = "8:System.Memory.dll"
945 | "Attributes" = "3:512"
946 | }
947 | }
948 | "SourcePath" = "8:System.Memory.dll"
949 | "TargetName" = "8:"
950 | "Tag" = "8:"
951 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
952 | "Condition" = "8:"
953 | "Transitive" = "11:FALSE"
954 | "Vital" = "11:TRUE"
955 | "ReadOnly" = "11:FALSE"
956 | "Hidden" = "11:FALSE"
957 | "System" = "11:FALSE"
958 | "Permanent" = "11:FALSE"
959 | "SharedLegacy" = "11:FALSE"
960 | "PackageAs" = "3:1"
961 | "Register" = "3:1"
962 | "Exclude" = "11:FALSE"
963 | "IsDependency" = "11:TRUE"
964 | "IsolateTo" = "8:"
965 | }
966 | "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E895627EDDE55495D5384B35D1CB8494"
967 | {
968 | "AssemblyRegister" = "3:1"
969 | "AssemblyIsInGAC" = "11:FALSE"
970 | "AssemblyAsmDisplayName" = "8:Reloaded.Memory.Buffers, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"
971 | "ScatterAssemblies"
972 | {
973 | "_E895627EDDE55495D5384B35D1CB8494"
974 | {
975 | "Name" = "8:Reloaded.Memory.Buffers.dll"
976 | "Attributes" = "3:512"
977 | }
978 | }
979 | "SourcePath" = "8:Reloaded.Memory.Buffers.dll"
980 | "TargetName" = "8:"
981 | "Tag" = "8:"
982 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
983 | "Condition" = "8:"
984 | "Transitive" = "11:FALSE"
985 | "Vital" = "11:TRUE"
986 | "ReadOnly" = "11:FALSE"
987 | "Hidden" = "11:FALSE"
988 | "System" = "11:FALSE"
989 | "Permanent" = "11:FALSE"
990 | "SharedLegacy" = "11:FALSE"
991 | "PackageAs" = "3:1"
992 | "Register" = "3:1"
993 | "Exclude" = "11:FALSE"
994 | "IsDependency" = "11:TRUE"
995 | "IsolateTo" = "8:"
996 | }
997 | }
998 | "FileType"
999 | {
1000 | }
1001 | "Folder"
1002 | {
1003 | "{3C67513D-01DD-4637-8A68-80971EB9504F}:_9CFB85E10FF94B1C80B1882D73746043"
1004 | {
1005 | "DefaultLocation" = "8:[ProgramFiles64Folder]\\[ProductName]"
1006 | "Name" = "8:#1925"
1007 | "AlwaysCreate" = "11:TRUE"
1008 | "Condition" = "8:"
1009 | "Transitive" = "11:FALSE"
1010 | "Property" = "8:TARGETDIR"
1011 | "Folders"
1012 | {
1013 | }
1014 | }
1015 | "{1525181F-901A-416C-8A58-119130FE478E}:_B04267FBB46A4B40AD8B802CAFB23E8B"
1016 | {
1017 | "Name" = "8:#1919"
1018 | "AlwaysCreate" = "11:FALSE"
1019 | "Condition" = "8:"
1020 | "Transitive" = "11:FALSE"
1021 | "Property" = "8:ProgramMenuFolder"
1022 | "Folders"
1023 | {
1024 | }
1025 | }
1026 | "{1525181F-901A-416C-8A58-119130FE478E}:_BB3149C9EDA54560A7BD0DAF8E30D834"
1027 | {
1028 | "Name" = "8:#1916"
1029 | "AlwaysCreate" = "11:FALSE"
1030 | "Condition" = "8:"
1031 | "Transitive" = "11:FALSE"
1032 | "Property" = "8:DesktopFolder"
1033 | "Folders"
1034 | {
1035 | }
1036 | }
1037 | }
1038 | "LaunchCondition"
1039 | {
1040 | }
1041 | "Locator"
1042 | {
1043 | }
1044 | "MsiBootstrapper"
1045 | {
1046 | "LangId" = "3:1033"
1047 | "RequiresElevation" = "11:FALSE"
1048 | }
1049 | "Product"
1050 | {
1051 | "Name" = "8:Microsoft Visual Studio"
1052 | "ProductName" = "8:WinHideEx"
1053 | "ProductCode" = "8:{0629A3C6-53CB-4B04-B36F-BC7E50559E2F}"
1054 | "PackageCode" = "8:{45455A0A-7ED8-4A53-B6B6-B943087A42C1}"
1055 | "UpgradeCode" = "8:{41ACFD6B-81AC-4EE2-9227-40471B26E47C}"
1056 | "AspNetVersion" = "8:4.0.30319.0"
1057 | "RestartWWWService" = "11:FALSE"
1058 | "RemovePreviousVersions" = "11:TRUE"
1059 | "DetectNewerInstalledVersion" = "11:TRUE"
1060 | "InstallAllUsers" = "11:TRUE"
1061 | "ProductVersion" = "8:1.0.0"
1062 | "Manufacturer" = "8:Josh Max"
1063 | "ARPHELPTELEPHONE" = "8:"
1064 | "ARPHELPLINK" = "8:"
1065 | "Title" = "8:WinHideExInstaller"
1066 | "Subject" = "8:"
1067 | "ARPCONTACT" = "8:Josh Max"
1068 | "Keywords" = "8:"
1069 | "ARPCOMMENTS" = "8:"
1070 | "ARPURLINFOABOUT" = "8:"
1071 | "ARPPRODUCTICON" = "8:"
1072 | "ARPIconIndex" = "3:0"
1073 | "SearchPath" = "8:"
1074 | "UseSystemSearchPath" = "11:TRUE"
1075 | "TargetPlatform" = "3:1"
1076 | "PreBuildEvent" = "8:"
1077 | "PostBuildEvent" = "8:"
1078 | "RunPostBuildEvent" = "3:0"
1079 | }
1080 | "Registry"
1081 | {
1082 | "HKLM"
1083 | {
1084 | "Keys"
1085 | {
1086 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_8843717A53F7490DB0DFB064345966E3"
1087 | {
1088 | "Name" = "8:Software"
1089 | "Condition" = "8:"
1090 | "AlwaysCreate" = "11:FALSE"
1091 | "DeleteAtUninstall" = "11:FALSE"
1092 | "Transitive" = "11:FALSE"
1093 | "Keys"
1094 | {
1095 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D54DAC81EEC14462BC728243712E1670"
1096 | {
1097 | "Name" = "8:[Manufacturer]"
1098 | "Condition" = "8:"
1099 | "AlwaysCreate" = "11:FALSE"
1100 | "DeleteAtUninstall" = "11:FALSE"
1101 | "Transitive" = "11:FALSE"
1102 | "Keys"
1103 | {
1104 | }
1105 | "Values"
1106 | {
1107 | }
1108 | }
1109 | }
1110 | "Values"
1111 | {
1112 | }
1113 | }
1114 | }
1115 | }
1116 | "HKCU"
1117 | {
1118 | "Keys"
1119 | {
1120 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_AB5810AA05364317AE5F35B678A4627A"
1121 | {
1122 | "Name" = "8:Software"
1123 | "Condition" = "8:"
1124 | "AlwaysCreate" = "11:FALSE"
1125 | "DeleteAtUninstall" = "11:FALSE"
1126 | "Transitive" = "11:FALSE"
1127 | "Keys"
1128 | {
1129 | "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_33215E5160614C158A0DF57588BA092E"
1130 | {
1131 | "Name" = "8:[Manufacturer]"
1132 | "Condition" = "8:"
1133 | "AlwaysCreate" = "11:FALSE"
1134 | "DeleteAtUninstall" = "11:FALSE"
1135 | "Transitive" = "11:FALSE"
1136 | "Keys"
1137 | {
1138 | }
1139 | "Values"
1140 | {
1141 | }
1142 | }
1143 | }
1144 | "Values"
1145 | {
1146 | }
1147 | }
1148 | }
1149 | }
1150 | "HKCR"
1151 | {
1152 | "Keys"
1153 | {
1154 | }
1155 | }
1156 | "HKU"
1157 | {
1158 | "Keys"
1159 | {
1160 | }
1161 | }
1162 | "HKPU"
1163 | {
1164 | "Keys"
1165 | {
1166 | }
1167 | }
1168 | }
1169 | "Sequences"
1170 | {
1171 | }
1172 | "Shortcut"
1173 | {
1174 | "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_EC43CD4A5CE44D35951580CED954FA18"
1175 | {
1176 | "Name" = "8:WinHideEx GUI"
1177 | "Arguments" = "8:"
1178 | "Description" = "8:"
1179 | "ShowCmd" = "3:1"
1180 | "IconIndex" = "3:32512"
1181 | "Transitive" = "11:FALSE"
1182 | "Target" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
1183 | "Folder" = "8:_B04267FBB46A4B40AD8B802CAFB23E8B"
1184 | "WorkingFolder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
1185 | "Icon" = "8:_86467C4FD7584D328C4FDC80D6DDCD9D"
1186 | "Feature" = "8:"
1187 | }
1188 | }
1189 | "UserInterface"
1190 | {
1191 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_083C2D0674904FADA203E4DFF7094E6D"
1192 | {
1193 | "Name" = "8:#1900"
1194 | "Sequence" = "3:1"
1195 | "Attributes" = "3:1"
1196 | "Dialogs"
1197 | {
1198 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AF607FA6AF22477696A510DC0A6BEC91"
1199 | {
1200 | "Sequence" = "3:200"
1201 | "DisplayName" = "8:Installation Folder"
1202 | "UseDynamicProperties" = "11:TRUE"
1203 | "IsDependency" = "11:FALSE"
1204 | "SourcePath" = "8:\\VsdFolderDlg.wid"
1205 | "Properties"
1206 | {
1207 | "BannerBitmap"
1208 | {
1209 | "Name" = "8:BannerBitmap"
1210 | "DisplayName" = "8:#1001"
1211 | "Description" = "8:#1101"
1212 | "Type" = "3:8"
1213 | "ContextData" = "8:Bitmap"
1214 | "Attributes" = "3:4"
1215 | "Setting" = "3:1"
1216 | "UsePlugInResources" = "11:TRUE"
1217 | }
1218 | "InstallAllUsersVisible"
1219 | {
1220 | "Name" = "8:InstallAllUsersVisible"
1221 | "DisplayName" = "8:#1059"
1222 | "Description" = "8:#1159"
1223 | "Type" = "3:5"
1224 | "ContextData" = "8:1;True=1;False=0"
1225 | "Attributes" = "3:0"
1226 | "Setting" = "3:0"
1227 | "Value" = "3:1"
1228 | "DefaultValue" = "3:1"
1229 | "UsePlugInResources" = "11:TRUE"
1230 | }
1231 | }
1232 | }
1233 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C308B307292C46A8A865C4893DF382E0"
1234 | {
1235 | "Sequence" = "3:300"
1236 | "DisplayName" = "8:Confirm Installation"
1237 | "UseDynamicProperties" = "11:TRUE"
1238 | "IsDependency" = "11:FALSE"
1239 | "SourcePath" = "8:\\VsdConfirmDlg.wid"
1240 | "Properties"
1241 | {
1242 | "BannerBitmap"
1243 | {
1244 | "Name" = "8:BannerBitmap"
1245 | "DisplayName" = "8:#1001"
1246 | "Description" = "8:#1101"
1247 | "Type" = "3:8"
1248 | "ContextData" = "8:Bitmap"
1249 | "Attributes" = "3:4"
1250 | "Setting" = "3:1"
1251 | "UsePlugInResources" = "11:TRUE"
1252 | }
1253 | }
1254 | }
1255 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_EB2EBB61A5474646874151FB8869148B"
1256 | {
1257 | "Sequence" = "3:100"
1258 | "DisplayName" = "8:Welcome"
1259 | "UseDynamicProperties" = "11:TRUE"
1260 | "IsDependency" = "11:FALSE"
1261 | "SourcePath" = "8:\\VsdWelcomeDlg.wid"
1262 | "Properties"
1263 | {
1264 | "BannerBitmap"
1265 | {
1266 | "Name" = "8:BannerBitmap"
1267 | "DisplayName" = "8:#1001"
1268 | "Description" = "8:#1101"
1269 | "Type" = "3:8"
1270 | "ContextData" = "8:Bitmap"
1271 | "Attributes" = "3:4"
1272 | "Setting" = "3:1"
1273 | "UsePlugInResources" = "11:TRUE"
1274 | }
1275 | "CopyrightWarning"
1276 | {
1277 | "Name" = "8:CopyrightWarning"
1278 | "DisplayName" = "8:#1002"
1279 | "Description" = "8:#1102"
1280 | "Type" = "3:3"
1281 | "ContextData" = "8:"
1282 | "Attributes" = "3:0"
1283 | "Setting" = "3:1"
1284 | "Value" = "8:#1202"
1285 | "DefaultValue" = "8:#1202"
1286 | "UsePlugInResources" = "11:TRUE"
1287 | }
1288 | "Welcome"
1289 | {
1290 | "Name" = "8:Welcome"
1291 | "DisplayName" = "8:#1003"
1292 | "Description" = "8:#1103"
1293 | "Type" = "3:3"
1294 | "ContextData" = "8:"
1295 | "Attributes" = "3:0"
1296 | "Setting" = "3:1"
1297 | "Value" = "8:#1203"
1298 | "DefaultValue" = "8:#1203"
1299 | "UsePlugInResources" = "11:TRUE"
1300 | }
1301 | }
1302 | }
1303 | }
1304 | }
1305 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_1BF241043F204008BA638C47BC264F3B"
1306 | {
1307 | "Name" = "8:#1902"
1308 | "Sequence" = "3:2"
1309 | "Attributes" = "3:3"
1310 | "Dialogs"
1311 | {
1312 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2B42C5AB0D774D66A21032BA96C42953"
1313 | {
1314 | "Sequence" = "3:100"
1315 | "DisplayName" = "8:Finished"
1316 | "UseDynamicProperties" = "11:TRUE"
1317 | "IsDependency" = "11:FALSE"
1318 | "SourcePath" = "8:\\VsdAdminFinishedDlg.wid"
1319 | "Properties"
1320 | {
1321 | "BannerBitmap"
1322 | {
1323 | "Name" = "8:BannerBitmap"
1324 | "DisplayName" = "8:#1001"
1325 | "Description" = "8:#1101"
1326 | "Type" = "3:8"
1327 | "ContextData" = "8:Bitmap"
1328 | "Attributes" = "3:4"
1329 | "Setting" = "3:1"
1330 | "UsePlugInResources" = "11:TRUE"
1331 | }
1332 | }
1333 | }
1334 | }
1335 | }
1336 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_35BFC9BA9CB74474A4676238B40910C7"
1337 | {
1338 | "Name" = "8:#1900"
1339 | "Sequence" = "3:2"
1340 | "Attributes" = "3:1"
1341 | "Dialogs"
1342 | {
1343 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0A410458415B43BB8673FD3DA90DC9F5"
1344 | {
1345 | "Sequence" = "3:200"
1346 | "DisplayName" = "8:Installation Folder"
1347 | "UseDynamicProperties" = "11:TRUE"
1348 | "IsDependency" = "11:FALSE"
1349 | "SourcePath" = "8:\\VsdAdminFolderDlg.wid"
1350 | "Properties"
1351 | {
1352 | "BannerBitmap"
1353 | {
1354 | "Name" = "8:BannerBitmap"
1355 | "DisplayName" = "8:#1001"
1356 | "Description" = "8:#1101"
1357 | "Type" = "3:8"
1358 | "ContextData" = "8:Bitmap"
1359 | "Attributes" = "3:4"
1360 | "Setting" = "3:1"
1361 | "UsePlugInResources" = "11:TRUE"
1362 | }
1363 | }
1364 | }
1365 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0C3334BA5A074CCDAC528876F1F9DF23"
1366 | {
1367 | "Sequence" = "3:100"
1368 | "DisplayName" = "8:Welcome"
1369 | "UseDynamicProperties" = "11:TRUE"
1370 | "IsDependency" = "11:FALSE"
1371 | "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid"
1372 | "Properties"
1373 | {
1374 | "BannerBitmap"
1375 | {
1376 | "Name" = "8:BannerBitmap"
1377 | "DisplayName" = "8:#1001"
1378 | "Description" = "8:#1101"
1379 | "Type" = "3:8"
1380 | "ContextData" = "8:Bitmap"
1381 | "Attributes" = "3:4"
1382 | "Setting" = "3:1"
1383 | "UsePlugInResources" = "11:TRUE"
1384 | }
1385 | "CopyrightWarning"
1386 | {
1387 | "Name" = "8:CopyrightWarning"
1388 | "DisplayName" = "8:#1002"
1389 | "Description" = "8:#1102"
1390 | "Type" = "3:3"
1391 | "ContextData" = "8:"
1392 | "Attributes" = "3:0"
1393 | "Setting" = "3:1"
1394 | "Value" = "8:#1202"
1395 | "DefaultValue" = "8:#1202"
1396 | "UsePlugInResources" = "11:TRUE"
1397 | }
1398 | "Welcome"
1399 | {
1400 | "Name" = "8:Welcome"
1401 | "DisplayName" = "8:#1003"
1402 | "Description" = "8:#1103"
1403 | "Type" = "3:3"
1404 | "ContextData" = "8:"
1405 | "Attributes" = "3:0"
1406 | "Setting" = "3:1"
1407 | "Value" = "8:#1203"
1408 | "DefaultValue" = "8:#1203"
1409 | "UsePlugInResources" = "11:TRUE"
1410 | }
1411 | }
1412 | }
1413 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_3A20E630C28A494180104C88C53E621B"
1414 | {
1415 | "Sequence" = "3:300"
1416 | "DisplayName" = "8:Confirm Installation"
1417 | "UseDynamicProperties" = "11:TRUE"
1418 | "IsDependency" = "11:FALSE"
1419 | "SourcePath" = "8:\\VsdAdminConfirmDlg.wid"
1420 | "Properties"
1421 | {
1422 | "BannerBitmap"
1423 | {
1424 | "Name" = "8:BannerBitmap"
1425 | "DisplayName" = "8:#1001"
1426 | "Description" = "8:#1101"
1427 | "Type" = "3:8"
1428 | "ContextData" = "8:Bitmap"
1429 | "Attributes" = "3:4"
1430 | "Setting" = "3:1"
1431 | "UsePlugInResources" = "11:TRUE"
1432 | }
1433 | }
1434 | }
1435 | }
1436 | }
1437 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_36367292CD194A3AA5E9B8F63001AD2A"
1438 | {
1439 | "Name" = "8:#1901"
1440 | "Sequence" = "3:2"
1441 | "Attributes" = "3:2"
1442 | "Dialogs"
1443 | {
1444 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_518068EB95FC4FE6A8F8839709A5519C"
1445 | {
1446 | "Sequence" = "3:100"
1447 | "DisplayName" = "8:Progress"
1448 | "UseDynamicProperties" = "11:TRUE"
1449 | "IsDependency" = "11:FALSE"
1450 | "SourcePath" = "8:\\VsdAdminProgressDlg.wid"
1451 | "Properties"
1452 | {
1453 | "BannerBitmap"
1454 | {
1455 | "Name" = "8:BannerBitmap"
1456 | "DisplayName" = "8:#1001"
1457 | "Description" = "8:#1101"
1458 | "Type" = "3:8"
1459 | "ContextData" = "8:Bitmap"
1460 | "Attributes" = "3:4"
1461 | "Setting" = "3:1"
1462 | "UsePlugInResources" = "11:TRUE"
1463 | }
1464 | "ShowProgress"
1465 | {
1466 | "Name" = "8:ShowProgress"
1467 | "DisplayName" = "8:#1009"
1468 | "Description" = "8:#1109"
1469 | "Type" = "3:5"
1470 | "ContextData" = "8:1;True=1;False=0"
1471 | "Attributes" = "3:0"
1472 | "Setting" = "3:0"
1473 | "Value" = "3:1"
1474 | "DefaultValue" = "3:1"
1475 | "UsePlugInResources" = "11:TRUE"
1476 | }
1477 | }
1478 | }
1479 | }
1480 | }
1481 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_37D91736E571423CAA35D3A3BA587C18"
1482 | {
1483 | "Name" = "8:#1902"
1484 | "Sequence" = "3:1"
1485 | "Attributes" = "3:3"
1486 | "Dialogs"
1487 | {
1488 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_679CCD56315D4A04AAE1BC80912E1F14"
1489 | {
1490 | "Sequence" = "3:100"
1491 | "DisplayName" = "8:Finished"
1492 | "UseDynamicProperties" = "11:TRUE"
1493 | "IsDependency" = "11:FALSE"
1494 | "SourcePath" = "8:\\VsdFinishedDlg.wid"
1495 | "Properties"
1496 | {
1497 | "BannerBitmap"
1498 | {
1499 | "Name" = "8:BannerBitmap"
1500 | "DisplayName" = "8:#1001"
1501 | "Description" = "8:#1101"
1502 | "Type" = "3:8"
1503 | "ContextData" = "8:Bitmap"
1504 | "Attributes" = "3:4"
1505 | "Setting" = "3:1"
1506 | "UsePlugInResources" = "11:TRUE"
1507 | }
1508 | "UpdateText"
1509 | {
1510 | "Name" = "8:UpdateText"
1511 | "DisplayName" = "8:#1058"
1512 | "Description" = "8:#1158"
1513 | "Type" = "3:15"
1514 | "ContextData" = "8:"
1515 | "Attributes" = "3:0"
1516 | "Setting" = "3:1"
1517 | "Value" = "8:#1258"
1518 | "DefaultValue" = "8:#1258"
1519 | "UsePlugInResources" = "11:TRUE"
1520 | }
1521 | }
1522 | }
1523 | }
1524 | }
1525 | "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6E9A3D63FD334E6799217780BF43CA44"
1526 | {
1527 | "Name" = "8:#1901"
1528 | "Sequence" = "3:1"
1529 | "Attributes" = "3:2"
1530 | "Dialogs"
1531 | {
1532 | "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9D8BF84609A0423BB6108976B8094738"
1533 | {
1534 | "Sequence" = "3:100"
1535 | "DisplayName" = "8:Progress"
1536 | "UseDynamicProperties" = "11:TRUE"
1537 | "IsDependency" = "11:FALSE"
1538 | "SourcePath" = "8:\\VsdProgressDlg.wid"
1539 | "Properties"
1540 | {
1541 | "BannerBitmap"
1542 | {
1543 | "Name" = "8:BannerBitmap"
1544 | "DisplayName" = "8:#1001"
1545 | "Description" = "8:#1101"
1546 | "Type" = "3:8"
1547 | "ContextData" = "8:Bitmap"
1548 | "Attributes" = "3:4"
1549 | "Setting" = "3:1"
1550 | "UsePlugInResources" = "11:TRUE"
1551 | }
1552 | "ShowProgress"
1553 | {
1554 | "Name" = "8:ShowProgress"
1555 | "DisplayName" = "8:#1009"
1556 | "Description" = "8:#1109"
1557 | "Type" = "3:5"
1558 | "ContextData" = "8:1;True=1;False=0"
1559 | "Attributes" = "3:0"
1560 | "Setting" = "3:0"
1561 | "Value" = "3:1"
1562 | "DefaultValue" = "3:1"
1563 | "UsePlugInResources" = "11:TRUE"
1564 | }
1565 | }
1566 | }
1567 | }
1568 | }
1569 | "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_B8A0A375FA78466B946C64B330A79CE8"
1570 | {
1571 | "UseDynamicProperties" = "11:FALSE"
1572 | "IsDependency" = "11:FALSE"
1573 | "SourcePath" = "8:\\VsdBasicDialogs.wim"
1574 | }
1575 | "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_BB88C7CCF4C04415AFE51D431A78515C"
1576 | {
1577 | "UseDynamicProperties" = "11:FALSE"
1578 | "IsDependency" = "11:FALSE"
1579 | "SourcePath" = "8:\\VsdUserInterface.wim"
1580 | }
1581 | }
1582 | "MergeModule"
1583 | {
1584 | }
1585 | "ProjectOutput"
1586 | {
1587 | "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_86467C4FD7584D328C4FDC80D6DDCD9D"
1588 | {
1589 | "SourcePath" = "8:..\\WinHideExGUI\\obj\\Release\\WinHideExGUI.exe"
1590 | "TargetName" = "8:"
1591 | "Tag" = "8:"
1592 | "Folder" = "8:_9CFB85E10FF94B1C80B1882D73746043"
1593 | "Condition" = "8:"
1594 | "Transitive" = "11:FALSE"
1595 | "Vital" = "11:TRUE"
1596 | "ReadOnly" = "11:FALSE"
1597 | "Hidden" = "11:FALSE"
1598 | "System" = "11:FALSE"
1599 | "Permanent" = "11:FALSE"
1600 | "SharedLegacy" = "11:FALSE"
1601 | "PackageAs" = "3:1"
1602 | "Register" = "3:1"
1603 | "Exclude" = "11:FALSE"
1604 | "IsDependency" = "11:FALSE"
1605 | "IsolateTo" = "8:"
1606 | "ProjectOutputGroupRegister" = "3:1"
1607 | "OutputConfiguration" = "8:Release|Any CPU"
1608 | "OutputGroupCanonicalName" = "8:Built"
1609 | "OutputProjectGuid" = "8:{2C29A8A9-DEFC-4559-8920-D5283055BF1B}"
1610 | "ShowKeyOutput" = "11:TRUE"
1611 | "ExcludeFilters"
1612 | {
1613 | }
1614 | }
1615 | }
1616 | }
1617 | }
1618 |
--------------------------------------------------------------------------------