├── .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 | --------------------------------------------------------------------------------