Repository: stascorp/rdpwrap Branch: master Commit: a5c64a43319e Files: 48 Total size: 573.4 KB Directory structure: gitextract_ozt0zoq1/ ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── bin/ │ ├── install.bat │ ├── uninstall.bat │ └── update.bat ├── res/ │ ├── RDPWInst.wxs │ ├── build_wxs.bat │ ├── clearres.bat │ ├── legacy.install.bat │ ├── rdpwrap-arm-kb.ini │ ├── rdpwrap-ini-kb.txt │ └── rdpwrap.ini ├── src-installer/ │ ├── RDPWInst.dpr │ ├── RDPWInst.dproj │ └── resource.res ├── src-rdpcheck/ │ ├── MainUnit.dfm │ ├── MainUnit.pas │ ├── RDPCheck.dpr │ ├── RDPCheck.dproj │ └── RDPCheck.res ├── src-rdpconfig/ │ ├── LicenseUnit.dfm │ ├── LicenseUnit.pas │ ├── MainUnit.dfm │ ├── MainUnit.pas │ ├── RDPConf.dpr │ ├── RDPConf.dproj │ ├── RDPConf.res │ └── resource.res ├── src-x86-binarymaster/ │ ├── LiteINI.pas │ ├── rdpwrap.dpr │ ├── rdpwrap.dproj │ └── rdpwrap.res ├── src-x86-x64-Fusix/ │ ├── Export.def │ ├── IniFile.cpp │ ├── IniFile.h │ ├── RDPWrap.cpp │ ├── RDPWrap.sln │ ├── RDPWrap.v11.suo │ ├── RDPWrap.vcxproj │ ├── RDPWrap.vcxproj.filters │ ├── ReadMe.txt │ ├── dllmain.cpp │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h └── technical.txt ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ # Auto detect text files and perform LF normalization * text=auto # Plain text (Windows) *.txt diff=astextplain eol=crlf *.ini diff=astextplain eol=crlf ================================================ FILE: .gitignore ================================================ # Delphi local files (user-specific info) *.local *.identcache # Delphi history and backups __history/ *.~* # Compiled binaries *.dcu *.exe *.dll *.msi # MSI local stuff *.wixobj *.wixpdb ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: README.md ================================================ # RDP Wrapper Library by Stas'M [![Telegram](https://img.shields.io/badge/chat-Telegram-blue.svg)](https://t.me/rdpwrap) ![Environment](https://img.shields.io/badge/Windows-Vista,%207,%208,%2010-brightgreen.svg) [![Release](https://img.shields.io/github/release/stascorp/rdpwrap.svg)](https://github.com/stascorp/rdpwrap/releases) ![License](https://img.shields.io/github/license/stascorp/rdpwrap.svg) ![Downloads](https://img.shields.io/github/downloads/stascorp/rdpwrap/latest/total.svg) ![TotalDownloads](https://img.shields.io/github/downloads/stascorp/rdpwrap/total.svg) The goal of this project is to enable Remote Desktop Host support and concurrent RDP sessions on reduced functionality systems for home usage. RDP Wrapper works as a layer between Service Control Manager and Terminal Services, so the original termsrv.dll file remains untouched. Also this method is very strong against Windows Update. [pVistaST]: http://stascorp.com/images/rdpwrap/pVistaST.jpg [pVistaHB]: http://stascorp.com/images/rdpwrap/pVistaHB.jpg [pWin7ST]: http://stascorp.com/images/rdpwrap/pWin7ST.jpg [pWin7HB]: http://stascorp.com/images/rdpwrap/pWin7HB.jpg [pWin8DP]: http://stascorp.com/images/rdpwrap/pWin8DP.jpg [pWin8CP]: http://stascorp.com/images/rdpwrap/pWin8CP.jpg [pWin8RP]: http://stascorp.com/images/rdpwrap/pWin8RP.jpg [pWin8]: http://stascorp.com/images/rdpwrap/pWin8.jpg [pWin81P]: http://stascorp.com/images/rdpwrap/pWin81P.jpg [pWin81]: http://stascorp.com/images/rdpwrap/pWin81.jpg [pWin10TP]: http://stascorp.com/images/rdpwrap/pWin10TP.jpg [pWin10PTP]: http://stascorp.com/images/rdpwrap/pWin10PTP.jpg [pWin10]: http://stascorp.com/images/rdpwrap/pWin10.jpg [fVistaST]: http://stascorp.com/images/rdpwrap/VistaST.png [fVistaHB]: http://stascorp.com/images/rdpwrap/VistaHB.png [fWin7ST]: http://stascorp.com/images/rdpwrap/Win7ST.png [fWin7HB]: http://stascorp.com/images/rdpwrap/Win7HB.png [fWin8DP]: http://stascorp.com/images/rdpwrap/Win8DP.png [fWin8CP]: http://stascorp.com/images/rdpwrap/Win8CP.png [fWin8RP]: http://stascorp.com/images/rdpwrap/Win8RP.png [fWin8]: http://stascorp.com/images/rdpwrap/Win8.png [fWin81P]: http://stascorp.com/images/rdpwrap/Win81P.png [fWin81]: http://stascorp.com/images/rdpwrap/Win81.png [fWin10TP]: http://stascorp.com/images/rdpwrap/Win10TP.png [fWin10PTP]: http://stascorp.com/images/rdpwrap/Win10PTP.png [fWin10]: http://stascorp.com/images/rdpwrap/Win10.png | NT Version | Screenshots | | ------------- | ----------- | | Windows Vista | [![Windows Vista Starter][pVistaST]][fVistaST] [![Windows Vista Home Basic][pVistaHB]][fVistaHB] | | Windows 7 | [![Windows 7 Starter][pWin7ST]][fWin7ST] [![Windows 7 Home Basic][pWin7HB]][fWin7HB] | | Windows 8 | [![Windows 8 Developer Preview][pWin8DP]][fWin8DP] [![Windows 8 Consumer Preview][pWin8CP]][fWin8CP] [![Windows 8 Release Preview][pWin8RP]][fWin8RP] [![Windows 8][pWin8]][fWin8] | | Windows 8.1 | [![Windows 8.1 Preview][pWin81P]][fWin81P] [![Windows 8.1][pWin81]][fWin81] | | Windows 10 | [![Windows 10 Technical Preview][pWin10TP]][fWin10TP] [![Windows 10 Pro Technical Preview][pWin10PTP]][fWin10PTP] [![Windows 10][pWin10]][fWin10] | --- [WinPPE]: http://forums.mydigitallife.info/threads/39411-Windows-Product-Policy-Editor This solution was inspired by [Windows Product Policy Editor][WinPPE], big thanks to **kost** :) — binarymaster ### Attention: It's recommended to have original termsrv.dll file with the RDP Wrapper installation. If you have modified it before with other patchers, it may become unstable and crash in any moment. ### Information: - Source code is available, so you can build it on your own - RDP Wrapper does not patch termsrv.dll, it loads termsrv with different parameters - RDPWInst and RDPChecker can be redistributed without development folder and batch files - RDPWInst can be used for unattended installation / deployment - Windows 2000, XP and Server 2003 will not be supported ### Key features: - RDP host server on any Windows edition beginning from Vista - Console and remote sessions at the same time - Using the same user simultaneously for local and remote logon (see configuration app) - Up to [15 concurrent sessions](https://github.com/stascorp/rdpwrap/issues/192) (the actual limitation depends on your hardware and OS version) - Console and RDP session shadowing (using [Task Manager in Windows 7](http://cdn.freshdesk.com/data/helpdesk/attachments/production/1009641577/original/remote_control.png?1413476051) and lower, and [Remote Desktop Connection in Windows 8](http://woshub.com/rds-shadow-how-to-connect-to-a-user-session-in-windows-server-2012-r2/) and higher) - Full [multi-monitor support](https://github.com/stascorp/rdpwrap/issues/163) for RDP host - ...and if you find a new feature not listed here, [tell us](https://github.com/stascorp/rdpwrap/issues/new) ;) ### Porting to other platforms: - **ARM** for Windows RT (see links below) - **IA-64** for Itanium-based Windows Server? *Well, I have no idea* :) ### Building the binaries: - **x86 Delphi version** can be built with *Embarcadero RAD Studio 2010* - **x86/x64 C++ version** can be built with *Microsoft Visual Studio 2013* [andrewblock]: http://web.archive.org/web/20150810054558/http://andrewblock.net/enable-remote-desktop-on-windows-8-core/ [mydigitallife]: http://forums.mydigitallife.info/threads/55935-RDP-Wrapper-Library-(works-with-Windows-8-1-Basic) [xda-dev]: http://forum.xda-developers.com/showthread.php?t=2093525&page=3 [yt-updating]: http://www.youtube.com/watch?v=W9BpbEt1yJw [yt-offsets]: http://www.youtube.com/watch?v=FiD86tmRBtk ### Links: - Official GitHub repository:
https://github.com/stascorp/rdpwrap/ - Official Telegram chat:
https://t.me/rdpwrap - Active discussion in the comments here:
[Enable remote desktop on Windows 8 core / basic - Andrew Block .net][andrewblock] - MDL Projects and Applications thread here:
[RDP Wrapper Library (works with Windows 8.1 Basic)][mydigitallife] - Some ideas about porting to ARM for Windows RT (post #23):
[\[Q\] Mod Windows RT to enable Remote Desktop][xda-dev] - Adding «Remote Desktop Users» group:
http://superuser.com/questions/680572/ #### Tutorial videos: - [~~Updating RDP Wrapper INI file manually~~][yt-updating] (now use installer to update INI file) - [How to find offsets for new termsrv.dll versions][yt-offsets] ### Files in release package: | File name | Description | | --------- | ----------- | | `RDPWInst.exe` | RDP Wrapper Library installer/uninstaller | | `RDPCheck.exe` | Local RDP Checker (you can check the RDP is working) | | `RDPConf.exe` | RDP Wrapper Configuration | | `install.bat` | Quick install batch file | | `uninstall.bat` | Quick uninstall batch file | | `update.bat` | Quick update batch file | ### Frequently Asked Questions > Where can I download the installer or binaries? In the [GitHub Releases](https://github.com/stascorp/rdpwrap/releases) section. > Is it legal to use this application? There is no definitive answer, see [this discussion](https://github.com/stascorp/rdpwrap/issues/26). > The installer tries to access the Internet, is it normal behaviour? Yes, it works in online mode by default. You may disable it by removing `-o` flag in the `install.bat` file. > What is online install mode? Online install mode introduced in version 1.6.1. When you installing RDP Wrapper first time using this mode, it will download [latest INI file](https://github.com/stascorp/rdpwrap/blob/master/res/rdpwrap.ini) from GitHub. See [this discussion](https://github.com/stascorp/rdpwrap/issues/132). > What is INI file and why we need it? INI file was introduced in version 1.5. It stores system configuration for RDP Wrapper — general wrapping settings, binary patch codes, and per build specific data. When new `termsrv.dll` build comes out, developer adds support for it by updating INI file in repository. > Config Tool reports version 1.5, but I installed higher version. What's the matter? Beginning with version 1.5 the `rdpwrap.dll` is not updated anymore, since all settings are stored in INI file. Deal with it. > Config Tool shows `[not supported]` and RDP doesn't work. What can I do? Make sure you're connected to the Internet and run `update.bat`. > Update doesn't help, it still shows `[not supported]`. Visit [issues](https://github.com/stascorp/rdpwrap/issues) section, and check whether your `termsrv.dll` build is listed here. If you can't find such issue, create a new — specify your build version for adding to support. > Why `RDPCheck` doesn't allow to change resolution and other settings? `RDPCheck` is a very simple application and only for testing purposes. You need to use Microsoft Remote Desktop Client (`mstsc.exe`) if you want to customize the settings. You can use `127.0.0.1` or `127.0.0.2` address for loopback connection. ### Known issues: - Beginning with Windows 8 **on tablet PCs** inactive sessions will be logged out by system - [more info](https://github.com/stascorp/rdpwrap/issues/37) - Beginning with Windows 10 you can accidentally lock yourself from PC - [more info](https://github.com/stascorp/rdpwrap/issues/50) - Beginning with the Creators Update for Windows 10 Home, RDP Wrapper will no longer work, claiming that the listener is `[not listening]` because of `rfxvmt.dll` is missing - [more info](https://github.com/stascorp/rdpwrap/issues/194#issuecomment-323564111), [download links](https://github.com/stascorp/rdpwrap/issues/194#issuecomment-325627235) - Terminal Service does not start after installing some updates or "Access Denied" issue - [#215](https://github.com/stascorp/rdpwrap/issues/215), [#101](https://github.com/stascorp/rdpwrap/issues/101) - RDP Wrapper does not work with RemoteFX enabled hosts - [#127](https://github.com/stascorp/rdpwrap/issues/127), [#208](https://github.com/stascorp/rdpwrap/issues/208), [#216](https://github.com/stascorp/rdpwrap/issues/216) - RDP works, but termsrv.dll crashes on logon attempt - Windows Vista Starter RTM x86 (termsrv.dll `6.0.6000.16386`) - If Terminal Services hangs at startup, try to add **`rdpwrap.dll`** to antivirus exclusions. Also try to isolate RDP Wrapper from other shared services by the command:
`sc config TermService type= own` - RDP Wrapper can be removed by AVG Free Antivirus and [Norton Antivirus](https://github.com/stascorp/rdpwrap/issues/191) - first make sure you downloaded [official release](https://github.com/stascorp/rdpwrap/releases) from GitHub, then add it to exclusions. --- ### Change log: #### 2017.12.27 - Version 1.6.2 - Installer updated - Include updated INI file for latest Windows builds - Added check for supported Windows versions ([#155](https://github.com/stascorp/rdpwrap/issues/155)) - Added feature to take INI file from current directory ([#300](https://github.com/stascorp/rdpwrap/issues/300)) - Added feature to restore rfxvmt.dll (missing in Windows 10 Home [#194](https://github.com/stascorp/rdpwrap/issues/194)) - RDP Config updated - Added feature to allow custom start programs ([#13 (comment)](https://github.com/stascorp/rdpwrap/issues/13#issuecomment-77651843)) - MSI installation package added ([#14](https://github.com/stascorp/rdpwrap/issues/14)) #### 2016.08.01 - Version 1.6.1 - Include updated INI file for latest Windows builds - Installer updated - Added online install mode - Added feature to keep settings on uninstall - RDP Config updated - Fixed update firewall rule on RDP port change - Added feature to hide users on logon #### 2015.08.12 - Version 1.6 - Added support for Windows 10 - INI file has smaller size now - all comments are moved to KB file - Installer updated - Added workaround for 1056 error (although it isn't an error) - Added update support to installer - Newest RDPClip versions are included with installer - RDP Checker updated - Changed connect IP to 127.0.0.2 - Updated some text messages - RDP Config updated - Added all possible shadowing modes - Also it will write settings to the group policy #### 2014.12.11 - Version 1.5 - Added INI config support - Configuration is stored in INI file now - We can extend version support without building new binaries - Added support for Windows 8.1 with KB3000850 - Added support for Windows 10 Technical Preview Update 2 - Installer updated - RDP Config updated - Diagnostics feature added to RDP Config #### 2014.11.14 - Version 1.4 - Added support for Windows 10 Technical Preview Update 1 - Added support for Windows Vista SP2 with KB3003743 - Added support for Windows 7 SP1 with KB3003743 - Added new RDP Configuration Program #### 2014.10.21 - Installer updated - Added feature to install RDP Wrapper to System32 directory - Fixed issue in the installer - NLA setting now remains unchanged - Local RDP Checker updated - SecurityLayer and UserAuthentification values changed on check start - RDP Checker restores values on exit #### 2014.10.20 - Version 1.3 - Added support for Windows 10 Technical Preview - Added support for Windows 7 with KB2984972 - Added support for Windows 8 with KB2973501 - Added extended support for Windows Vista (SP0, SP1 and SP2) - Added extended support for Windows 7 (SP0 and SP1) - Some improvements in the source code - Installer updated to v2.2 - Fixed installation bug in Vista x64 (wrong expand path) - Local RDP Checker updated - Added description to error 0x708 #### 2014.07.26 - Version 1.2 - Added support for Windows 8 Developer Preview - Added support for Windows 8 Consumer Preview - Added support for Windows 8 Release Preview - Added support for Windows 8.1 Preview - Added support for Windows 8.1 - More details you will see in the source code - Installer updated to v2.1 #### 2013.12.09 - C++ port of RDP Wrapper was made by Fusix - x64 architecture is supported now - Added new command line installer v2.0 - Added local RDP checker - Source code (C++ port, installer 2.0, local RDP checker) is also included #### 2013.10.25 - Version 1.1 source code is available #### 2013.10.22 - Version 1.1 - Stable release - Improved wrapper (now it can wrap internal unexported termsrv.dll SL Policy function) - Added support for Windows 8 Single Language (tested on Acer Tablet PC with Intel Atom Z2760) #### 2013.10.19 - Version 1.0 - First [beta] version - Basic SL Policy wrapper --- #### Supported Terminal Services versions: - 6.0.X.X (Windows Vista / Server 2008) - 6.0.6000.16386 (Windows Vista) - 6.0.6001.18000 (Windows Vista SP1) - 6.0.6002.18005 (Windows Vista SP2) - 6.0.6002.19214 (Windows Vista SP2 with KB3003743 GDR) - 6.0.6002.23521 (Windows Vista SP2 with KB3003743 LDR) - 6.1.X.X (Windows 7 / Server 2008 R2) - 6.1.7600.16385 (Windows 7) - 6.1.7600.20890 (Windows 7 with KB2479710) - 6.1.7600.21316 (Windows 7 with KB2750090) - 6.1.7601.17514 (Windows 7 SP1) - 6.1.7601.21650 (Windows 7 SP1 with KB2479710) - 6.1.7601.21866 (Windows 7 SP1 with KB2647409) - 6.1.7601.22104 (Windows 7 SP1 with KB2750090) - 6.1.7601.18540 (Windows 7 SP1 with KB2984972 GDR) - 6.1.7601.22750 (Windows 7 SP1 with KB2984972 LDR) - 6.1.7601.18637 (Windows 7 SP1 with KB3003743 GDR) - 6.1.7601.22843 (Windows 7 SP1 with KB3003743 LDR) - 6.1.7601.23403 (Windows 7 SP1 with KB3125574) - 6.1.7601.24234 (Windows 7 SP1 with KB4462923) - 6.2.8102.0 (Windows 8 Developer Preview) - 6.2.8250.0 (Windows 8 Consumer Preview) - 6.2.8400.0 (Windows 8 Release Preview) - 6.2.9200.16384 (Windows 8 / Server 2012) - 6.2.9200.17048 (Windows 8 with KB2973501 GDR) - 6.2.9200.21166 (Windows 8 with KB2973501 LDR) - 6.3.9431.0 (Windows 8.1 Preview) - 6.3.9600.16384 (Windows 8.1 / Server 2012 R2) - 6.3.9600.17095 (Windows 8.1 with KB2959626) - 6.3.9600.17415 (Windows 8.1 with KB3000850) - 6.3.9600.18692 (Windows 8.1 with KB4022720) - 6.3.9600.18708 (Windows 8.1 with KB4025335) - 6.3.9600.18928 (Windows 8.1 with KB4088876) - 6.3.9600.19093 (Windows 8.1 with KB4343891) - 6.4.9841.0 (Windows 10 Technical Preview) - 6.4.9860.0 (Windows 10 Technical Preview Update 1) - 6.4.9879.0 (Windows 10 Technical Preview Update 2) - 10.0.9926.0 (Windows 10 Pro Technical Preview) - 10.0.10041.0 (Windows 10 Pro Technical Preview Update 1) - 10.0.10240.16384 (Windows 10 RTM) - 10.0.10586.0 (Windows 10 TH2 Release 151029-1700) - 10.0.10586.589 (Windows 10 TH2 Release 160906-1759 with KB3185614) - 10.0.11082.1000 (Windows 10 RS1 Release 151210-2021) - 10.0.11102.1000 (Windows 10 RS1 Release 160113-1800) - 10.0.14251.1000 (Windows 10 RS1 Release 160124-1059) - 10.0.14271.1000 (Windows 10 RS1 Release 160218-2310) - 10.0.14279.1000 (Windows 10 RS1 Release 160229-1700) - 10.0.14295.1000 (Windows 10 RS1 Release 160318-1628) - 10.0.14300.1000 (Windows Server 2016 Technical Preview 5) - 10.0.14316.1000 (Windows 10 RS1 Release 160402-2227) - 10.0.14328.1000 (Windows 10 RS1 Release 160418-1609) - 10.0.14332.1001 (Windows 10 RS1 Release 160422-1940) - 10.0.14342.1000 (Windows 10 RS1 Release 160506-1708) - 10.0.14352.1002 (Windows 10 RS1 Release 160522-1930) - 10.0.14366.0 (Windows 10 RS1 Release 160610-1700) - 10.0.14367.0 (Windows 10 RS1 Release 160613-1700) - 10.0.14372.0 (Windows 10 RS1 Release 160620-2342) - 10.0.14379.0 (Windows 10 RS1 Release 160627-1607) - 10.0.14383.0 (Windows 10 RS1 Release 160701-1839) - 10.0.14385.0 (Windows 10 RS1 Release 160706-1700) - 10.0.14388.0 (Windows 10 RS1 Release 160709-1635) - 10.0.14393.0 (Windows 10 RS1 Release 160715-1616) - 10.0.14393.1198 (Windows 10 RS1 Release Sec 170427-1353 with KB4019472) - 10.0.14393.1737 (Windows 10 RS1 Release Inmarket 170914-1249 with KB4041691) - 10.0.14393.2457 (Windows 10 RS1 Release Inmarket 180822-1743 with KB4343884) - 10.0.14901.1000 (Windows 10 RS Pre-Release 160805-1700) - 10.0.14905.1000 (Windows 10 RS Pre-Release 160811-1739) - 10.0.14915.1000 (Windows 10 RS Pre-Release 160826-1902) - 10.0.14926.1000 (Windows 10 RS Pre-Release 160910-1529) - 10.0.14931.1000 (Windows 10 RS Pre-Release 160916-1700) - 10.0.14936.1000 (Windows 10 RS Pre-Release 160923-1700) - 10.0.14942.1000 (Windows 10 RS Pre-Release 161003-1929) - 10.0.14946.1000 (Windows 10 RS Pre-Release 161007-1700) - 10.0.14951.1000 (Windows 10 RS Pre-Release 161014-1700) - 10.0.14955.1000 (Windows 10 RS Pre-Release 161020-1700) - 10.0.14959.1000 (Windows 10 RS Pre-Release 161026-1700) - 10.0.14965.1001 (Windows 10 RS Pre-Release 161104-1700) - 10.0.14971.1000 (Windows 10 RS Pre-Release 161111-1700) - 10.0.14986.1000 (Windows 10 Build 160101.0800) - 10.0.14997.1001 (Windows 10 Build 160101.0800) - 10.0.15002.1001 (Windows 10 Build 160101.0800) - 10.0.15007.1000 (Windows 10 Build 160101.0800) - 10.0.15014.1000 (Windows 10 Build 160101.0800) - 10.0.15019.1000 (Windows 10 RS Pre-Release 170121-1513) - 10.0.15025.1000 (Windows 10 RS Pre-Release 170127-1750) - 10.0.15031.0 (Windows 10 RS2 Release 170204-1546) - 10.0.15042.0 (Windows 10 RS2 Release 170219-2329) - 10.0.15046.0 (Windows 10 Build 160101.0800) - 10.0.15048.0 (Windows 10 Build 160101.0800) - 10.0.15055.0 (Windows 10 Build 160101.0800) - 10.0.15058.0 (Windows 10 Build 160101.0800) - 10.0.15061.0 (Windows 10 Build 160101.0800) - 10.0.15063.0 (Windows 10 Build 160101.0800) - 10.0.15063.296 (Windows 10 Build 160101.0800) - 10.0.15063.994 (Windows 10 Build 160101.0800) - 10.0.15063.1155 (Windows 10 Build 160101.0800) - 10.0.16179.1000 (Windows 10 Build 160101.0800) - 10.0.16184.1001 (Windows 10 Build 160101.0800) - 10.0.16199.1000 (Windows 10 Build 160101.0800) - 10.0.16215.1000 (Windows 10 Build 160101.0800) - 10.0.16232.1000 (Windows 10 Build 160101.0800) - 10.0.16237.1001 (Windows 10 Build 160101.0800) - 10.0.16241.1001 (Windows 10 Build 160101.0800) - 10.0.16251.0 (Windows 10 Build 160101.0800) - 10.0.16251.1000 (Windows 10 Build 160101.0800) - 10.0.16257.1 (Windows 10 Build 160101.0800) - 10.0.16257.1000 (Windows 10 Build 160101.0800) - 10.0.16273.1000 (Windows 10 Build 160101.0800) - 10.0.16275.1000 (Windows 10 Build 160101.0800) - 10.0.16278.1000 (Windows 10 Build 160101.0800) - 10.0.16281.1000 (Windows 10 Build 160101.0800) - 10.0.16288.1 (Windows 10 Build 160101.0800) - 10.0.16291.0 (Windows 10 Build 160101.0800) - 10.0.16294.1 (Windows 10 Build 160101.0800) - 10.0.16296.0 (Windows 10 Build 160101.0800) - 10.0.16299.0 (Windows 10 Build 160101.0800) - 10.0.16299.15 (Windows 10 Build 160101.0800) - 10.0.16353.1000 (Windows 10 Build 160101.0800) - 10.0.16362.1000 (Windows 10 Build 160101.0800) - 10.0.17004.1000 (Windows 10 Build 160101.0800) - 10.0.17017.1000 (Windows 10 Build 160101.0800) - 10.0.17025.1000 (Windows 10 Build 160101.0800) - 10.0.17035.1000 (Windows 10 Build 160101.0800) - 10.0.17046.1000 (Windows 10 Build 160101.0800) - 10.0.17063.1000 (Windows 10 Build 160101.0800) - 10.0.17115.1 (Windows 10 Build 160101.0800) - 10.0.17128.1 (Windows 10 Build 160101.0800) - 10.0.17133.1 (Windows 10 Build 160101.0800) - 10.0.17134.1 (Windows 10 Build 160101.0800) - 10.0.17723.1000 (Windows 10 Build 160101.0800) - 10.0.17763.1 (Windows 10 Build 160101.0800) #### Confirmed working on: - Windows Vista Starter (x86 - Service Pack 1 and higher) - Windows Vista Home Basic - Windows Vista Home Premium - Windows Vista Business - Windows Vista Enterprise - Windows Vista Ultimate - Windows Server 2008 - Windows 7 Starter - Windows 7 Home Basic - Windows 7 Home Premium - Windows 7 Professional - Windows 7 Enterprise - Windows 7 Ultimate - Windows Server 2008 R2 - Windows 8 Developer Preview - Windows 8 Consumer Preview - Windows 8 Release Preview - Windows 8 - Windows 8 Single Language - Windows 8 Pro - Windows 8 Enterprise - Windows Server 2012 - Windows 8.1 Preview - Windows 8.1 - Windows 8.1 Connected (with Bing) - Windows 8.1 Single Language - Windows 8.1 Connected Single Language (with Bing) - Windows 8.1 Pro - Windows 8.1 Enterprise - Windows Server 2012 R2 - Windows 10 Technical Preview - Windows 10 Pro Technical Preview - Windows 10 Home - Windows 10 Home Single Language - Windows 10 Pro - Windows 10 Enterprise - Windows Server 2016 Technical Preview Installation instructions: - Download latest release binaries and unpack files - Right-click on **`install.bat`** and select Run as Administrator - See command output for details To update INI file: - Right-click on **`update.bat`** and select Run as Administrator - See command output for details To uninstall: - Go to the directory where you extracted the files - Right-click on **`uninstall.bat`** and select Run as Administrator - See command output for details ================================================ FILE: bin/install.bat ================================================ @echo off if not exist "%~dp0RDPWInst.exe" goto :error "%~dp0RDPWInst" -i -o echo ______________________________________________________________ echo. echo You can check RDP functionality with RDPCheck program. echo Also you can configure advanced settings with RDPConf program. echo. goto :anykey :error echo [-] Installer executable not found. echo Please extract all files from the downloaded package or check your anti-virus. :anykey pause ================================================ FILE: bin/uninstall.bat ================================================ @echo off if not exist "%~dp0RDPWInst.exe" goto :error "%~dp0RDPWInst" -u echo. goto :anykey :error echo [-] Installer executable not found. echo Please extract all files from the downloaded package or check your anti-virus. :anykey pause ================================================ FILE: bin/update.bat ================================================ @echo off if not exist "%~dp0RDPWInst.exe" goto :error "%~dp0RDPWInst" -w echo. goto :anykey :error echo [-] Installer executable not found. echo Please extract all files from the downloaded package or check your anti-virus. :anykey pause ================================================ FILE: res/RDPWInst.wxs ================================================ NOT Installed AND NOT WIX_UPGRADE_DETECTED REMOVE AND NOT UPGRADINGPRODUCTCODE UPGRADINGPRODUCTCODE ================================================ FILE: res/build_wxs.bat ================================================ @echo off "%ProgramFiles%\WiX Toolset v3.11\bin\candle" RDPWInst.wxs "%ProgramFiles%\WiX Toolset v3.11\bin\light" RDPWInst.wixobj ================================================ FILE: res/clearres.bat ================================================ @echo off echo [FILENAMES]> clearres.txt echo Exe=%1>> clearres.txt echo SaveAs=%1>> clearres.txt echo Log=>> clearres.txt echo.>> clearres.txt echo [COMMANDS]>> clearres.txt echo -delete RCDATA,CHARTABLE,>> clearres.txt echo -delete RCDATA,DVCLAL,>> clearres.txt echo -delete RCDATA,PACKAGEINFO,>> clearres.txt echo -delete CURSORGROUP,32761,>> clearres.txt echo -delete CURSORGROUP,32762,>> clearres.txt echo -delete CURSORGROUP,32763,>> clearres.txt echo -delete CURSORGROUP,32764,>> clearres.txt echo -delete CURSORGROUP,32765,>> clearres.txt echo -delete CURSORGROUP,32766,>> clearres.txt echo -delete CURSORGROUP,32767,>> clearres.txt "C:\Program Files\Resource Hacker\ResHacker.exe" -script clearres.txt del clearres.txt ================================================ FILE: res/legacy.install.bat ================================================ @echo off setlocal EnableDelayedExpansion echo RDP Wrapper Library Installer v1.0 echo Copyright (C) Stas'M Corp. 2013 echo. set PROCESSOR_ARCHITECTURE | find "x86" > nul if !errorlevel!==0 ( goto WOW64CHK ) else ( goto UNSUPPORTED ) :WOW64CHK echo [*] Check if running WOW64 subsystem... set PROCESSOR_ARCHITEW6432 > nul if !errorlevel!==0 ( goto UNSUPPORTED ) else ( goto SUPPORTED ) :SUPPORTED echo [+] Processor architecture is Intel x86 [supported] goto INSTALL :UNSUPPORTED echo [-] Unsupported processor architecture goto END :INSTALL echo [*] Installing... if not exist rdpwrap.dll ( echo [-] Error: rdpwrap.dll file not found goto END ) echo [*] Copying file to Program Files... md "%ProgramFiles%\RDP Wrapper" xcopy /y rdpwrap.dll "%ProgramFiles%\RDP Wrapper\" if not !errorlevel!==0 ( echo [-] Failed to copy rdpwrap.dll to Program Files folder goto END ) echo [*] Modifying registry... reg add "HKLM\SYSTEM\CurrentControlSet\Services\TermService\Parameters" /v ServiceDll /t REG_EXPAND_SZ /d "%ProgramFiles%\RDP Wrapper\rdpwrap.dll" /f if not !errorlevel!==0 ( echo [-] Failed to modify registry goto END ) echo [*] Setting firewall configuration... reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=tcp localport=3389 profile=any action=allow netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=udp localport=3389 profile=any action=allow echo [*] Looking for TermService PID... tasklist /SVC /FI "SERVICES eq TermService" | find "PID" /V echo. if !errorlevel!==0 ( goto DONE ) else ( goto SVCSTART ) :SVCSTART echo [*] TermService is stopped. Starting it... sc config TermService start= auto | find "1060" > nul if !errorlevel!==0 ( echo [-] TermService is not installed. You need to install it manually. goto END ) else ( net start TermService goto DONE ) :DONE echo [+] Installation complete! echo Now reboot or restart service. echo. echo To reboot computer type: echo shutdown /r echo. echo To restart TermService type: echo taskkill /f /pid 1234 ^(replace 1234 with real PID which is shown above^) echo net start TermService echo. echo If second method is used, and there are another services sharing svchost.exe, echo you must start it too: echo net start Service1 echo net start Service2 echo etc. goto END :END ================================================ FILE: res/rdpwrap-arm-kb.ini ================================================ ; RDP Wrapper Library configuration ; for Windows RT (ARMv7) ; This is experimental file [Main] Updated=2016-03-07 LogFile=\rdpwrap.txt [SLPolicy] TerminalServices-RemoteConnectionManager-AllowRemoteConnections=1 TerminalServices-RemoteConnectionManager-AllowMultipleSessions=1 TerminalServices-RemoteConnectionManager-AllowAppServerMode=1 TerminalServices-RemoteConnectionManager-AllowMultimon=1 TerminalServices-RemoteConnectionManager-MaxUserSessions=0 TerminalServices-RemoteConnectionManager-ce0ad219-4670-4988-98fb-89b14c2f072b-MaxSessions=0 TerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-MaxSessions=2 TerminalServices-RDP-7-Advanced-Compression-Allowed=1 TerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-LocalOnly=0 TerminalServices-RemoteConnectionManager-8dc86f1d-9969-4379-91c1-06fe1dc60575-MaxSessions=1000 TerminalServices-DeviceRedirection-Licenses-TSEasyPrintAllowed=1 TerminalServices-DeviceRedirection-Licenses-PnpRedirectionAllowed=1 TerminalServices-DeviceRedirection-Licenses-TSMFPluginAllowed=1 TerminalServices-RemoteConnectionManager-UiEffects-DWMRemotingAllowed=1 [PatchCodes] Zero=00 bjmp5=05E0 CDefPolicy_Query_r3_r5=40F20013C5F8203305E0 CDefPolicy_Query_r3_r0=40F20013C0F8203305E0 [6.2.9200.16384] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10066DCC MOV.W R3, #0x11C ; .text:10066DD0 STR R3, [SP,#0x16C+var_13C] ; .text:10066DD2 LDR R3, =__imp_GetVersionExW ; .text:10066DD4 MOVS R4, #1 <- 0 ; .text:10066DD6 ADD R0, SP, #0x16C+var_13C ; .text:10066DD8 LDR R3, [R3] SingleUserPatch.arm=1 SingleUserOffset.arm=66DD4 SingleUserCode.arm=Zero ; Patch CDefPolicy::Query ; Original ; .text:10059164 LDR.W R2, [R5,#0x324] ; D5 F8 24 23 ; [R5,#0x324] -> R2 ; .text:10059168 LDR.W R3, [R5,#0x320] ; D5 F8 20 33 ; [R5,#0x320] -> R3 ; .text:1005916C CMP R2, R3 ; 9A 42 ; compare ; .text:1005916E BNE loc_1005917A ; 04 D1 ; jump if (R2 != R3) ; Changed ; .text:10059164 MOVW R3, #0x100 ; 40 F2 00 13 ; 0x100 -> R3 ; .text:10059168 STR.W R3, [R5,#0x320] ; C5 F8 20 33 ; R3 -> [R5,#0x320] ; .text:1005916C B loc_1005917A ; 05 E0 ; jump ; .text:1005916E BNE loc_1005917A ; 04 D1 ; / never executed / DefPolicyPatch.arm=1 DefPolicyOffset.arm=59164 DefPolicyCode.arm=CDefPolicy_Query_r3_r5 ; Hook SLGetWindowsInformationDWORDWrapper SLPolicyInternal.arm=1 SLPolicyOffset.arm=5F934 SLPolicyFunc.arm=New_Win8SL [6.3.9600.16384] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:1008E6C2 BL _IsLicenseTypeLocalOnly_CSLQuery__SAJAAU_GUID__PAH_Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:1008E6C6 CMP R0, #0 ; .text:1008E6C8 BLT loc_1008E6DA ; .text:1008E6CA LDR R3, [SP,#0x20+var_14] ; .text:1008E6CC CBZ R3, loc_1008E6DA ; 2B B1 ; jump if (R3 == 0) ; Changed ; .text:1008E6CC B loc_1008E6DA ; 05 E0 ; jump LocalOnlyPatch.arm=1 LocalOnlyOffset.arm=8E6CC LocalOnlyCode.arm=bjmp5 ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10069E74 MOV.W R3, #0x11C ; .text:10069E78 STR R3, [SP,#0x164+var_13C] ; .text:10069E7A LDR R3, =__imp_GetVersionExW ; .text:10069E7C MOVS R4, #1 <- 0 ; .text:10069E7E ADD R0, SP, #0x164+var_13C ; .text:10069E80 LDR R3, [R3] SingleUserPatch.arm=1 SingleUserOffset.arm=69E7C SingleUserCode.arm=Zero ; Patch CDefPolicy::Query ; Original ; .text:10064D54 LDR.W R2, [R0,#0x324] ; D0 F8 24 23 ; [R0,#0x324] -> R2 ; .text:10064D58 LDR.W R3, [R0,#0x320] ; D0 F8 20 33 ; [R0,#0x320] -> R3 ; .text:10064D5C CMP R2, R3 ; 9A 42 ; compare ; .text:10064D5E BNE loc_10064D6A ; 04 D1 ; jump if (R2 != R3) ; Changed ; .text:10064D54 MOVW R3, #0x100 ; 40 F2 00 13 ; 0x100 -> R3 ; .text:10064D58 STR.W R3, [R0,#0x320] ; C0 F8 20 33 ; R3 -> [R0,#0x320] ; .text:10064D5C B loc_10064D6A ; 05 E0 ; jump ; .text:10064D5E BNE loc_10064D6A ; 04 D1 ; / never executed / DefPolicyPatch.arm=1 DefPolicyOffset.arm=64D54 DefPolicyCode.arm=CDefPolicy_Query_r3_r0 ; Hook CSLQuery::Initialize SLInitHook.arm=1 SLInitOffset.arm=32188 SLInitFunc.arm=New_CSLQuery_Initialize [6.3.9600.17095] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:1008E35A BL _IsLicenseTypeLocalOnly_CSLQuery__SAJAAU_GUID__PAH_Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:1008E35E CMP R0, #0 ; .text:1008E360 BLT loc_1008E372 ; .text:1008E362 LDR R3, [SP,#0x20+var_14] ; .text:1008E364 CBZ R3, loc_1008E372 ; 2B B1 ; jump if (R3 == 0) ; Changed ; .text:1008E364 B loc_1008E372 ; 05 E0 ; jump LocalOnlyPatch.arm=1 LocalOnlyOffset.arm=8E364 LocalOnlyCode.arm=bjmp5 ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10069C2C MOV.W R3, #0x11C ; .text:10069C30 STR R3, [SP,#0x164+var_13C] ; .text:10069C32 LDR R3, =GetVersionExW ; .text:10069C34 MOVS R4, #1 <- 0 ; .text:10069C36 ADD R0, SP, #0x164+var_13C ; .text:10069C38 LDR R3, [R3] SingleUserPatch.arm=1 SingleUserOffset.arm=69C34 SingleUserCode.arm=Zero ; Patch CDefPolicy::Query ; Original ; .text:100649E0 LDR.W R2, [R0,#0x324] ; D0 F8 24 23 ; [R0,#0x324] -> R2 ; .text:100649E4 LDR.W R3, [R0,#0x320] ; D0 F8 20 33 ; [R0,#0x320] -> R3 ; .text:100649E8 CMP R2, R3 ; 9A 42 ; compare ; .text:100649EA BNE loc_100649F6 ; 04 D1 ; jump if (R2 != R3) ; Changed ; .text:100649E0 MOVW R3, #0x100 ; 40 F2 00 13 ; 0x100 -> R3 ; .text:100649E4 STR.W R3, [R0,#0x320] ; C0 F8 20 33 ; R3 -> [R0,#0x320] ; .text:100649E8 B loc_10064D6A ; 05 E0 ; jump ; .text:100649EA BNE loc_10064D6A ; 04 D1 ; / never executed / DefPolicyPatch.arm=1 DefPolicyOffset.arm=649E0 DefPolicyCode.arm=CDefPolicy_Query_r3_r0 ; Hook CSLQuery::Initialize SLInitHook.arm=1 SLInitOffset.arm=32E3C SLInitFunc.arm=New_CSLQuery_Initialize [SLInit] bServerSku=1 bRemoteConnAllowed=1 bFUSEnabled=1 bAppServerAllowed=1 bMultimonAllowed=1 lMaxUserSessions=0 ulMaxDebugSessions=0 bInitialized=1 [6.3.9600.16384-SLInit] bFUSEnabled.arm =A57E0 lMaxUserSessions.arm =A57E4 bAppServerAllowed.arm =A57E8 bInitialized.arm =A57EC bMultimonAllowed.arm =A57F0 bServerSku.arm =A57F4 ulMaxDebugSessions.arm=A57F8 bRemoteConnAllowed.arm=A57FC [6.3.9600.17095-SLInit] bFUSEnabled.arm =A67E0 lMaxUserSessions.arm =A67E4 bAppServerAllowed.arm =A67E8 bInitialized.arm =A67EC bMultimonAllowed.arm =A67F0 bServerSku.arm =A67F4 ulMaxDebugSessions.arm=A67F8 bRemoteConnAllowed.arm=A67FC ================================================ FILE: res/rdpwrap-ini-kb.txt ================================================ [Main] ; Last updated date Updated=2018-10-10 ; Address to log file (RDP Wrapper will write it, if exists) LogFile=\rdpwrap.txt ; Hook SLPolicy API on Windows NT 6.0 SLPolicyHookNT60=1 ; Hook SLPolicy API on Windows NT 6.1 SLPolicyHookNT61=1 [SLPolicy] ; Allow Remote Connections TerminalServices-RemoteConnectionManager-AllowRemoteConnections=1 ; Allow Multiple Sessions TerminalServices-RemoteConnectionManager-AllowMultipleSessions=1 ; Allow Multiple Sessions (Application Server Mode) TerminalServices-RemoteConnectionManager-AllowAppServerMode=1 ; Allow Multiple Monitors TerminalServices-RemoteConnectionManager-AllowMultimon=1 ; Max User Sessions (0 = unlimited) TerminalServices-RemoteConnectionManager-MaxUserSessions=0 ; Max Debug Sessions (Windows 8, 0 = unlimited) TerminalServices-RemoteConnectionManager-ce0ad219-4670-4988-98fb-89b14c2f072b-MaxSessions=0 ; Max Sessions ; 0 - logon not possible even from console ; 1 - only one active user (console or remote) ; 2 - allow concurrent sessions TerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-MaxSessions=2 ; Allow Advanced Compression with RDP 7 Protocol TerminalServices-RDP-7-Advanced-Compression-Allowed=1 ; IsTerminalTypeLocalOnly = 0 TerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-LocalOnly=0 ; Max Sessions (hard limit) TerminalServices-RemoteConnectionManager-8dc86f1d-9969-4379-91c1-06fe1dc60575-MaxSessions=1000 ; Allow EasyPrint TerminalServices-DeviceRedirection-Licenses-TSEasyPrintAllowed=1 ; Allow PnP Redirection TerminalServices-DeviceRedirection-Licenses-PnpRedirectionAllowed=1 ; Allow Media Foundation plugins TerminalServices-DeviceRedirection-Licenses-TSMFPluginAllowed=1 ; Allow DWM Remoting TerminalServices-RemoteConnectionManager-UiEffects-DWMRemotingAllowed=1 [PatchCodes] nop=90 Zero=00 jmpshort=EB nopjmp=90E9 CDefPolicy_Query_edx_ecx=BA000100008991200300005E90 CDefPolicy_Query_eax_rcx_jmp=B80001000089813806000090EB CDefPolicy_Query_eax_esi=B80001000089862003000090 CDefPolicy_Query_eax_rdi=B80001000089873806000090 CDefPolicy_Query_eax_ecx=B80001000089812003000090 CDefPolicy_Query_eax_ecx_jmp=B800010000898120030000EB0E CDefPolicy_Query_eax_rcx=B80001000089813806000090 CDefPolicy_Query_edi_rcx=BF0001000089B938060000909090 [6.0.6000.16386] ; HOW TO search CSessionArbitrationHelper::IsSingleSessionPerUserEnabled function in IDA Pro: ; 1. Search text: CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; 2. All xrefs will point to this function (in x64 version xref points to subroutine, so you need to go one level up) ; 3. Go to first graph block and find memset, VersionInformation, call GetVersionExW, and so on ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F320000 ; .text:6F3360B9 lea eax, [ebp+VersionInformation] ; .text:6F3360BF inc ebx <- nop ; .text:6F3360C0 push eax ; lpVersionInformation ; .text:6F3360C1 mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F3360CB mov [esi], ebx ; .text:6F3360CD call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=160BF SingleUserCode.x86=nop ; Imagebase: 7FF756E0000 ; .text:000007FF75745E38 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75745E3D mov ebx, 1 <- 0 ; .text:000007FF75745E42 mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75745E4A mov [rdi], ebx ; .text:000007FF75745E4C call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=65E3E SingleUserCode.x64=Zero ; HOW TO search CDefPolicy::Query function in IDA Pro: ; 1. Search text: CDefPolicy::Query ; 2. All xrefs will point to this function (in x64 version xref sometimes points to subroutine, so you need to go one level up) ; 3. Go to first graph block and find cmp/jz instructions on the bottom of block ; Patch CDefPolicy::Query ; Original ; .text:6F335CD8 cmp edx, [ecx+320h] ; .text:6F335CDE pop esi ; .text:6F335CDF jz loc_6F3426F1 ; Changed ; .text:6F335CD8 mov edx, 100h ; .text:6F335CDD mov [ecx+320h], edx ; .text:6F335CE3 pop esi ; .text:6F335CE4 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=15CD8 DefPolicyCode.x86=CDefPolicy_Query_edx_ecx ; Original ; .text:000007FF7573C88F mov eax, [rcx+638h] ; .text:000007FF7573C895 cmp [rcx+63Ch], eax ; .text:000007FF7573C89B jnz short loc_7FF7573C8B3 ; Changed ; .text:000007FF7573C88F mov eax, 100h ; .text:000007FF7573C894 mov [rcx+638h], eax ; .text:000007FF7573C89A nop ; .text:000007FF7573C89B jmp short loc_7FF7573C8B3 DefPolicyPatch.x64=1 DefPolicyOffset.x64=5C88F DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.0.6001.18000] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6E800000 ; .text:6E8185DE lea eax, [ebp+VersionInformation] ; .text:6E8185E4 inc ebx <- nop ; .text:6E8185E5 push eax ; lpVersionInformation ; .text:6E8185E6 mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6E8185F0 mov [esi], ebx ; .text:6E8185F2 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=185E4 SingleUserCode.x86=nop ; Imagebase: 7FF76220000 ; .text:000007FF76290DB4 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF76290DB9 mov ebx, 1 <- 0 ; .text:000007FF76290DBE mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF76290DC6 mov [rdi], ebx ; .text:000007FF76290DC8 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=70DBA SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6E817FD8 cmp edx, [ecx+320h] ; .text:6E817FDE pop esi ; .text:6E817FDF jz loc_6E826F16 ; Changed ; .text:6E817FD8 mov edx, 100h ; .text:6E817FDD mov [ecx+320h], edx ; .text:6E817FE3 pop esi ; .text:6E817FE4 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=17FD8 DefPolicyCode.x86=CDefPolicy_Query_edx_ecx ; Original ; .text:000007FF76285BD7 mov eax, [rcx+638h] ; .text:000007FF76285BDD cmp [rcx+63Ch], eax ; .text:000007FF76285BE3 jnz short loc_7FF76285BFB ; Changed ; .text:000007FF76285BD7 mov eax, 100h ; .text:000007FF76285BDC mov [rcx+638h], eax ; .text:000007FF76285BE2 nop ; .text:000007FF76285BE3 jmp short loc_7FF76285BFB DefPolicyPatch.x64=1 DefPolicyOffset.x64=65BD7 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.0.6002.18005] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F580000 ; .text:6F597FA2 lea eax, [ebp+VersionInformation] ; .text:6F597FA8 inc ebx <- nop ; .text:6F597FA9 push eax ; lpVersionInformation ; .text:6F597FAA mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F597FB4 mov [esi], ebx ; .text:6F597FB6 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=17FA8 SingleUserCode.x86=nop ; Imagebase: 7FF766C0000 ; .text:000007FF76730FF0 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF76730FF5 mov ebx, 1 <- 0 ; .text:000007FF76730FFA mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF76731002 mov [rdi], ebx ; .text:000007FF76731004 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=70FF6 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F5979C0 cmp edx, [ecx+320h] ; .text:6F5979C6 pop esi ; .text:6F5979C7 jz loc_6F5A6F26 ; Changed ; .text:6F5979C0 mov edx, 100h ; .text:6F5979C5 mov [ecx+320h], edx ; .text:6F5979CB pop esi ; .text:6F5979CC nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=179C0 DefPolicyCode.x86=CDefPolicy_Query_edx_ecx ; Original ; .text:000007FF76725E83 mov eax, [rcx+638h] ; .text:000007FF76725E89 cmp [rcx+63Ch], eax ; .text:000007FF76725E8F jz short loc_7FF76725EA7 ; Changed ; .text:000007FF76725E83 mov eax, 100h ; .text:000007FF76725E88 mov [rcx+638h], eax ; .text:000007FF76725E8E nop ; .text:000007FF76725E8F jmp short loc_7FF76725EA7 DefPolicyPatch.x64=1 DefPolicyOffset.x64=65E83 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.0.6002.19214] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F580000 ; .text:6F597FBE lea eax, [ebp+VersionInformation] ; .text:6F597FC4 inc ebx <- nop ; .text:6F597FC5 push eax ; lpVersionInformation ; .text:6F597FC6 mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F597FD0 mov [esi], ebx ; .text:6F597FD2 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=17FC4 SingleUserCode.x86=nop ; Imagebase: 7FF75AC0000 ; .text:000007FF75B312A4 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75B312A9 mov ebx, 1 <- 0 ; .text:000007FF75B312AE mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75B312B6 mov [rdi], ebx ; .text:000007FF75B312B8 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=712AA SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F5979B8 cmp edx, [ecx+320h] ; .text:6F5979BE pop esi ; .text:6F5979BF jz loc_6F5A6F3E ; Changed ; .text:6F5979B8 mov edx, 100h ; .text:6F5979BD mov [ecx+320h], edx ; .text:6F5979C3 pop esi ; .text:6F5979C4 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=179B8 DefPolicyCode.x86=CDefPolicy_Query_edx_ecx ; Original ; .text:000007FF75B25FF7 mov eax, [rcx+638h] ; .text:000007FF75B25FFD cmp [rcx+63Ch], eax ; .text:000007FF75B26003 jnz short loc_7FF75B2601B ; Changed ; .text:000007FF75B25FF7 mov eax, 100h ; .text:000007FF75B25FFC mov [rcx+638h], eax ; .text:000007FF75B26002 nop ; .text:000007FF75B26003 jmp short loc_7FF75B2601B DefPolicyPatch.x64=1 DefPolicyOffset.x64=65FF7 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.0.6002.23521] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F580000 ; .text:6F597FAE lea eax, [ebp+VersionInformation] ; .text:6F597FB4 inc ebx <- nop ; .text:6F597FB5 push eax ; lpVersionInformation ; .text:6F597FB6 mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F597FC0 mov [esi], ebx ; .text:6F597FC2 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=17FB4 SingleUserCode.x86=nop ; Imagebase: 7FF75AC0000 ; .text:000007FF75B31EA4 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75B31EA9 mov ebx, 1 <- 0 ; .text:000007FF75B31EAE mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75B31EB6 mov [rdi], ebx ; .text:000007FF75B31EB8 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=71EAA SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F5979CC cmp edx, [ecx+320h] ; .text:6F5979D2 pop esi ; .text:6F5979D3 jz loc_6F5A6F2E ; Changed ; .text:6F5979CC mov edx, 100h ; .text:6F5979D1 mov [ecx+320h], edx ; .text:6F5979D7 pop esi ; .text:6F5979D8 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=179CC DefPolicyCode.x86=CDefPolicy_Query_edx_ecx ; Original ; .text:000007FF75B269CB mov eax, [rcx+638h] ; .text:000007FF75B269D1 cmp [rcx+63Ch], eax ; .text:000007FF75B269D7 jnz short loc_7FF75B269EF ; Changed ; .text:000007FF75B269CB mov eax, 100h ; .text:000007FF75B269D0 mov [rcx+638h], eax ; .text:000007FF75B269D6 nop ; .text:000007FF75B269D7 jmp short loc_7FF75B269EF DefPolicyPatch.x64=1 DefPolicyOffset.x64=669CB DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.1.7600.16385] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F2E0000 ; .text:6F2F9E1F lea eax, [ebp+VersionInformation] ; .text:6F2F9E25 inc ebx <- nop ; .text:6F2F9E26 push eax ; lpVersionInformation ; .text:6F2F9E27 mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F2F9E31 mov [esi], ebx ; .text:6F2F9E33 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=19E25 SingleUserCode.x86=nop ; Imagebase: 7FF75A80000 ; .text:000007FF75A97D90 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75A97D95 mov ebx, 1 <- 0 ; .text:000007FF75A97D9A mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75A97DA2 mov [rdi], ebx ; .text:000007FF75A97DA4 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=17D96 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F2F96F3 cmp eax, [esi+320h] ; .text:6F2F96F9 jz loc_6F30E256 ; Changed ; .text:6F2F96F3 mov eax, 100h ; .text:6F2F96F8 mov [esi+320h], eax ; .text:6F2F96FE nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=196F3 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000007FF75A97AD2 cmp [rdi+63Ch], eax ; .text:000007FF75A97AD8 jz loc_7FF75AA4978 ; Changed ; .text:000007FF75A97AD2 mov eax, 100h ; .text:000007FF75A97AD7 mov [rdi+638h], eax ; .text:000007FF75A97ADD nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=17AD2 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7600.20890] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=19E2D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17DF2 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=196FB DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17B0E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7600.21316] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=19E2D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17E3E SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=196FB DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17B5E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.17514] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F2E0000 ; .text:6F2FA497 lea eax, [ebp+VersionInformation] ; .text:6F2FA49D inc ebx <- nop ; .text:6F2FA49E push eax ; lpVersionInformation ; .text:6F2FA49F mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F2FA4A9 mov [esi], ebx ; .text:6F2FA4AB call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=1A49D SingleUserCode.x86=nop ; Imagebase: 7FF75A80000 ; .text:000007FF75A980DC lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75A980E1 mov ebx, 1 <- 0 ; .text:000007FF75A980E6 mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75A980EE mov [rdi], ebx ; .text:000007FF75A980F0 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=180E2 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F2F9D53 cmp eax, [esi+320h] ; .text:6F2F9D59 jz loc_6F30B25E ; Changed ; .text:6F2F9D53 mov eax, 100h ; .text:6F2F9D58 mov [esi+320h], eax ; .text:6F2F9D5E nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D53 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000007FF75A97D8A cmp [rdi+63Ch], eax ; .text:000007FF75A97D90 jz loc_7FF75AA40F4 ; Changed ; .text:000007FF75A97D8A mov eax, 100h ; .text:000007FF75A97D8F mov [rdi+638h], eax ; .text:000007FF75A97D95 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D8A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.18540] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F2E0000 ; .text:6F2FA4DF lea eax, [ebp+VersionInformation] ; .text:6F2FA4E5 inc ebx <- nop ; .text:6F2FA4E6 push eax ; lpVersionInformation ; .text:6F2FA4E7 mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F2FA4F1 mov [esi], ebx ; .text:6F2FA4F3 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=1A4E5 SingleUserCode.x86=nop ; Imagebase: 7FF75A80000 ; .text:000007FF75A98000 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75A98005 mov ebx, 1 <- 0 ; .text:000007FF75A9800A mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75A98012 mov [rdi], ebx ; .text:000007FF75A98014 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=18006 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F2F9D9F cmp eax, [esi+320h] ; .text:6F2F9DA5 jz loc_6F30B2AE ; Changed ; .text:6F2F9D9F mov eax, 100h ; .text:6F2F9DA4 mov [esi+320h], eax ; .text:6F2F9DAA nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D9F DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000007FF75A97C82 cmp [rdi+63Ch], eax ; .text:000007FF75A97C88 jz loc_7FF75AA3FBD ; Changed ; .text:000007FF75A97C82 mov eax, 100h ; .text:000007FF75A97C87 mov [rdi+638h], eax ; .text:000007FF75A97C8D nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=17C82 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.22750] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F2E0000 ; .text:6F2FA64F lea eax, [ebp+VersionInformation] ; .text:6F2FA655 inc ebx <- nop ; .text:6F2FA656 push eax ; lpVersionInformation ; .text:6F2FA657 mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F2FA661 mov [esi], ebx ; .text:6F2FA663 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=1A655 SingleUserCode.x86=nop ; Imagebase: 7FF75A80000 ; .text:000007FF75A97E88 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75A97E8D mov ebx, 1 <- 0 ; .text:000007FF75A97E92 mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75A97E9A mov [rdi], ebx ; .text:000007FF75A97E9C call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=17E8E SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F2F9E21 cmp eax, [esi+320h] ; .text:6F2F9E27 jz loc_6F30B6CE ; Changed ; .text:6F2F9E21 mov eax, 100h ; .text:6F2F9E26 mov [esi+320h], eax ; .text:6F2F9E2C nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=19E21 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000007FF75A97C92 cmp [rdi+63Ch], eax ; .text:000007FF75A97C98 jz loc_7FF75AA40A2 ; Changed ; .text:000007FF75A97C92 mov eax, 100h ; .text:000007FF75A97C97 mov [rdi+638h], eax ; .text:000007FF75A97C9D nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=17C92 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.18637] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F2E0000 ; .text:6F2FA4D7 lea eax, [ebp+VersionInformation] ; .text:6F2FA4DD inc ebx <- nop ; .text:6F2FA4DE push eax ; lpVersionInformation ; .text:6F2FA4DF mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F2FA4E9 mov [esi], ebx ; .text:6F2FA4EB call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=1A4DD SingleUserCode.x86=nop ; Imagebase: 7FF75A80000 ; .text:000007FF75A980F4 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75A980F9 mov ebx, 1 <- 0 ; .text:000007FF75A980FE mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75A98106 mov [rdi], ebx ; .text:000007FF75A98108 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=180FA SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F2F9DBB cmp eax, [esi+320h] ; .text:6F2F9DC1 jz loc_6F30B2A6 ; Changed ; .text:6F2F9DBB mov eax, 100h ; .text:6F2F9DC0 mov [esi+320h], eax ; .text:6F2F9DC6 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=19DBB DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000007FF75A97DC6 cmp [rdi+63Ch], eax ; .text:000007FF75A97DCC jz loc_7FF75AA40BD ; Changed ; .text:000007FF75A97DC6 mov eax, 100h ; .text:000007FF75A97DCB mov [rdi+638h], eax ; .text:000007FF75A97DD1 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=17DC6 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.21650] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=1A49D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=180BE SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D53 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D5A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.21866] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=1A49D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=180BE SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D53 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D5A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.22104] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=1A49D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=180C6 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D53 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D5E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.22843] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; Imagebase: 6F2E0000 ; .text:6F2FA64F lea eax, [ebp+VersionInformation] ; .text:6F2FA655 inc ebx <- nop ; .text:6F2FA656 push eax ; lpVersionInformation ; .text:6F2FA657 mov [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:6F2FA661 mov [esi], ebx ; .text:6F2FA663 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=1A655 SingleUserCode.x86=nop ; Imagebase: 7FF75A80000 ; .text:000007FF75A97F90 lea rcx, [rsp+198h+VersionInformation] ; lpVersionInformation ; .text:000007FF75A97F95 mov ebx, 1 <- 0 ; .text:000007FF75A97F9A mov [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000007FF75A97FA2 mov [rdi], ebx ; .text:000007FF75A97FA4 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=17F96 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:6F2F9E25 cmp eax, [esi+320h] ; .text:6F2F9E2B jz loc_6F30B6D6 ; Changed ; .text:6F2F9E25 mov eax, 100h ; .text:6F2F9E2A mov [esi+320h], eax ; .text:6F2F9E30 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=19E25 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000007FF75A97D6E cmp [rdi+63Ch], eax ; .text:000007FF75A97D74 jz loc_7FF75AA4182 ; Changed ; .text:000007FF75A97D6E mov eax, 100h ; .text:000007FF75A97D73 mov [rdi+638h], eax ; .text:000007FF75A97D79 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D6E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.23403] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=1A65D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17F62 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=19E29 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17CE2 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.24234] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=1A675 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17F56 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=19E41 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D2E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.2.8102.0] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:1000F7E5 lea eax, [esp+150h+VersionInformation] ; .text:1000F7E9 inc esi <- nop ; .text:1000F7EA push eax ; lpVersionInformation ; .text:1000F7EB mov [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:1000F7F3 mov [edi], esi ; .text:1000F7F5 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=F7E9 SingleUserCode.x86=nop ; .text:000000018000D83A lea rcx, [rsp+180h+VersionInformation] ; lpVersionInformation ; .text:000000018000D83F mov ebx, 1 <- 0 ; .text:000000018000D844 mov [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000000018000D84C mov [rdi], ebx ; .text:000000018000D84E call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=D840 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:1000E47C cmp eax, [esi+320h] ; .text:1000E482 jz loc_1002D775 ; Changed ; .text:1000E47C mov eax, 100h ; .text:1000E481 mov [esi+320h], eax ; .text:1000E487 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=E47C DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000000018000D3E6 cmp [rdi+63Ch], eax ; .text:000000018000D3EC jz loc_180027792 ; Changed ; .text:000000018000D3E6 mov eax, 100h ; .text:000000018000D3EB mov [rdi+638h], eax ; .text:000000018000D3F1 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=D3E6 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi ; Hook SLGetWindowsInformationDWORDWrapper SLPolicyInternal.x86=1 SLPolicyOffset.x86=1B909 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=1A484 SLPolicyFunc.x64=New_Win8SL [6.2.8250.0] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:100159C5 lea eax, [esp+150h+VersionInformation] ; .text:100159C9 inc esi <- nop ; .text:100159CA push eax ; lpVersionInformation ; .text:100159CB mov [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:100159D3 mov [edi], esi ; .text:100159D5 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=159C9 SingleUserCode.x86=nop ; .text:0000000180011E6E lea rcx, [rsp+180h+VersionInformation] ; lpVersionInformation ; .text:0000000180011E73 mov ebx, 1 <- 0 ; .text:0000000180011E78 mov [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180011E80 mov [rdi], ebx ; .text:0000000180011E82 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=11E74 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:10013520 cmp eax, [esi+320h] ; .text:10013526 jz loc_1002DB85 ; Changed ; .text:10013520 mov eax, 100h ; .text:10013525 mov [esi+320h], eax ; .text:1001352B nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=13520 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000000018001187A cmp [rdi+63Ch], eax ; .text:0000000180011880 jz loc_1800273A2 ; Changed ; .text:000000018001187A mov eax, 100h ; .text:000000018001187F mov [rdi+638h], eax ; .text:0000000180011885 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=1187A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi ; Hook SLGetWindowsInformationDWORDWrapper SLPolicyInternal.x86=1 SLPolicyOffset.x86=1A0A9 SLPolicyFunc.x86=New_Win8SL_CP SLPolicyInternal.x64=1 SLPolicyOffset.x64=18FAC SLPolicyFunc.x64=New_Win8SL [6.2.8400.0] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:1001547E lea eax, [esp+150h+VersionInformation] ; .text:10015482 inc esi <- nop ; .text:10015483 push eax ; lpVersionInformation ; .text:10015484 mov [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:1001548C mov [edi], esi ; .text:1001548E call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=15482 SingleUserCode.x86=nop ; .text:000000018002081E lea rcx, [rsp+180h+VersionInformation] ; lpVersionInformation ; .text:0000000180020823 mov ebx, 1 <- 0 ; .text:0000000180020828 mov [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180020830 mov [rdi], ebx ; .text:0000000180020832 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=20824 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:10013E48 cmp eax, [esi+320h] ; .text:10013E4E jz loc_1002E079 ; Changed ; .text:10013E48 mov eax, 100h ; .text:10013E4D mov [esi+320h], eax ; .text:10013E53 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=13E48 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000000018001F102 cmp [rdi+63Ch], eax ; .text:000000018001F108 jz loc_18003A02E ; Changed ; .text:000000018001F102 mov eax, 100h ; .text:000000018001F107 mov [rdi+638h], eax ; .text:000000018001F10D nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=1F102 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi ; Hook SLGetWindowsInformationDWORDWrapper SLPolicyInternal.x86=1 SLPolicyOffset.x86=19629 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=2492C SLPolicyFunc.x64=New_Win8SL [6.2.9200.16384] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:1001554E lea eax, [esp+150h+VersionInformation] ; .text:10015552 inc esi <- nop ; .text:10015553 push eax ; lpVersionInformation ; .text:10015554 mov [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:1001555C mov [edi], esi ; .text:1001555E call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=15552 SingleUserCode.x86=nop ; .text:000000018002BAA2 lea rcx, [rsp+180h+VersionInformation] ; lpVersionInformation ; .text:000000018002BAA7 mov ebx, 1 <- 0 ; .text:000000018002BAAC mov [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000000018002BAB4 mov [rdi], ebx ; .text:000000018002BAB6 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=2BAA8 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:10013F08 cmp eax, [esi+320h] ; .text:10013F0E jz loc_1002E161 ; Changed ; .text:10013F08 mov eax, 100h ; .text:10013F0D mov [esi+320h], eax ; .text:10013F13 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=13F08 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000000018002A31A cmp [rdi+63Ch], eax ; .text:000000018002A320 jz loc_18003A0F9 ; Changed ; .text:000000018002A31A mov eax, 100h ; .text:000000018002A31F mov [rdi+638h], eax ; .text:000000018002A325 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=2A31A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi ; Hook SLGetWindowsInformationDWORDWrapper SLPolicyInternal.x86=1 SLPolicyOffset.x86=19559 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=21FA8 SLPolicyFunc.x64=New_Win8SL [6.2.9200.17048] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:1002058E lea eax, [esp+150h+VersionInformation] ; .text:10020592 inc esi <- nop ; .text:10020593 push eax ; lpVersionInformation ; .text:10020594 mov [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:1002059C mov [edi], esi ; .text:1002059E call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=20592 SingleUserCode.x86=nop ; .text:0000000180020942 lea rcx, [rsp+180h+VersionInformation] ; lpVersionInformation ; .text:0000000180020947 mov ebx, 1 <- 0 ; .text:000000018002094C mov [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180020954 mov [rdi], ebx ; .text:0000000180020956 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=20948 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:1001F408 cmp eax, [esi+320h] ; .text:1001F40E jz loc_1002E201 ; Changed ; .text:1001F408 mov eax, 100h ; .text:1001F40D mov [esi+320h], eax ; .text:1001F413 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=1F408 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000000018001F206 cmp [rdi+63Ch], eax ; .text:000000018001F20C jz loc_18003A1B4 ; Changed ; .text:000000018001F206 mov eax, 100h ; .text:000000018001F20B mov [rdi+638h], eax ; .text:000000018001F211 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=1F206 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi ; Hook SLGetWindowsInformationDWORDWrapper SLPolicyInternal.x86=1 SLPolicyOffset.x86=17059 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=24570 SLPolicyFunc.x64=New_Win8SL [6.2.9200.21166] ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10015576 lea eax, [esp+150h+VersionInformation] ; .text:1001557A inc esi <- nop ; .text:1001557B push eax ; lpVersionInformation ; .text:1001557C mov [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:10015584 mov [edi], esi ; .text:10015586 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=1557A SingleUserCode.x86=nop ; .text:000000018002BAF2 lea rcx, [rsp+180h+VersionInformation] ; lpVersionInformation ; .text:000000018002BAF7 mov ebx, 1 <- 0 ; .text:000000018002BAFC mov [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000000018002BB04 mov [rdi], ebx ; .text:000000018002BB06 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=2BAF8 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:10013F30 cmp eax, [esi+320h] ; .text:10013F36 jz loc_1002E189 ; Changed ; .text:10013F30 mov eax, 100h ; .text:10013F35 mov [esi+320h], eax ; .text:10013F3B nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=13F30 DefPolicyCode.x86=CDefPolicy_Query_eax_esi ; Original ; .text:000000018002A3B6 cmp [rdi+63Ch], eax ; .text:000000018002A3BC jz loc_18003A174 ; Changed ; .text:000000018002A3B6 mov eax, 100h ; .text:000000018002A3BB mov [rdi+638h], eax ; .text:000000018002A3C1 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=2A3B6 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi ; Hook SLGetWindowsInformationDWORDWrapper SLPolicyInternal.x86=1 SLPolicyOffset.x86=19581 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=21FD0 SLPolicyFunc.x64=New_Win8SL [6.3.9431.0] ; HOW TO search CEnforcementCore::GetInstanceOfTSLicense function in IDA Pro: ; 1. Search text: CSLQuery::IsLicenseTypeLocalOnly ; 2. All xrefs will point to this function ; 3. Go to function beginning and check ; CODE XREF string, it will point to GetInstanceOfTSLicense function ; 4. Follow CODE XREF, switch to graph view, the next block below is to patch ; Another way: ; 1. Search text: CEnforcementCore::GetInstanceOfTSLicense FAILED - License type me ; 2. All xrefs will point to GetInstanceOfTSLicense ; 3. Follow xref, the previous block above is to patch ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:1008A604 call ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:1008A609 test eax, eax ; .text:1008A60B js short loc_1008A628 ; .text:1008A60D cmp [ebp+var_8], 0 ; .text:1008A611 jz short loc_1008A628 <- jmp LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=8A611 LocalOnlyCode.x86=jmpshort ; .text:000000018009F713 call ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:000000018009F718 test eax, eax ; .text:000000018009F71A js short loc_18009F73B ; .text:000000018009F71C cmp [rsp+48h+arg_18], 0 ; .text:000000018009F721 jz short loc_18009F73B <- jmp LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=9F721 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:100306A4 lea eax, [esp+150h+VersionInformation] ; .text:100306A8 inc ebx <- nop ; .text:100306A9 mov [edi], ebx ; .text:100306AB push eax ; lpVersionInformation ; .text:100306AC call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=306A8 SingleUserCode.x86=nop ; .text:00000001800367F3 lea rcx, [rsp+190h+VersionInformation] ; lpVersionInformation ; .text:00000001800367F8 mov ebx, 1 <- 0 ; .text:00000001800367FD mov [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180036805 mov [rdi], ebx ; .text:0000000180036807 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=367F9 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:1002EA25 cmp eax, [ecx+320h] ; .text:1002EA2B jz loc_100348C1 ; Changed ; .text:1002EA25 mov eax, 100h ; .text:1002EA2A mov [ecx+320h], eax ; .text:1002EA30 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=2EA25 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Original ; .text:00000001800350FD cmp [rcx+63Ch], eax ; .text:0000000180035103 jz loc_18004F6AE ; Changed ; .text:00000001800350FD mov eax, 100h ; .text:0000000180035102 mov [rcx+638h], eax ; .text:0000000180035108 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=350FD DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; HOW TO search CSLQuery::Initialize function in IDA Pro: ; 1. Search text: CSLQuery::Initialize - SLGetWindowsInformationDWORD failed ; 2. All xrefs will point to this function ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=196B0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2F9C0 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.16384] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:100A271C call ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:100A2721 test eax, eax ; .text:100A2723 js short loc_100A2740 ; .text:100A2725 cmp [ebp+var_8], 0 ; .text:100A2729 jz short loc_100A2740 <- jmp LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A2729 LocalOnlyCode.x86=jmpshort ; .text:000000018008181F cmp [rsp+48h+arg_18], 0 ; .text:0000000180081824 jz loc_180031DEF <- nop + jmp LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=81824 LocalOnlyCode.x64=nopjmp ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10018024 lea eax, [esp+150h+VersionInformation] ; .text:10018028 inc ebx <- nop ; .text:10018029 mov [edi], ebx ; .text:1001802B push eax ; lpVersionInformation ; .text:1001802C call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=18028 SingleUserCode.x86=nop ; .text:000000018002023B lea rcx, [rsp+190h+VersionInformation] ; lpVersionInformation ; .text:0000000180020240 mov ebx, 1 <- 0 ; .text:0000000180020245 mov [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:000000018002024D mov [rdi], ebx ; .text:000000018002024F call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=20241 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:10016115 cmp eax, [ecx+320h] ; .text:1001611B jz loc_10034DE1 ; Changed ; .text:10016115 mov eax, 100h ; .text:1001611A mov [ecx+320h], eax ; .text:10016120 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=16115 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Original ; .text:0000000180057829 cmp [rcx+63Ch], eax ; .text:000000018005782F jz loc_18005E850 ; Changed ; .text:0000000180057829 mov eax, 100h ; .text:000000018005782E mov [rcx+638h], eax ; .text:0000000180057834 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=57829 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=1CEB0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=554C0 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.17095] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:100A36C4 call ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:100A36C9 test eax, eax ; .text:100A36CB js short loc_100A36E8 ; .text:100A36CD cmp [ebp+var_8], 0 ; .text:100A36D1 jz short loc_100A36E8 <- jmp LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A36D1 LocalOnlyCode.x86=jmpshort ; .text:00000001800B914B call ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:00000001800B9150 test eax, eax ; .text:00000001800B9152 js short loc_1800B9173 ; .text:00000001800B9154 cmp [rsp+48h+arg_18], 0 ; .text:00000001800B9159 jz short loc_1800B9173 <- jmp LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=B9159 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10036BA5 lea eax, [esp+150h+VersionInformation] ; .text:10036BA9 inc ebx <- nop ; .text:10036BAA mov [edi], ebx ; .text:10036BAC push eax ; lpVersionInformation ; .text:10036BAD call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=36BA9 SingleUserCode.x86=nop ; .text:0000000180021823 lea rcx, [rsp+190h+VersionInformation] ; lpVersionInformation ; .text:0000000180021828 mov ebx, 1 <- 0 ; .text:000000018002182D mov [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180021835 mov [rdi], ebx ; .text:0000000180021837 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=21829 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:10037529 cmp eax, [ecx+320h] ; .text:1003752F jz loc_10043662 ; Changed ; .text:10037529 mov eax, 100h ; .text:1003752E mov [ecx+320h], eax ; .text:10037534 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=37529 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Original ; .text:000000018001F6A1 cmp [rcx+63Ch], eax ; .text:000000018001F6A7 jz loc_18007284B ; Changed ; .text:000000018001F6A1 mov eax, 100h ; .text:000000018001F6A6 mov [rcx+638h], eax ; .text:000000018001F6AC nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=1F6A1 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=117F1 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=3B110 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.17415] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:100B33EB call ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:100B33F0 test eax, eax ; .text:100B33F2 js short loc_100B340F ; .text:100B33F4 cmp [ebp+var_C], 0 ; .text:100B33F8 jz short loc_100B340F <- jmp LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B33F8 LocalOnlyCode.x86=jmpshort ; .text:000000018008B2D4 cmp [rsp+58h+arg_18], 0 ; .text:000000018008B2D9 jz loc_180025C39 <- nop + jmp LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B2D9 LocalOnlyCode.x64=nopjmp ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10037111 lea eax, [esp+150h+VersionInformation] ; .text:10037115 inc ebx <- nop ; .text:10037116 mov [edi], ebx ; .text:10037118 push eax ; lpVersionInformation ; .text:10037119 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=37115 SingleUserCode.x86=nop ; .text:0000000180033CE3 lea rcx, [rsp+190h+VersionInformation] ; lpVersionInformation ; .text:0000000180033CE8 mov ebx, 1 <- 0 ; .text:0000000180033CED mov [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180033CF5 mov [rdi], ebx ; .text:0000000180033CF7 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=33CE9 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:1003CFF9 cmp eax, [ecx+320h] ; .text:1003CFFF jz loc_1004A52F ; Changed ; .text:1003CFF9 mov eax, 100h ; .text:1003CFFE mov [ecx+320h], eax ; .text:1003D004 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=3CFF9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Original ; .text:0000000180045825 cmp [rcx+63Ch], eax ; .text:000000018004582B jz loc_180067704 ; Changed ; .text:0000000180045825 mov eax, 100h ; .text:000000018004582A mov [rcx+638h], eax ; .text:0000000180045830 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=45825 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=18478 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5DBC0 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.18692] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B3458 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B2E9 LocalOnlyCode.x64=nopjmp ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=37105 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=37039 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3CFE9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=45835 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=18488 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5DBD0 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.18708] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B35D8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B376 LocalOnlyCode.x64=nopjmp ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=370F5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=36FE9 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3CFD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=457D5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=18308 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5DB70 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.18928] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B39D8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B25D LocalOnlyCode.x64=nopjmp ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=37D25 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=36C09 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D6F9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=45495 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=18328 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5D830 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.19093] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B3958 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8AE4E LocalOnlyCode.x64=nopjmp ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=3F045 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=36BC9 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D899 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=45305 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=18288 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5D660 SLInitFunc.x64=New_CSLQuery_Initialize [6.4.9841.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:1009569B call sub_100B7EE5 ; .text:100956A0 test eax, eax ; .text:100956A2 js short loc_100956BF ; .text:100956A4 cmp [ebp+var_C], 0 ; .text:100956A8 jz short loc_100956BF <- jmp LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=956A8 LocalOnlyCode.x86=jmpshort ; .text:0000000180081133 call sub_1800A9048 ; .text:0000000180081138 test eax, eax ; .text:000000018008113A js short loc_18008115B ; .text:000000018008113C cmp [rsp+58h+arg_18], 0 ; .text:0000000180081141 jz short loc_18008115B <- jmp LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=81141 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10030121 lea eax, [esp+150h+VersionInformation] ; .text:10030125 inc ebx <- nop ; .text:10030126 mov [edi], ebx ; .text:10030128 push eax ; lpVersionInformation ; .text:10030129 call ds:GetVersionExW SingleUserPatch.x86=1 SingleUserOffset.x86=30125 SingleUserCode.x86=nop ; .text:0000000180012153 lea rcx, [rsp+190h+VersionInformation] ; lpVersionInformation ; .text:0000000180012158 mov ebx, 1 <- 0 ; .text:000000018001215D mov [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180012165 mov [rdi], ebx ; .text:0000000180012167 call cs:GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=12159 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:1003B989 cmp eax, [ecx+320h] ; .text:1003B98F jz loc_1005E809 ; Changed ; .text:1003B989 mov eax, 100h ; .text:1003B98E mov [ecx+320h], eax ; .text:1003B994 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=3B989 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Original ; .text:000000018000C125 cmp [rcx+63Ch], eax ; .text:000000018000C12B jz sub_18003BABC ; Changed ; .text:000000018000C125 mov eax, 100h ; .text:000000018000C12A mov [rcx+638h], eax ; .text:000000018000C130 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=C125 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46A68 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=1EA50 SLInitFunc.x64=New_CSLQuery_Initialize [6.4.9860.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:100962BB call ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:100962C0 test eax, eax ; .text:100962C2 js short loc_100962DF ; .text:100962C4 cmp [ebp+var_C], 0 ; .text:100962C8 jz short loc_100962DF <- jmp LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=962C8 LocalOnlyCode.x86=jmpshort ; .text:0000000180081083 call ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:0000000180081088 test eax, eax ; .text:000000018008108A js short loc_1800810AB ; .text:000000018008108C cmp [rsp+58h+arg_18], 0 ; .text:0000000180081091 jz short loc_1800810AB <- jmp LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=81091 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10030841 lea eax, [esp+150h+VersionInformation] ; .text:10030845 inc ebx <- nop ; .text:10030846 mov [edi], ebx ; .text:10030848 push eax ; lpVersionInformation ; .text:10030849 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=30845 SingleUserCode.x86=nop ; .text:0000000180011AA3 lea rcx, [rsp+190h+VersionInformation] ; lpVersionInformation ; .text:0000000180011AA8 mov ebx, 1 <- 0 ; .text:0000000180011AAD mov [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180011AB5 mov [rdi], ebx ; .text:0000000180011AB7 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=11AA9 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:1003BEC9 cmp eax, [ecx+320h] ; .text:1003BECF jz loc_1005EE1A ; Changed ; .text:1003BEC9 mov eax, 100h ; .text:1003BECE mov [ecx+320h], eax ; .text:1003BED4 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=3BEC9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Original ; .text:000000018000B9F5 cmp [rcx+63Ch], eax ; .text:000000018000B9FB jz sub_18003B9C8 ; Changed ; .text:000000018000B9F5 mov eax, 100h ; .text:000000018000B9FA mov [rcx+638h], eax ; .text:000000018000BA00 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=B9F5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46F18 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=1EB00 SLInitFunc.x64=New_CSLQuery_Initialize [6.4.9879.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:100A9CBB call ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:100A9CC0 test eax, eax ; .text:100A9CC2 js short loc_100A9CDF ; .text:100A9CC4 cmp [ebp+var_C], 0 ; .text:100A9CC8 jz short loc_100A9CDF <- jmp LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9CC8 LocalOnlyCode.x86=jmpshort ; .text:0000000180095603 call ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:0000000180095608 test eax, eax ; .text:000000018009560A js short loc_18009562B ; .text:000000018009560C cmp [rsp+58h+arg_18], 0 ; .text:0000000180095611 jz short loc_18009562B <- jmp LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=95611 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10030C51 lea eax, [esp+150h+VersionInformation] ; .text:10030C55 inc ebx <- nop ; .text:10030C56 mov [edi], ebx ; .text:10030C58 push eax ; lpVersionInformation ; .text:10030C59 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=30C55 SingleUserCode.x86=nop ; .text:0000000180016A2E call memset_0 ; .text:0000000180016A33 mov ebx, 1 <- 0 ; .text:0000000180016A38 mov [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180016A40 lea rcx, [rsp+190h+VersionInformation] ; lpVersionInformation ; .text:0000000180016A45 mov [rdi], ebx ; .text:0000000180016A47 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=16A34 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:1002DAB9 cmp eax, [ecx+320h] ; .text:1002DABF jz loc_1006C38A ; Changed ; .text:1002DAB9 mov eax, 100h ; .text:1002DABE mov [ecx+320h], eax ; .text:1002DAC4 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=2DAB9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Original ; .text:000000018001BDC5 cmp [rcx+63Ch], eax ; .text:000000018001BDCB jz sub_180045540 ; Changed ; .text:000000018001BDC5 mov eax, 100h ; .text:000000018001BDCA mov [rcx+638h], eax ; .text:000000018001BDD0 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=1BDC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=41132 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=24750 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.9926.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8C28 LocalOnlyCode.x86=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=31725 SingleUserCode.x86=nop ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3CF99 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=3F140 SLInitFunc.x86=New_CSLQuery_Initialize ; x64 contributed by v-yadli ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x64=1 ;;;OFFSET = 0x61 ;;;BASE = 0x95F90 LocalOnlyOffset.x64=95FF1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x64=1 ;;;OFFSET = 0x43 ;;;BASE = 0x12F90 ;;;;instruction = 0xBB 0x01 0x00 0x00 0x00 ;;; ^^^ +1 offset SingleUserOffset.x64=12A34 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x64=1 ;;; ;;;BASE = 0xBDF0 ;;;OFFSET = 0x15 DefPolicyOffset.x64=BE05 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x64=1 SLInitOffset.x64=24EC0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.10041.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense ; .text:100A9D7B call ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:100A9D80 test eax, eax ; .text:100A9D82 js short loc_100A9D9F ; .text:100A9D84 cmp [ebp+var_C], 0 ; .text:100A9D88 jz short loc_100A9D9F <- jmp LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9D88 LocalOnlyCode.x86=jmpshort ; .text:0000000180097133 call ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *) ; .text:0000000180097138 test eax, eax ; .text:000000018009713A js short loc_18009715B ; .text:000000018009713C cmp [rsp+58h+arg_18], 0 ; .text:0000000180097141 jz short loc_18009715B <- jmp LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=97141 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled ; .text:10032211 lea eax, [esp+150h+VersionInformation] ; .text:10032215 inc ebx <- nop ; .text:10032216 mov [edi], ebx ; .text:10032218 push eax ; lpVersionInformation ; .text:10032219 call ds:__imp__GetVersionExW@4 ; GetVersionExW(x) SingleUserPatch.x86=1 SingleUserOffset.x86=32215 SingleUserCode.x86=nop ; .text:0000000180015C5E call memset_0 ; .text:0000000180015C63 mov ebx, 1 <- 0 ; .text:0000000180015C68 mov [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch ; .text:0000000180015C70 lea rcx, [rsp+190h+VersionInformation] ; lpVersionInformation ; .text:0000000180015C75 mov [rdi], ebx ; .text:0000000180015C77 call cs:__imp_GetVersionExW SingleUserPatch.x64=1 SingleUserOffset.x64=15C64 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query ; Original ; .text:1002DFC9 cmp eax, [ecx+320h] ; .text:1002DFCF jz loc_10056550 ; Changed ; .text:1002DFC9 mov eax, 100h ; .text:1002DFCE mov [ecx+320h], eax ; .text:1002DFD4 nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=2DFC9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Original ; .text:000000018000B795 cmp [rcx+63Ch], eax ; .text:000000018000B79B jz sub_18003A79A ; Changed ; .text:000000018000B795 mov eax, 100h ; .text:000000018000B79A mov [rcx+638h], eax ; .text:000000018000B7A0 nop DefPolicyPatch.x64=1 DefPolicyOffset.x64=B795 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46960 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E40 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.10240.16384] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7D38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=96901 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=32A95 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=18F74 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2F5B9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=22865 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46581 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=250F0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.10586.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7C18 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=96AA1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=353B5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=190D4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=30B69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=229A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=469DE SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=25220 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.10586.589] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7BE8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=96A51 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=353B5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=190D4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=30B69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=229A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=469DE SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=25220 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.11082.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7C98 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=96AB1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35405 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=190D4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=30BB9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=229A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46A3E SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=25220 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.11102.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D58 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=95CD1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35A85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2A9C4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=30159 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B5D5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=44FD2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D160 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14251.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D58 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=95CD1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35A85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2A9C4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=30159 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B5D5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=44FD2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D160 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14271.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4CE8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=941E1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35915 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=263F4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF79 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C185 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=47725 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CE50 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14279.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4D28 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=94191 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35915 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=263F4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF79 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C185 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=47725 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CE50 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14295.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4D28 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D691 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35925 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=25514 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1BA35 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=47748 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C860 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14300.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F5F1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x64=1 SingleUserOffset.x64=26B04 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D125 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x64=1 SLInitOffset.x64=CC60 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14316.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F5F1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=32B55 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=26B04 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C1C9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46ABD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC60 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14328.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F5F1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=32B55 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=26B04 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C1C9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D365 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46ABD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC60 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14332.1001] ; contributed by maxpiva ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E98 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F601 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=357E5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2AE44 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=316A9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C025 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4755F SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CAD0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14342.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E98 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8EF31 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=357E5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=26774 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=316A9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1CEF5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4755F SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CA20 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14352.1002] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4478 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D911 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35465 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24474 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=30099 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AC05 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=44792 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CDB0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14366.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9088 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FB01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34F65 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=21DE4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=316E9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1A855 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4793E SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CCE0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14367.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9088 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FB01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34F65 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=21DE4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=316E9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1A855 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4793E SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CCE0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14372.0] ; x64 contributed by kbmorris ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F931 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34635 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=295A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=460D2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC10 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14379.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F941 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34635 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=295A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=460D2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC10 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14383.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F941 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34635 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=295A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=460D2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC10 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14385.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F941 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34635 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=295A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=460D2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC10 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14388.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6038 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D781 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14393.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6038 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D781 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14393.1198] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6088 LocalOnlyCode.x86=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize [10.0.14393.1737] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6198 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D861 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35AD5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=30039 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45724 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14393.2457] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6248 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D811 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=36CE5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=29CF4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31209 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B545 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45824 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C920 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14901.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6038 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D781 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14905.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6038 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D781 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14915.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6D98 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E241 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35E35 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=29EB4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=30399 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B4A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46092 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CE40 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14926.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6D18 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E071 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35E55 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=29EB4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=303B9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B4A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=460A2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CE40 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14931.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4908 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B411 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35705 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=29264 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AD05 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=452FD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C7FC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14936.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A3F38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B9A1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35355 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=25174 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1BB55 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=44CFE SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C62C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14942.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A3F38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=9115B LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35355 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=199BD SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1064E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=44CFE SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=258EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14946.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4018 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=911AB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35355 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=199AD SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1064E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=44CFD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=258DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14951.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A78D8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=94A6B LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=3BA85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1CEDD SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=32629 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=11E9E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=3F680 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22EE0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14955.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A78D8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=94A6B LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=3BA85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1CEDD SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=32629 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=11E9E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=3F680 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22EE0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14959.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A79B8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=934AB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=2EF05 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=16A0D SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2A4E9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10A8E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=448A0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=26960 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14965.1001] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7868 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=9345B LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=3BA85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17DFD SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=32A59 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1212E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=3F680 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=26610 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14971.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7968 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925FB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=36FE5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1803D SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D9A9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=11FBE DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46500 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=26180 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14986.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7878 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=926BB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=36FA5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17FFD SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D979 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=11F7E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=464A0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=26140 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14997.1001] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=931EB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x64=1 SingleUserOffset.x64=274ED SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D95E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x64=1 SLInitOffset.x64=E000 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15002.1001] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=931EB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=346B5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=274ED SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D779 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D95E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=47D90 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=E000 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15007.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9648 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=931EB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34665 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=274ED SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D719 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D95E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=47D30 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=E000 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15014.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9648 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=931EB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34685 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=274ED SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D739 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D95E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=47D50 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=E000 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15019.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A39F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=928FB LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=BADF5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=FBDD SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=A8479 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx_jmp DefPolicyPatch.x64=1 DefPolicyOffset.x64=20AAE DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=3C240 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=24480 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15025.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=9259B LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x64=1 SingleUserOffset.x64=2C08D SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x64=1 DefPolicyOffset.x64=1DD0E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x64=1 SLInitOffset.x64=E5B8 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15031.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5BA8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E221 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=30A75 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2A114 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2B1D9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C7B5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4532D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D80C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15042.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5BA8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E221 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=30A75 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2A114 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2B1D9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C7B5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4532D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D80C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15046.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=80BB8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E361 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=31E95 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=15E14 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=38A19 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=E745 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=9422D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=21FFC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15048.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=80BB8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E361 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=31E95 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=15E14 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=38A19 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=E745 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=9422D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=21FFC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15055.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5348 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D2E1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=374C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=181E4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3BAD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10B65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=44EFF SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22AEC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15058.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CAA1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35075 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24E74 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=2DD65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4549D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D1EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15061.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CAA1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35075 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24E74 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=2DD65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4549D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D1EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15063.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CAA1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35075 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24E74 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=2DD65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4549D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D1EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15063.296] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CAA1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=35075 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24E74 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=2DD65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4549D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D1EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15063.994] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CB01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x64=1 SingleUserOffset.x64=15EA4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x64=1 DefPolicyOffset.x64=FAE5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x64=1 SLInitOffset.x64=234DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15063.1155] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CB01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x64=1 SingleUserOffset.x64=15EA4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x64=1 DefPolicyOffset.x64=FAE5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x64=1 SLInitOffset.x64=234DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16179.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AA568 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8C141 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34425 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=16F84 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31219 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1E7F5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45F30 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=21700 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16184.1001] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AA568 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8C141 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=34425 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=16F84 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31219 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1E7F5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45F30 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=21700 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16199.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=ABA68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CED1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=348C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=28C14 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=319B9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=CB25 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=469B0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=FA30 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16215.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7CE8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8DE21 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39F05 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=28724 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3E019 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=CC15 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=46462 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=FB00 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16232.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7D38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8DD41 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39F35 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=287B4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3E0C9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=CC15 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4650F SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=FB00 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16237.1001] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7F38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E911 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39F85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1BC84 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3E119 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=DA55 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4655D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2180C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16241.1001] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7F38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E911 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39F85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1BC84 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3E119 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=DA55 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4655D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2180C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16251.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=ABC88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8EC21 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=3A525 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1BCB4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31779 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=DAF5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=447FD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2183C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16251.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=ABC88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8EC21 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=3A525 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1BCB4 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31779 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=DAF5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=447FD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2183C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16257.1] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB718 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E841 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=33925 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=11364 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C409 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1EFD5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4504D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2495C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16257.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB718 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E841 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=33925 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=11364 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C409 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1EFD5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4504D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2495C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16273.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB798 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E871 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=33925 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=11364 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C409 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1EFD5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4504D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2495C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16275.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9388 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=90001 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39435 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C724 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DE89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D75 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=463D4 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D0C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16278.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9388 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=90001 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39435 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C724 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DE89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D75 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=463D4 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D0C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16281.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16288.1] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16291.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16294.1] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16296.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16299.0] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16299.15] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16353.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9388 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=90001 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=39435 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C724 SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DE89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D75 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=463D4 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D0C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16362.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FBA1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=2F61C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=19D1C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DE99 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=463D4 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D9C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17004.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8EB8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FB41 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=2F65C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=19D1C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DF09 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=4643F SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D9C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17017.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB388 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F291 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=3477C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1977C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31049 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=125A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45CDD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=227DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17025.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB498 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F291 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=3477C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1977C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31049 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=125A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45CDD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=227DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17035.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB3F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F271 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=354AC SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=14E7C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31F19 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10CB5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45C4D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22AEC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17046.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB3F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F281 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=354AC SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=14E8C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=31F19 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10CC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=45C4D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22AFC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17063.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD7F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=92671 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=153CC SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=111CE DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2318C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17115.1] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD738 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1511C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17128.1] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD738 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1511C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17133.1] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD738 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1511C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17134.1] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD738 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1511C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17723.1000] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=75D91 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelperMgr::IsSingleSessionPerUserEnabled SingleUserPatch.x64=1 SingleUserOffset.x64=1296C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x64=1 DefPolicyOffset.x64=17A45 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x64=1 SLInitOffset.x64=1B10C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17763.1] ; Patch CEnforcementCore::GetInstanceOfTSLicense LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AF8E4 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=77941 LocalOnlyCode.x64=jmpshort ; Patch CSessionArbitrationHelperMgr::IsSingleSessionPerUserEnabled SingleUserPatch.x86=1 SingleUserOffset.x86=4D505 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1322C SingleUserCode.x64=Zero ; Patch CDefPolicy::Query DefPolicyPatch.x86=1 DefPolicyOffset.x86=4BD09 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=17F45 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx ; Hook CSLQuery::Initialize SLInitHook.x86=1 SLInitOffset.x86=5B02A SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=1ABFC SLInitFunc.x64=New_CSLQuery_Initialize [SLInit] ; Is server bServerSku=1 ; Enable listener - allow remote connections bRemoteConnAllowed=1 ; Allow fast user switching bFUSEnabled=1 ; Allow RemoteApp server bAppServerAllowed=1 ; Allow multi monitor bMultimonAllowed=1 ; Maximum user sessions (0 - unlimited) lMaxUserSessions=0 ; Maximum debug/glass sessions (0 - unlimited) ulMaxDebugSessions=0 ; SLInit function is succeeded bInitialized=1 [6.3.9431.0-SLInit] ; HOW TO search SLInit global variables in IDA Pro: ; 1. Search text: The SL policy for ',27h,'Allow Multiple Sessions',27h,' is not defined ; 2. Xref will point to CSLQuery::Initialize function ; 3. Follow xref, look for cmp instruction nearby ; 4. It will be comparsion with CSLQuery::bServerSku constant ; 5. Now it's easy to find other constants ; Strings to find other values: ; CSLQuery::GetMaxUserSessions ; CSLQuery::IsAppServerInstalled failed: ; CSLQuery::AreRemoteConnectionsAllowed f ; CSLQuery::IsMultimonAllowed ; CSLQuery::GetMaxDebugSessions ; CSLQuery::IsFUSEnabled bFUSEnabled.x86 =A22A8 lMaxUserSessions.x86 =A22AC bAppServerAllowed.x86 =A22B0 bInitialized.x86 =A22B4 bMultimonAllowed.x86 =A22B8 bServerSku.x86 =A22BC ulMaxDebugSessions.x86=A22C0 bRemoteConnAllowed.x86=A22C4 bFUSEnabled.x64 =C4490 lMaxUserSessions.x64 =C4494 bAppServerAllowed.x64 =C4498 bInitialized.x64 =C449C bMultimonAllowed.x64 =C44A0 bServerSku.x64 =C44A4 ulMaxDebugSessions.x64=C44A8 bRemoteConnAllowed.x64=C44AC [6.3.9600.16384-SLInit] bFUSEnabled.x86 =C02A8 lMaxUserSessions.x86 =C02AC bAppServerAllowed.x86 =C02B0 bInitialized.x86 =C02B4 bMultimonAllowed.x86 =C02B8 bServerSku.x86 =C02BC ulMaxDebugSessions.x86=C02C0 bRemoteConnAllowed.x86=C02C4 bServerSku.x64 =E6494 ulMaxDebugSessions.x64=E6498 bRemoteConnAllowed.x64=E649C bFUSEnabled.x64 =E64A0 lMaxUserSessions.x64 =E64A4 bAppServerAllowed.x64 =E64A8 bInitialized.x64 =E64AC bMultimonAllowed.x64 =E64B0 [6.3.9600.17095-SLInit] bFUSEnabled.x86 =C12A8 lMaxUserSessions.x86 =C12AC bAppServerAllowed.x86 =C12B0 bInitialized.x86 =C12B4 bMultimonAllowed.x86 =C12B8 bServerSku.x86 =C12BC ulMaxDebugSessions.x86=C12C0 bRemoteConnAllowed.x86=C12C4 bServerSku.x64 =E4494 ulMaxDebugSessions.x64=E4498 bRemoteConnAllowed.x64=E449C bFUSEnabled.x64 =E44A0 lMaxUserSessions.x64 =E44A4 bAppServerAllowed.x64 =E44A8 bInitialized.x64 =E44AC bMultimonAllowed.x64 =E44B0 [6.3.9600.17415-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =F9054 lMaxUserSessions.x64 =F9058 bAppServerAllowed.x64 =F905C bInitialized.x64 =F9060 bMultimonAllowed.x64 =F9064 bServerSku.x64 =F9068 ulMaxDebugSessions.x64=F906C bRemoteConnAllowed.x64=F9070 [6.3.9600.18692-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =F9054 lMaxUserSessions.x64 =F9058 bAppServerAllowed.x64 =F905C bInitialized.x64 =F9060 bMultimonAllowed.x64 =F9064 bServerSku.x64 =F9068 ulMaxDebugSessions.x64=F906C bRemoteConnAllowed.x64=F9070 [6.3.9600.18708-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =FA054 lMaxUserSessions.x64 =FA058 bAppServerAllowed.x64 =FA05C bInitialized.x64 =FA060 bMultimonAllowed.x64 =FA064 bServerSku.x64 =FA068 ulMaxDebugSessions.x64=FA06C bRemoteConnAllowed.x64=FA070 [6.3.9600.18928-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =FA054 lMaxUserSessions.x64 =FA058 bAppServerAllowed.x64 =FA05C bInitialized.x64 =FA060 bMultimonAllowed.x64 =FA064 bServerSku.x64 =FA068 ulMaxDebugSessions.x64=FA06C bRemoteConnAllowed.x64=FA070 [6.3.9600.19093-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =FA054 lMaxUserSessions.x64 =FA058 bAppServerAllowed.x64 =FA05C bInitialized.x64 =FA060 bMultimonAllowed.x64 =FA064 bServerSku.x64 =FA068 ulMaxDebugSessions.x64=FA06C bRemoteConnAllowed.x64=FA070 [6.4.9841.0-SLInit] bFUSEnabled.x86 =BF9F0 lMaxUserSessions.x86 =BF9F4 bAppServerAllowed.x86 =BF9F8 bInitialized.x86 =BF9FC bMultimonAllowed.x86 =BFA00 bServerSku.x86 =BFA04 ulMaxDebugSessions.x86=BFA08 bRemoteConnAllowed.x86=BFA0C bFUSEnabled.x64 =ECFF8 lMaxUserSessions.x64 =ECFFC bAppServerAllowed.x64 =ED000 bInitialized.x64 =ED004 bMultimonAllowed.x64 =ED008 bServerSku.x64 =ED00C ulMaxDebugSessions.x64=ED010 bRemoteConnAllowed.x64=ED014 [6.4.9860.0-SLInit] bFUSEnabled.x86 =BF7E0 lMaxUserSessions.x86 =BF7E4 bAppServerAllowed.x86 =BF7E8 bInitialized.x86 =BF7EC bMultimonAllowed.x86 =BF7F0 bServerSku.x86 =BF7F4 ulMaxDebugSessions.x86=BF7F8 bRemoteConnAllowed.x86=BF7FC bFUSEnabled.x64 =ECBD8 lMaxUserSessions.x64 =ECBDC bAppServerAllowed.x64 =ECBE0 bInitialized.x64 =ECBE4 bMultimonAllowed.x64 =ECBE8 bServerSku.x64 =ECBEC ulMaxDebugSessions.x64=ECBF0 bRemoteConnAllowed.x64=ECBF4 [6.4.9879.0-SLInit] bFUSEnabled.x86 =C27D8 lMaxUserSessions.x86 =C27DC bAppServerAllowed.x86 =C27E0 bInitialized.x86 =C27E4 bMultimonAllowed.x86 =C27E8 bServerSku.x86 =C27EC ulMaxDebugSessions.x86=C27F0 bRemoteConnAllowed.x86=C27F4 bFUSEnabled.x64 =EDBF0 lMaxUserSessions.x64 =EDBF4 bAppServerAllowed.x64 =EDBF8 bInitialized.x64 =EDBFC bMultimonAllowed.x64 =EDC00 bServerSku.x64 =EDC04 ulMaxDebugSessions.x64=EDC08 bRemoteConnAllowed.x64=EDC0C [10.0.9926.0-SLInit] bFUSEnabled.x86 =C17D8 lMaxUserSessions.x86 =C17DC bAppServerAllowed.x86 =C17E0 bInitialized.x86 =C17E4 bMultimonAllowed.x86 =C17E8 bServerSku.x86 =C17EC ulMaxDebugSessions.x86=C17F0 bRemoteConnAllowed.x86=C17F4 ; x64 contributed by v-yadli bFUSEnabled.x64 =EEBF0 lMaxUserSessions.x64 =EEBF4 bAppServerAllowed.x64 =EEBF8 bInitialized.x64 =EEBFC bMultimonAllowed.x64 =EEC00 bServerSku.x64 =EEC04 ulMaxDebugSessions.x64=EEC08 bRemoteConnAllowed.x64=EEC0C [10.0.10041.0-SLInit] bFUSEnabled.x86 =C5F60 lMaxUserSessions.x86 =C5F64 bAppServerAllowed.x86 =C5F68 bInitialized.x86 =C5F6C bMultimonAllowed.x86 =C5F70 bServerSku.x86 =C5F74 ulMaxDebugSessions.x86=C5F78 bRemoteConnAllowed.x86=C5F7C bFUSEnabled.x64 =F3448 lMaxUserSessions.x64 =F344C bAppServerAllowed.x64 =F3450 bInitialized.x64 =F3454 bMultimonAllowed.x64 =F3458 bServerSku.x64 =F345C ulMaxDebugSessions.x64=F3460 bRemoteConnAllowed.x64=F3464 [10.0.10240.16384-SLInit] bFUSEnabled.x86 =C3F60 lMaxUserSessions.x86 =C3F64 bAppServerAllowed.x86 =C3F68 bInitialized.x86 =C3F6C bMultimonAllowed.x86 =C3F70 bServerSku.x86 =C3F74 ulMaxDebugSessions.x86=C3F78 bRemoteConnAllowed.x86=C3F7C lMaxUserSessions.x64 =F23B0 bAppServerAllowed.x64 =F23B4 bServerSku.x64 =F23B8 bFUSEnabled.x64 =F3460 bInitialized.x64 =F3464 bMultimonAllowed.x64 =F3468 ulMaxDebugSessions.x64=F346C bRemoteConnAllowed.x64=F3470 [10.0.10586.0-SLInit] bFUSEnabled.x86 =C3F60 lMaxUserSessions.x86 =C3F64 bAppServerAllowed.x86 =C3F68 bInitialized.x86 =C3F6C bMultimonAllowed.x86 =C3F70 bServerSku.x86 =C3F74 ulMaxDebugSessions.x86=C3F78 bRemoteConnAllowed.x86=C3F7C lMaxUserSessions.x64 =F23B0 bAppServerAllowed.x64 =F23B4 bServerSku.x64 =F23B8 bFUSEnabled.x64 =F3460 bInitialized.x64 =F3464 bMultimonAllowed.x64 =F3468 ulMaxDebugSessions.x64=F346C bRemoteConnAllowed.x64=F3470 [10.0.10586.589-SLInit] bFUSEnabled.x86 =C3F60 lMaxUserSessions.x86 =C3F64 bAppServerAllowed.x86 =C3F68 bInitialized.x86 =C3F6C bMultimonAllowed.x86 =C3F70 bServerSku.x86 =C3F74 ulMaxDebugSessions.x86=C3F78 bRemoteConnAllowed.x86=C3F7C lMaxUserSessions.x64 =F23B0 bAppServerAllowed.x64 =F23B4 bServerSku.x64 =F23B8 bFUSEnabled.x64 =F3460 bInitialized.x64 =F3464 bMultimonAllowed.x64 =F3468 ulMaxDebugSessions.x64=F346C bRemoteConnAllowed.x64=F3470 [10.0.11082.1000-SLInit] bFUSEnabled.x86 =C3F60 lMaxUserSessions.x86 =C3F64 bAppServerAllowed.x86 =C3F68 bInitialized.x86 =C3F6C bMultimonAllowed.x86 =C3F70 bServerSku.x86 =C3F74 ulMaxDebugSessions.x86=C3F78 bRemoteConnAllowed.x86=C3F7C lMaxUserSessions.x64 =F23B0 bAppServerAllowed.x64 =F23B4 bServerSku.x64 =F23B8 bFUSEnabled.x64 =F3460 bInitialized.x64 =F3464 bMultimonAllowed.x64 =F3468 ulMaxDebugSessions.x64=F346C bRemoteConnAllowed.x64=F3470 [10.0.11102.1000-SLInit] bInitialized.x86 =C1F5C bServerSku.x86 =C1F60 lMaxUserSessions.x86 =C1F64 bAppServerAllowed.x86 =C1F68 bRemoteConnAllowed.x86=C1F6C bMultimonAllowed.x86 =C1F70 ulMaxDebugSessions.x86=C1F74 bFUSEnabled.x86 =C1F78 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 bServerSku.x64 =F244C lMaxUserSessions.x64 =F2450 bAppServerAllowed.x64 =F2454 [10.0.14251.1000-SLInit] bInitialized.x86 =C1F5C bServerSku.x86 =C1F60 lMaxUserSessions.x86 =C1F64 bAppServerAllowed.x86 =C1F68 bRemoteConnAllowed.x86=C1F6C bMultimonAllowed.x86 =C1F70 ulMaxDebugSessions.x86=C1F74 bFUSEnabled.x86 =C1F78 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 bServerSku.x64 =F244C lMaxUserSessions.x64 =F2450 bAppServerAllowed.x64 =F2454 [10.0.14271.1000-SLInit] bInitialized.x86 =C0F5C bServerSku.x86 =C0F60 lMaxUserSessions.x86 =C0F64 bAppServerAllowed.x86 =C0F68 bRemoteConnAllowed.x86=C0F6C bMultimonAllowed.x86 =C0F70 ulMaxDebugSessions.x86=C0F74 bFUSEnabled.x86 =C0F78 bServerSku.x64 =EF3C0 lMaxUserSessions.x64 =EF3C4 bAppServerAllowed.x64 =EF3C8 bInitialized.x64 =F0460 bRemoteConnAllowed.x64=F0464 bMultimonAllowed.x64 =F0468 ulMaxDebugSessions.x64=F046C bFUSEnabled.x64 =F0470 [10.0.14279.1000-SLInit] bInitialized.x86 =C0F5C bServerSku.x86 =C0F60 lMaxUserSessions.x86 =C0F64 bAppServerAllowed.x86 =C0F68 bRemoteConnAllowed.x86=C0F6C bMultimonAllowed.x86 =C0F70 ulMaxDebugSessions.x86=C0F74 bFUSEnabled.x86 =C0F78 bServerSku.x64 =EF3C0 lMaxUserSessions.x64 =EF3C4 bAppServerAllowed.x64 =EF3C8 bInitialized.x64 =F0460 bRemoteConnAllowed.x64=F0464 bMultimonAllowed.x64 =F0468 ulMaxDebugSessions.x64=F046C bFUSEnabled.x64 =F0470 [10.0.14295.1000-SLInit] bInitialized.x86 =C0F5C bServerSku.x86 =C0F60 lMaxUserSessions.x86 =C0F64 bAppServerAllowed.x86 =C0F68 bRemoteConnAllowed.x86=C0F6C bMultimonAllowed.x86 =C0F70 ulMaxDebugSessions.x86=C0F74 bFUSEnabled.x86 =C0F78 bServerSku.x64 =E73C0 lMaxUserSessions.x64 =E73C4 bAppServerAllowed.x64 =E73C8 bInitialized.x64 =E8460 bRemoteConnAllowed.x64=E8464 bMultimonAllowed.x64 =E8468 ulMaxDebugSessions.x64=E846C bFUSEnabled.x64 =E8470 [10.0.14300.1000-SLInit] bServerSku.x64 =E93C0 lMaxUserSessions.x64 =E93C4 bAppServerAllowed.x64 =E93C8 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 [10.0.14316.1000-SLInit] bInitialized.x86 =C4F58 bServerSku.x86 =C4F5C lMaxUserSessions.x86 =C4F60 bAppServerAllowed.x86 =C4F64 bRemoteConnAllowed.x86=C4F68 bMultimonAllowed.x86 =C4F6C ulMaxDebugSessions.x86=C4F70 bFUSEnabled.x86 =C4F74 bServerSku.x64 =E93C0 lMaxUserSessions.x64 =E93C4 bAppServerAllowed.x64 =E93C8 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 [10.0.14328.1000-SLInit] bInitialized.x86 =C4F58 bServerSku.x86 =C4F5C lMaxUserSessions.x86 =C4F60 bAppServerAllowed.x86 =C4F64 bRemoteConnAllowed.x86=C4F68 bMultimonAllowed.x86 =C4F6C ulMaxDebugSessions.x86=C4F70 bFUSEnabled.x86 =C4F74 bServerSku.x64 =E93C0 lMaxUserSessions.x64 =E93C4 bAppServerAllowed.x64 =E93C8 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 [10.0.14332.1001-SLInit] ; contributed by maxpiva bInitialized.x86 =C4F58 bServerSku.x86 =C4F5C lMaxUserSessions.x86 =C4F60 bAppServerAllowed.x86 =C4F64 bRemoteConnAllowed.x86=C4F68 bMultimonAllowed.x86 =C4F6C ulMaxDebugSessions.x86=C4F70 bFUSEnabled.x86 =C4F74 bServerSku.x64 =E93C0 lMaxUserSessions.x64 =E93C4 bAppServerAllowed.x64 =E93C8 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 [10.0.14342.1000-SLInit] bInitialized.x86 =C4F58 bServerSku.x86 =C4F5C lMaxUserSessions.x86 =C4F60 bAppServerAllowed.x86 =C4F64 bRemoteConnAllowed.x86=C4F68 bMultimonAllowed.x86 =C4F6C ulMaxDebugSessions.x86=C4F70 bFUSEnabled.x86 =C4F74 bInitialized.x64 =E9430 bRemoteConnAllowed.x64=E9434 bMultimonAllowed.x64 =E9438 ulMaxDebugSessions.x64=E943C bFUSEnabled.x64 =E9440 bServerSku.x64 =E944C lMaxUserSessions.x64 =E9450 bAppServerAllowed.x64 =E9454 [10.0.14352.1002-SLInit] bInitialized.x86 =C0F5C bServerSku.x86 =C0F60 lMaxUserSessions.x86 =C0F64 bAppServerAllowed.x86 =C0F68 bRemoteConnAllowed.x86=C0F6C bMultimonAllowed.x86 =C0F70 ulMaxDebugSessions.x86=C0F74 bFUSEnabled.x86 =C0F78 bServerSku.x64 =E73C0 lMaxUserSessions.x64 =E73C4 bAppServerAllowed.x64 =E73C8 bInitialized.x64 =E8460 bRemoteConnAllowed.x64=E8464 bMultimonAllowed.x64 =E8468 ulMaxDebugSessions.x64=E846C bFUSEnabled.x64 =E8470 [10.0.14366.0-SLInit] bInitialized.x86 =C4F68 bServerSku.x86 =C4F6C lMaxUserSessions.x86 =C4F70 bAppServerAllowed.x86 =C4F74 bRemoteConnAllowed.x86=C4F78 bMultimonAllowed.x86 =C4F7C ulMaxDebugSessions.x86=C4F80 bFUSEnabled.x86 =C4F84 bServerSku.x64 =E93E0 lMaxUserSessions.x64 =E93E4 bAppServerAllowed.x64 =E93E8 bInitialized.x64 =EA480 bRemoteConnAllowed.x64=EA484 bMultimonAllowed.x64 =EA488 ulMaxDebugSessions.x64=EA48C bFUSEnabled.x64 =EA490 [10.0.14367.0-SLInit] bInitialized.x86 =C4F68 bServerSku.x86 =C4F6C lMaxUserSessions.x86 =C4F70 bAppServerAllowed.x86 =C4F74 bRemoteConnAllowed.x86=C4F78 bMultimonAllowed.x86 =C4F7C ulMaxDebugSessions.x86=C4F80 bFUSEnabled.x86 =C4F84 bServerSku.x64 =E93E0 lMaxUserSessions.x64 =E93E4 bAppServerAllowed.x64 =E93E8 bInitialized.x64 =EA480 bRemoteConnAllowed.x64=EA484 bMultimonAllowed.x64 =EA488 ulMaxDebugSessions.x64=EA48C bFUSEnabled.x64 =EA490 [10.0.14372.0-SLInit] bInitialized.x86 =C3F68 bServerSku.x86 =C3F6C lMaxUserSessions.x86 =C3F70 bAppServerAllowed.x86 =C3F74 bRemoteConnAllowed.x86=C3F78 bMultimonAllowed.x86 =C3F7C ulMaxDebugSessions.x86=C3F80 bFUSEnabled.x86 =C3F84 ; x64 contributed by kbmorris bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 bServerSku.x64 =EA47C lMaxUserSessions.x64 =EA480 bAppServerAllowed.x64 =EA484 [10.0.14379.0-SLInit] bInitialized.x86 =C3F68 bServerSku.x86 =C3F6C lMaxUserSessions.x86 =C3F70 bAppServerAllowed.x86 =C3F74 bRemoteConnAllowed.x86=C3F78 bMultimonAllowed.x86 =C3F7C ulMaxDebugSessions.x86=C3F80 bFUSEnabled.x86 =C3F84 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 bServerSku.x64 =EA47C lMaxUserSessions.x64 =EA480 bAppServerAllowed.x64 =EA484 [10.0.14383.0-SLInit] bInitialized.x86 =C3F68 bServerSku.x86 =C3F6C lMaxUserSessions.x86 =C3F70 bAppServerAllowed.x86 =C3F74 bRemoteConnAllowed.x86=C3F78 bMultimonAllowed.x86 =C3F7C ulMaxDebugSessions.x86=C3F80 bFUSEnabled.x86 =C3F84 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 bServerSku.x64 =EA47C lMaxUserSessions.x64 =EA480 bAppServerAllowed.x64 =EA484 [10.0.14385.0-SLInit] bInitialized.x86 =C3F68 bServerSku.x86 =C3F6C lMaxUserSessions.x86 =C3F70 bAppServerAllowed.x86 =C3F74 bRemoteConnAllowed.x86=C3F78 bMultimonAllowed.x86 =C3F7C ulMaxDebugSessions.x86=C3F80 bFUSEnabled.x86 =C3F84 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 bServerSku.x64 =EA47C lMaxUserSessions.x64 =EA480 bAppServerAllowed.x64 =EA484 [10.0.14388.0-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14393.0-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14393.1198-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 [10.0.14393.1737-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14393.2457-SLInit] bInitialized.x86 =C1F94 bServerSku.x86 =C1F98 lMaxUserSessions.x86 =C1F9C bAppServerAllowed.x86 =C1FA0 bRemoteConnAllowed.x86=C1FA4 bMultimonAllowed.x86 =C1FA8 ulMaxDebugSessions.x86=C1FAC bFUSEnabled.x86 =C1FB0 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14901.1000-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14905.1000-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14915.1000-SLInit] bInitialized.x86 =C4F6C bServerSku.x86 =C4F70 lMaxUserSessions.x86 =C4F74 bAppServerAllowed.x86 =C4F78 bRemoteConnAllowed.x86=C4F7C bMultimonAllowed.x86 =C4F80 ulMaxDebugSessions.x86=C4F84 bFUSEnabled.x86 =C4F88 bServerSku.x64 =E93D0 lMaxUserSessions.x64 =E93D4 bAppServerAllowed.x64 =E93D8 bInitialized.x64 =EA470 bRemoteConnAllowed.x64=EA474 bMultimonAllowed.x64 =EA478 ulMaxDebugSessions.x64=EA47C bFUSEnabled.x64 =EA480 [10.0.14926.1000-SLInit] bInitialized.x86 =C4F6C bServerSku.x86 =C4F70 lMaxUserSessions.x86 =C4F74 bAppServerAllowed.x86 =C4F78 bRemoteConnAllowed.x86=C4F7C bMultimonAllowed.x86 =C4F80 ulMaxDebugSessions.x86=C4F84 bFUSEnabled.x86 =C4F88 bServerSku.x64 =E93D0 lMaxUserSessions.x64 =E93D4 bAppServerAllowed.x64 =E93D8 bInitialized.x64 =EA470 bRemoteConnAllowed.x64=EA474 bMultimonAllowed.x64 =EA478 ulMaxDebugSessions.x64=EA47C bFUSEnabled.x64 =EA480 [10.0.14931.1000-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E63D0 lMaxUserSessions.x64 =E63D4 bAppServerAllowed.x64 =E63D8 bInitialized.x64 =E7470 bRemoteConnAllowed.x64=E7474 bMultimonAllowed.x64 =E7478 ulMaxDebugSessions.x64=E747C bFUSEnabled.x64 =E7480 [10.0.14936.1000-SLInit] bInitialized.x86 =C0F6C bServerSku.x86 =C0F70 lMaxUserSessions.x86 =C0F74 bAppServerAllowed.x86 =C0F78 bRemoteConnAllowed.x86=C0F7C bMultimonAllowed.x86 =C0F80 ulMaxDebugSessions.x86=C0F84 bFUSEnabled.x86 =C0F88 bInitialized.x64 =E8460 bRemoteConnAllowed.x64=E8464 bMultimonAllowed.x64 =E8468 ulMaxDebugSessions.x64=E846C bFUSEnabled.x64 =E8470 bServerSku.x64 =E847C lMaxUserSessions.x64 =E8480 bAppServerAllowed.x64 =E8484 [10.0.14942.1000-SLInit] bInitialized.x86 =C0F6C bServerSku.x86 =C0F70 lMaxUserSessions.x86 =C0F74 bAppServerAllowed.x86 =C0F78 bRemoteConnAllowed.x86=C0F7C bMultimonAllowed.x86 =C0F80 ulMaxDebugSessions.x86=C0F84 bFUSEnabled.x86 =C0F88 bInitialized.x64 =EC460 bRemoteConnAllowed.x64=EC464 bMultimonAllowed.x64 =EC468 ulMaxDebugSessions.x64=EC46C bFUSEnabled.x64 =EC470 bServerSku.x64 =EC47C lMaxUserSessions.x64 =EC480 bAppServerAllowed.x64 =EC484 [10.0.14946.1000-SLInit] bInitialized.x86 =C0F6C bServerSku.x86 =C0F70 lMaxUserSessions.x86 =C0F74 bAppServerAllowed.x86 =C0F78 bRemoteConnAllowed.x86=C0F7C bMultimonAllowed.x86 =C0F80 ulMaxDebugSessions.x86=C0F84 bFUSEnabled.x86 =C0F88 bInitialized.x64 =EC460 bRemoteConnAllowed.x64=EC464 bMultimonAllowed.x64 =EC468 ulMaxDebugSessions.x64=EC46C bFUSEnabled.x64 =EC470 bServerSku.x64 =EC47C lMaxUserSessions.x64 =EC480 bAppServerAllowed.x64 =EC484 [10.0.14951.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =EF3D0 lMaxUserSessions.x64 =EF3D4 bAppServerAllowed.x64 =EF3D8 bInitialized.x64 =F0470 bRemoteConnAllowed.x64=F0474 bMultimonAllowed.x64 =F0478 ulMaxDebugSessions.x64=F047C bFUSEnabled.x64 =F0480 [10.0.14955.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =EF3D0 lMaxUserSessions.x64 =EF3D4 bAppServerAllowed.x64 =EF3D8 bInitialized.x64 =F0470 bRemoteConnAllowed.x64=F0474 bMultimonAllowed.x64 =F0478 ulMaxDebugSessions.x64=F047C bFUSEnabled.x64 =F0480 [10.0.14959.1000-SLInit] bInitialized.x86 =C4F68 bServerSku.x86 =C4F6C lMaxUserSessions.x86 =C4F70 bAppServerAllowed.x86 =C4F74 bRemoteConnAllowed.x86=C4F78 bMultimonAllowed.x86 =C4F7C ulMaxDebugSessions.x86=C4F80 bFUSEnabled.x86 =C4F84 bServerSku.x64 =EE3D0 lMaxUserSessions.x64 =EE3D4 bAppServerAllowed.x64 =EE3D8 bInitialized.x64 =EF470 bRemoteConnAllowed.x64=EF474 bMultimonAllowed.x64 =EF478 ulMaxDebugSessions.x64=EF47C bFUSEnabled.x64 =EF480 [10.0.14965.1001-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bInitialized.x64 =EF460 bRemoteConnAllowed.x64=EF464 bMultimonAllowed.x64 =EF468 ulMaxDebugSessions.x64=EF46C bFUSEnabled.x64 =EF470 bServerSku.x64 =EF47C lMaxUserSessions.x64 =EF480 bAppServerAllowed.x64 =EF484 [10.0.14971.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =EE3C0 lMaxUserSessions.x64 =EE3C4 bAppServerAllowed.x64 =EE3C8 bInitialized.x64 =EE470 bRemoteConnAllowed.x64=EE474 bMultimonAllowed.x64 =EE478 ulMaxDebugSessions.x64=EE47C bFUSEnabled.x64 =EE480 [10.0.14986.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =EE3C0 lMaxUserSessions.x64 =EE3C4 bAppServerAllowed.x64 =EE3C8 bInitialized.x64 =EE470 bRemoteConnAllowed.x64=EE474 bMultimonAllowed.x64 =EE478 ulMaxDebugSessions.x64=EE47C bFUSEnabled.x64 =EE480 [10.0.14997.1001-SLInit] bServerSku.x64 =F0408 lMaxUserSessions.x64 =F040C bAppServerAllowed.x64 =F0410 bInitialized.x64 =F0480 bRemoteConnAllowed.x64=F0484 bMultimonAllowed.x64 =F0488 ulMaxDebugSessions.x64=F048C bFUSEnabled.x64 =F0490 [10.0.15002.1001-SLInit] bInitialized.x86 =C6F74 bServerSku.x86 =C6F78 lMaxUserSessions.x86 =C6F7C bAppServerAllowed.x86 =C6F80 bRemoteConnAllowed.x86=C6F84 bMultimonAllowed.x86 =C6F88 ulMaxDebugSessions.x86=C6F8C bFUSEnabled.x86 =C6F90 bServerSku.x64 =F0408 lMaxUserSessions.x64 =F040C bAppServerAllowed.x64 =F0410 bInitialized.x64 =F0480 bRemoteConnAllowed.x64=F0484 bMultimonAllowed.x64 =F0488 ulMaxDebugSessions.x64=F048C bFUSEnabled.x64 =F0490 [10.0.15007.1000-SLInit] bInitialized.x86 =C6F74 bServerSku.x86 =C6F78 lMaxUserSessions.x86 =C6F7C bAppServerAllowed.x86 =C6F80 bRemoteConnAllowed.x86=C6F84 bMultimonAllowed.x86 =C6F88 ulMaxDebugSessions.x86=C6F8C bFUSEnabled.x86 =C6F90 bServerSku.x64 =F0408 lMaxUserSessions.x64 =F040C bAppServerAllowed.x64 =F0410 bInitialized.x64 =F0480 bRemoteConnAllowed.x64=F0484 bMultimonAllowed.x64 =F0488 ulMaxDebugSessions.x64=F048C bFUSEnabled.x64 =F0490 [10.0.15014.1000-SLInit] bInitialized.x86 =C6F74 bServerSku.x86 =C6F78 lMaxUserSessions.x86 =C6F7C bAppServerAllowed.x86 =C6F80 bRemoteConnAllowed.x86=C6F84 bMultimonAllowed.x86 =C6F88 ulMaxDebugSessions.x86=C6F8C bFUSEnabled.x86 =C6F90 bServerSku.x64 =F0408 lMaxUserSessions.x64 =F040C bAppServerAllowed.x64 =F0410 bInitialized.x64 =F0480 bRemoteConnAllowed.x64=F0484 bMultimonAllowed.x64 =F0488 ulMaxDebugSessions.x64=F048C bFUSEnabled.x64 =F0490 [10.0.15019.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =ECBDC lMaxUserSessions.x64 =ECBE0 bAppServerAllowed.x64 =ECBE4 bInitialized.x64 =F0490 bRemoteConnAllowed.x64=F0494 bMultimonAllowed.x64 =F0498 ulMaxDebugSessions.x64=F049C bFUSEnabled.x64 =F04A0 [10.0.15025.1000-SLInit] bServerSku.x64 =EE3E0 lMaxUserSessions.x64 =EE3E4 bAppServerAllowed.x64 =EE3E8 bInitialized.x64 =EF488 bRemoteConnAllowed.x64=EF48C bMultimonAllowed.x64 =EF490 ulMaxDebugSessions.x64=EF494 bFUSEnabled.x64 =EF498 [10.0.15031.0-SLInit] bInitialized.x86 =C2F6C bServerSku.x86 =C2F70 lMaxUserSessions.x86 =C2F74 bAppServerAllowed.x86 =C2F78 bRemoteConnAllowed.x86=C2F7C bMultimonAllowed.x86 =C2F80 ulMaxDebugSessions.x86=C2F84 bFUSEnabled.x86 =C2F88 bServerSku.x64 =E93E0 lMaxUserSessions.x64 =E93E4 bAppServerAllowed.x64 =E93E8 bInitialized.x64 =EA488 bRemoteConnAllowed.x64=EA48C bMultimonAllowed.x64 =EA490 ulMaxDebugSessions.x64=EA494 bFUSEnabled.x64 =EA498 [10.0.15042.0-SLInit] bInitialized.x86 =C2F6C bServerSku.x86 =C2F70 lMaxUserSessions.x86 =C2F74 bAppServerAllowed.x86 =C2F78 bRemoteConnAllowed.x86=C2F7C bMultimonAllowed.x86 =C2F80 ulMaxDebugSessions.x86=C2F84 bFUSEnabled.x86 =C2F88 bServerSku.x64 =E93E0 lMaxUserSessions.x64 =E93E4 bAppServerAllowed.x64 =E93E8 bInitialized.x64 =EA488 bRemoteConnAllowed.x64=EA48C bMultimonAllowed.x64 =EA490 ulMaxDebugSessions.x64=EA494 bFUSEnabled.x64 =EA498 [10.0.15046.0-SLInit] bInitialized.x86 =C4F18 bServerSku.x86 =C4F1C lMaxUserSessions.x86 =C4F20 bAppServerAllowed.x86 =C4F24 bRemoteConnAllowed.x86=C4F28 ulMaxDebugSessions.x86=C4F2C bMultimonAllowed.x86 =C5010 bFUSEnabled.x86 =C5014 bInitialized.x64 =EB468 bRemoteConnAllowed.x64=EB46C bMultimonAllowed.x64 =EB470 ulMaxDebugSessions.x64=EB474 bFUSEnabled.x64 =EB478 bServerSku.x64 =EB484 lMaxUserSessions.x64 =EB488 bAppServerAllowed.x64 =EB48C [10.0.15048.0-SLInit] bInitialized.x86 =C4F18 bServerSku.x86 =C4F1C lMaxUserSessions.x86 =C4F20 bAppServerAllowed.x86 =C4F24 bRemoteConnAllowed.x86=C4F28 ulMaxDebugSessions.x86=C4F2C bMultimonAllowed.x86 =C5010 bFUSEnabled.x86 =C5014 bInitialized.x64 =EB468 bRemoteConnAllowed.x64=EB46C bMultimonAllowed.x64 =EB470 ulMaxDebugSessions.x64=EB474 bFUSEnabled.x64 =EB478 bServerSku.x64 =EB484 lMaxUserSessions.x64 =EB488 bAppServerAllowed.x64 =EB48C [10.0.15055.0-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bServerSku.x64 =E83D8 lMaxUserSessions.x64 =E83DC bAppServerAllowed.x64 =E83E0 bInitialized.x64 =E9490 bRemoteConnAllowed.x64=E9494 bMultimonAllowed.x64 =E9498 ulMaxDebugSessions.x64=E949C bFUSEnabled.x64 =E94A0 [10.0.15058.0-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15061.0-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15063.0-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15063.296-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15063.994-SLInit] bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15063.1155-SLInit] bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.16179.1000-SLInit] bInitialized.x86 =C7F6C bServerSku.x86 =C7F70 lMaxUserSessions.x86 =C7F74 bAppServerAllowed.x86 =C7F78 bRemoteConnAllowed.x86=C7F7C bMultimonAllowed.x86 =C7F80 ulMaxDebugSessions.x86=C7F84 bFUSEnabled.x86 =C7F88 bServerSku.x64 =E83D8 lMaxUserSessions.x64 =E83DC bAppServerAllowed.x64 =E83E0 bInitialized.x64 =E9490 bRemoteConnAllowed.x64=E9494 bMultimonAllowed.x64 =E9498 ulMaxDebugSessions.x64=E949C bFUSEnabled.x64 =E94A0 [10.0.16184.1001-SLInit] bInitialized.x86 =C7F6C bServerSku.x86 =C7F70 lMaxUserSessions.x86 =C7F74 bAppServerAllowed.x86 =C7F78 bRemoteConnAllowed.x86=C7F7C bMultimonAllowed.x86 =C7F80 ulMaxDebugSessions.x86=C7F84 bFUSEnabled.x86 =C7F88 bServerSku.x64 =E83D8 lMaxUserSessions.x64 =E83DC bAppServerAllowed.x64 =E83E0 bInitialized.x64 =E9490 bRemoteConnAllowed.x64=E9494 bMultimonAllowed.x64 =E9498 ulMaxDebugSessions.x64=E949C bFUSEnabled.x64 =E94A0 [10.0.16199.1000-SLInit] bInitialized.x86 =C8F74 bServerSku.x86 =C8F78 lMaxUserSessions.x86 =C8F7C bAppServerAllowed.x86 =C8F80 bRemoteConnAllowed.x86=C8F84 bMultimonAllowed.x86 =C8F88 ulMaxDebugSessions.x86=C8F8C bFUSEnabled.x86 =C8F90 bServerSku.x64 =E83E8 lMaxUserSessions.x64 =E83EC bAppServerAllowed.x64 =E83F0 bInitialized.x64 =E94A0 bRemoteConnAllowed.x64=E94A4 bMultimonAllowed.x64 =E94A8 ulMaxDebugSessions.x64=E94AC bFUSEnabled.x64 =E94B0 [10.0.16215.1000-SLInit] bInitialized.x86 =C5F78 bServerSku.x86 =C5F7C lMaxUserSessions.x86 =C5F80 bAppServerAllowed.x86 =C5F84 bRemoteConnAllowed.x86=C5F88 bMultimonAllowed.x86 =C5F8C ulMaxDebugSessions.x86=C5F90 bFUSEnabled.x86 =C5F94 bServerSku.x64 =EA3E8 lMaxUserSessions.x64 =EA3EC bAppServerAllowed.x64 =EA3F0 bInitialized.x64 =EB4A0 bRemoteConnAllowed.x64=EB4A4 bMultimonAllowed.x64 =EB4A8 ulMaxDebugSessions.x64=EB4AC bFUSEnabled.x64 =EB4B0 [10.0.16232.1000-SLInit] bInitialized.x86 =C5F78 bServerSku.x86 =C5F7C lMaxUserSessions.x86 =C5F80 bAppServerAllowed.x86 =C5F84 bRemoteConnAllowed.x86=C5F88 bMultimonAllowed.x86 =C5F8C ulMaxDebugSessions.x86=C5F90 bFUSEnabled.x86 =C5F94 bServerSku.x64 =EA3E8 lMaxUserSessions.x64 =EA3EC bAppServerAllowed.x64 =EA3F0 bInitialized.x64 =EB4A0 bRemoteConnAllowed.x64=EB4A4 bMultimonAllowed.x64 =EB4A8 ulMaxDebugSessions.x64=EB4AC bFUSEnabled.x64 =EB4B0 [10.0.16237.1001-SLInit] bInitialized.x86 =C5F78 bServerSku.x86 =C5F7C lMaxUserSessions.x86 =C5F80 bAppServerAllowed.x86 =C5F84 bRemoteConnAllowed.x86=C5F88 bMultimonAllowed.x86 =C5F8C ulMaxDebugSessions.x86=C5F90 bFUSEnabled.x86 =C5F94 bServerSku.x64 =EB3EC lMaxUserSessions.x64 =EB3F0 bAppServerAllowed.x64 =EB3F4 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16241.1001-SLInit] bInitialized.x86 =C5F78 bServerSku.x86 =C5F7C lMaxUserSessions.x86 =C5F80 bAppServerAllowed.x86 =C5F84 bRemoteConnAllowed.x86=C5F88 bMultimonAllowed.x86 =C5F8C ulMaxDebugSessions.x86=C5F90 bFUSEnabled.x86 =C5F94 bServerSku.x64 =EB3EC lMaxUserSessions.x64 =EB3F0 bAppServerAllowed.x64 =EB3F4 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16251.0-SLInit] bInitialized.x86 =C9F78 bServerSku.x86 =C9F7C lMaxUserSessions.x86 =C9F80 bAppServerAllowed.x86 =C9F84 bRemoteConnAllowed.x86=C9F88 bMultimonAllowed.x86 =C9F8C ulMaxDebugSessions.x86=C9F90 bFUSEnabled.x86 =C9F94 bServerSku.x64 =EB3EC lMaxUserSessions.x64 =EB3F0 bAppServerAllowed.x64 =EB3F4 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16251.1000-SLInit] bInitialized.x86 =C9F78 bServerSku.x86 =C9F7C lMaxUserSessions.x86 =C9F80 bAppServerAllowed.x86 =C9F84 bRemoteConnAllowed.x86=C9F88 bMultimonAllowed.x86 =C9F8C ulMaxDebugSessions.x86=C9F90 bFUSEnabled.x86 =C9F94 bServerSku.x64 =EB3EC lMaxUserSessions.x64 =EB3F0 bAppServerAllowed.x64 =EB3F4 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16257.1-SLInit] bInitialized.x86 =C9F7C bServerSku.x86 =C9F80 lMaxUserSessions.x86 =C9F84 bAppServerAllowed.x86 =C9F88 bRemoteConnAllowed.x86=C9F8C bMultimonAllowed.x86 =C9F90 ulMaxDebugSessions.x86=C9F94 bFUSEnabled.x86 =C9F98 bServerSku.x64 =EB3F0 lMaxUserSessions.x64 =EB3F4 bAppServerAllowed.x64 =EB3F8 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16257.1000-SLInit] bInitialized.x86 =C9F7C bServerSku.x86 =C9F80 lMaxUserSessions.x86 =C9F84 bAppServerAllowed.x86 =C9F88 bRemoteConnAllowed.x86=C9F8C bMultimonAllowed.x86 =C9F90 ulMaxDebugSessions.x86=C9F94 bFUSEnabled.x86 =C9F98 bServerSku.x64 =EB3F0 lMaxUserSessions.x64 =EB3F4 bAppServerAllowed.x64 =EB3F8 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16273.1000-SLInit] bInitialized.x86 =C9F7C bServerSku.x86 =C9F80 lMaxUserSessions.x86 =C9F84 bAppServerAllowed.x86 =C9F88 bRemoteConnAllowed.x86=C9F8C bMultimonAllowed.x86 =C9F90 ulMaxDebugSessions.x86=C9F94 bFUSEnabled.x86 =C9F98 bServerSku.x64 =EB3F0 lMaxUserSessions.x64 =EB3F4 bAppServerAllowed.x64 =EB3F8 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16275.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16278.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16281.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16288.1-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16291.0-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16294.1-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16296.0-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16299.0-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16299.15-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16353.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16362.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.17004.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.17017.1000-SLInit] bInitialized.x86 =C9EB8 bServerSku.x86 =C9EBC lMaxUserSessions.x86 =C9EC0 bAppServerAllowed.x86 =C9EC4 bRemoteConnAllowed.x86=C9EC8 bMultimonAllowed.x86 =C9ECC ulMaxDebugSessions.x86=C9ED0 bFUSEnabled.x86 =C9ED4 bServerSku.x64 =EC2E8 lMaxUserSessions.x64 =EC2EC bAppServerAllowed.x64 =EC2F0 bInitialized.x64 =ED3A0 bRemoteConnAllowed.x64=ED3A4 bMultimonAllowed.x64 =ED3A8 ulMaxDebugSessions.x64=ED3AC bFUSEnabled.x64 =ED3B0 [10.0.17025.1000-SLInit] bInitialized.x86 =C9EB8 bServerSku.x86 =C9EBC lMaxUserSessions.x86 =C9EC0 bAppServerAllowed.x86 =C9EC4 bRemoteConnAllowed.x86=C9EC8 bMultimonAllowed.x86 =C9ECC ulMaxDebugSessions.x86=C9ED0 bFUSEnabled.x86 =C9ED4 bServerSku.x64 =EC2E8 lMaxUserSessions.x64 =EC2EC bAppServerAllowed.x64 =EC2F0 bInitialized.x64 =ED3A0 bRemoteConnAllowed.x64=ED3A4 bMultimonAllowed.x64 =ED3A8 ulMaxDebugSessions.x64=ED3AC bFUSEnabled.x64 =ED3B0 [10.0.17035.1000-SLInit] bInitialized.x86 =C9ED8 bServerSku.x86 =C9EDC lMaxUserSessions.x86 =C9EE0 bAppServerAllowed.x86 =C9EE4 bRemoteConnAllowed.x86=C9EE8 bMultimonAllowed.x86 =C9EEC ulMaxDebugSessions.x86=C9EF0 bFUSEnabled.x86 =C9EF4 bServerSku.x64 =EC2E8 lMaxUserSessions.x64 =EC2EC bAppServerAllowed.x64 =EC2F0 bInitialized.x64 =ED3A0 bRemoteConnAllowed.x64=ED3A4 bMultimonAllowed.x64 =ED3A8 ulMaxDebugSessions.x64=ED3AC bFUSEnabled.x64 =ED3B0 [10.0.17046.1000-SLInit] bInitialized.x86 =C9ED8 bServerSku.x86 =C9EDC lMaxUserSessions.x86 =C9EE0 bAppServerAllowed.x86 =C9EE4 bRemoteConnAllowed.x86=C9EE8 bMultimonAllowed.x86 =C9EEC ulMaxDebugSessions.x86=C9EF0 bFUSEnabled.x86 =C9EF4 bServerSku.x64 =EC2E8 lMaxUserSessions.x64 =EC2EC bAppServerAllowed.x64 =EC2F0 bInitialized.x64 =ED3A0 bRemoteConnAllowed.x64=ED3A4 bMultimonAllowed.x64 =ED3A8 ulMaxDebugSessions.x64=ED3AC bFUSEnabled.x64 =ED3B0 [10.0.17063.1000-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17115.1-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17128.1-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17133.1-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17134.1-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17723.1000-SLInit] bInitialized.x64 =E9AB0 bServerSku.x64 =E9AB4 lMaxUserSessions.x64 =E9AB8 bAppServerAllowed.x64 =E9AC0 bRemoteConnAllowed.x64=E9AC4 bMultimonAllowed.x64 =E9AC8 ulMaxDebugSessions.x64=E9ACC bFUSEnabled.x64 =E9AD0 [10.0.17763.1-SLInit] bInitialized.x86 =CD798 bServerSku.x86 =CD79C lMaxUserSessions.x86 =CD7A0 bAppServerAllowed.x86 =CD7A8 bRemoteConnAllowed.x86=CD7AC bMultimonAllowed.x86 =CD7B0 ulMaxDebugSessions.x86=CD7B4 bFUSEnabled.x86 =CD7B8 bInitialized.x64 =ECAB0 bServerSku.x64 =ECAB4 lMaxUserSessions.x64 =ECAB8 bAppServerAllowed.x64 =ECAC0 bRemoteConnAllowed.x64=ECAC4 bMultimonAllowed.x64 =ECAC8 ulMaxDebugSessions.x64=ECACC bFUSEnabled.x64 =ECAD0 ================================================ FILE: res/rdpwrap.ini ================================================ ; RDP Wrapper Library configuration ; Do not modify without special knowledge [Main] Updated=2018-10-10 LogFile=\rdpwrap.txt SLPolicyHookNT60=1 SLPolicyHookNT61=1 [SLPolicy] TerminalServices-RemoteConnectionManager-AllowRemoteConnections=1 TerminalServices-RemoteConnectionManager-AllowMultipleSessions=1 TerminalServices-RemoteConnectionManager-AllowAppServerMode=1 TerminalServices-RemoteConnectionManager-AllowMultimon=1 TerminalServices-RemoteConnectionManager-MaxUserSessions=0 TerminalServices-RemoteConnectionManager-ce0ad219-4670-4988-98fb-89b14c2f072b-MaxSessions=0 TerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-MaxSessions=2 TerminalServices-RDP-7-Advanced-Compression-Allowed=1 TerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-LocalOnly=0 TerminalServices-RemoteConnectionManager-8dc86f1d-9969-4379-91c1-06fe1dc60575-MaxSessions=1000 TerminalServices-DeviceRedirection-Licenses-TSEasyPrintAllowed=1 TerminalServices-DeviceRedirection-Licenses-PnpRedirectionAllowed=1 TerminalServices-DeviceRedirection-Licenses-TSMFPluginAllowed=1 TerminalServices-RemoteConnectionManager-UiEffects-DWMRemotingAllowed=1 [PatchCodes] nop=90 Zero=00 jmpshort=EB nopjmp=90E9 CDefPolicy_Query_edx_ecx=BA000100008991200300005E90 CDefPolicy_Query_eax_rcx_jmp=B80001000089813806000090EB CDefPolicy_Query_eax_esi=B80001000089862003000090 CDefPolicy_Query_eax_rdi=B80001000089873806000090 CDefPolicy_Query_eax_ecx=B80001000089812003000090 CDefPolicy_Query_eax_ecx_jmp=B800010000898120030000EB0E CDefPolicy_Query_eax_rcx=B80001000089813806000090 CDefPolicy_Query_edi_rcx=BF0001000089B938060000909090 [6.0.6000.16386] SingleUserPatch.x86=1 SingleUserOffset.x86=160BF SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=65E3E SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=15CD8 DefPolicyCode.x86=CDefPolicy_Query_edx_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=5C88F DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.0.6001.18000] SingleUserPatch.x86=1 SingleUserOffset.x86=185E4 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=70DBA SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=17FD8 DefPolicyCode.x86=CDefPolicy_Query_edx_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=65BD7 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.0.6002.18005] SingleUserPatch.x86=1 SingleUserOffset.x86=17FA8 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=70FF6 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=179C0 DefPolicyCode.x86=CDefPolicy_Query_edx_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=65E83 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.0.6002.19214] SingleUserPatch.x86=1 SingleUserOffset.x86=17FC4 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=712AA SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=179B8 DefPolicyCode.x86=CDefPolicy_Query_edx_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=65FF7 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.0.6002.23521] SingleUserPatch.x86=1 SingleUserOffset.x86=17FB4 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=71EAA SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=179CC DefPolicyCode.x86=CDefPolicy_Query_edx_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=669CB DefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp [6.1.7600.16385] SingleUserPatch.x86=1 SingleUserOffset.x86=19E25 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17D96 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=196F3 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17AD2 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7600.20890] SingleUserPatch.x86=1 SingleUserOffset.x86=19E2D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17DF2 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=196FB DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17B0E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7600.21316] SingleUserPatch.x86=1 SingleUserOffset.x86=19E2D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17E3E SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=196FB DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17B5E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.17514] SingleUserPatch.x86=1 SingleUserOffset.x86=1A49D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=180E2 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D53 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D8A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.18540] SingleUserPatch.x86=1 SingleUserOffset.x86=1A4E5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=18006 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D9F DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17C82 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.18637] SingleUserPatch.x86=1 SingleUserOffset.x86=1A4DD SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=180FA SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19DBB DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17DC6 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.21650] SingleUserPatch.x86=1 SingleUserOffset.x86=1A49D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=180BE SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D53 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D5A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.21866] SingleUserPatch.x86=1 SingleUserOffset.x86=1A49D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=180BE SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D53 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D5A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.22104] SingleUserPatch.x86=1 SingleUserOffset.x86=1A49D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=180C6 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19D53 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D5E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.22750] SingleUserPatch.x86=1 SingleUserOffset.x86=1A655 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17E8E SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19E21 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17C92 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.22843] SingleUserPatch.x86=1 SingleUserOffset.x86=1A655 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17F96 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19E25 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D6E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.23403] SingleUserPatch.x86=1 SingleUserOffset.x86=1A65D SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17F62 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19E29 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17CE2 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.1.7601.24234] SingleUserPatch.x86=1 SingleUserOffset.x86=1A675 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17F56 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=19E41 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=17D2E DefPolicyCode.x64=CDefPolicy_Query_eax_rdi [6.2.8102.0] SingleUserPatch.x86=1 SingleUserOffset.x86=F7E9 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=D840 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=E47C DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=D3E6 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi SLPolicyInternal.x86=1 SLPolicyOffset.x86=1B909 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=1A484 SLPolicyFunc.x64=New_Win8SL [6.2.8250.0] SingleUserPatch.x86=1 SingleUserOffset.x86=159C9 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=11E74 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=13520 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=1187A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi SLPolicyInternal.x86=1 SLPolicyOffset.x86=1A0A9 SLPolicyFunc.x86=New_Win8SL_CP SLPolicyInternal.x64=1 SLPolicyOffset.x64=18FAC SLPolicyFunc.x64=New_Win8SL [6.2.8400.0] SingleUserPatch.x86=1 SingleUserOffset.x86=15482 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=20824 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=13E48 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=1F102 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi SLPolicyInternal.x86=1 SLPolicyOffset.x86=19629 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=2492C SLPolicyFunc.x64=New_Win8SL [6.2.9200.16384] SingleUserPatch.x86=1 SingleUserOffset.x86=15552 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2BAA8 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=13F08 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=2A31A DefPolicyCode.x64=CDefPolicy_Query_eax_rdi SLPolicyInternal.x86=1 SLPolicyOffset.x86=19559 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=21FA8 SLPolicyFunc.x64=New_Win8SL [6.2.9200.17048] SingleUserPatch.x86=1 SingleUserOffset.x86=20592 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=20948 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=1F408 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=1F206 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi SLPolicyInternal.x86=1 SLPolicyOffset.x86=17059 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=24570 SLPolicyFunc.x64=New_Win8SL [6.2.9200.21166] SingleUserPatch.x86=1 SingleUserOffset.x86=1557A SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2BAF8 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=13F30 DefPolicyCode.x86=CDefPolicy_Query_eax_esi DefPolicyPatch.x64=1 DefPolicyOffset.x64=2A3B6 DefPolicyCode.x64=CDefPolicy_Query_eax_rdi SLPolicyInternal.x86=1 SLPolicyOffset.x86=19581 SLPolicyFunc.x86=New_Win8SL SLPolicyInternal.x64=1 SLPolicyOffset.x64=21FD0 SLPolicyFunc.x64=New_Win8SL [6.3.9431.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=8A611 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=9F721 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=306A8 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=367F9 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2EA25 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=350FD DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=196B0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2F9C0 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.16384] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A2729 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=81824 LocalOnlyCode.x64=nopjmp SingleUserPatch.x86=1 SingleUserOffset.x86=18028 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=20241 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=16115 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=57829 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=1CEB0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=554C0 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.17095] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A36D1 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=B9159 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36BA9 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=21829 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=37529 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1F6A1 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=117F1 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=3B110 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.17415] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B33F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B2D9 LocalOnlyCode.x64=nopjmp SingleUserPatch.x86=1 SingleUserOffset.x86=37115 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=33CE9 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3CFF9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=45825 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=18478 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5DBC0 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.18692] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B3458 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B2E9 LocalOnlyCode.x64=nopjmp SingleUserPatch.x86=1 SingleUserOffset.x86=37105 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=37039 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3CFE9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=45835 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=18488 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5DBD0 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.18708] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B35D8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B376 LocalOnlyCode.x64=nopjmp SingleUserPatch.x86=1 SingleUserOffset.x86=370F5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=36FE9 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3CFD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=457D5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=18308 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5DB70 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.18928] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B39D8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B25D LocalOnlyCode.x64=nopjmp SingleUserPatch.x86=1 SingleUserOffset.x86=37D25 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=36C09 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D6F9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=45495 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=18328 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5D830 SLInitFunc.x64=New_CSLQuery_Initialize [6.3.9600.19093] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B3958 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8AE4E LocalOnlyCode.x64=nopjmp SingleUserPatch.x86=1 SingleUserOffset.x86=3F045 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=36BC9 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D899 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=45305 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=18288 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=5D660 SLInitFunc.x64=New_CSLQuery_Initialize [6.4.9841.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=956A8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=81141 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=30125 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=12159 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3B989 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=C125 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46A68 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=1EA50 SLInitFunc.x64=New_CSLQuery_Initialize [6.4.9860.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=962C8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=81091 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=30845 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=11AA9 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3BEC9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=B9F5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46F18 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=1EB00 SLInitFunc.x64=New_CSLQuery_Initialize [6.4.9879.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9CC8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=95611 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=30C55 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=16A34 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2DAB9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1BDC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=41132 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=24750 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.9926.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8C28 LocalOnlyCode.x86=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=31725 SingleUserCode.x86=nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=3CF99 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx SLInitHook.x86=1 SLInitOffset.x86=3F140 SLInitFunc.x86=New_CSLQuery_Initialize LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=95FF1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x64=1 SingleUserOffset.x64=12A34 SingleUserCode.x64=Zero DefPolicyPatch.x64=1 DefPolicyOffset.x64=BE05 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x64=1 SLInitOffset.x64=24EC0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.10041.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9D88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=97141 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=32215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=15C64 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2DFC9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=B795 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46960 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E40 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.10240.16384] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7D38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=96901 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=32A95 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=18F74 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2F5B9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=22865 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46581 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=250F0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.10586.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7C18 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=96AA1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=353B5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=190D4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=30B69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=229A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=469DE SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=25220 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.10586.589] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7BE8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=96A51 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=353B5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=190D4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=30B69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=229A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=469DE SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=25220 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.11082.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7C98 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=96AB1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35405 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=190D4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=30BB9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=229A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46A3E SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=25220 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.11102.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D58 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=95CD1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35A85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2A9C4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=30159 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B5D5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=44FD2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D160 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14251.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D58 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=95CD1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35A85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2A9C4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=30159 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B5D5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=44FD2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D160 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14271.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4CE8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=941E1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35915 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=263F4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF79 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C185 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=47725 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CE50 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14279.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4D28 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=94191 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35915 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=263F4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF79 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C185 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=47725 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CE50 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14295.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4D28 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D691 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35925 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=25514 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1BA35 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=47748 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C860 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14300.1000] LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F5F1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x64=1 SingleUserOffset.x64=26B04 SingleUserCode.x64=Zero DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D125 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x64=1 SLInitOffset.x64=CC60 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14316.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F5F1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=32B55 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=26B04 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C1C9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46ABD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC60 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14328.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F5F1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=32B55 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=26B04 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C1C9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D365 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46ABD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC60 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14332.1001] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E98 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F601 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=357E5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2AE44 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=316A9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C025 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4755F SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CAD0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14342.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E98 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8EF31 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=357E5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=26774 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=316A9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1CEF5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4755F SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CA20 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14352.1002] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4478 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D911 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35465 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24474 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=30099 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AC05 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=44792 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CDB0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14366.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9088 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FB01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34F65 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=21DE4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=316E9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1A855 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4793E SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CCE0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14367.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9088 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FB01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34F65 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=21DE4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=316E9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1A855 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4793E SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CCE0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14372.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F931 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34635 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=295A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=460D2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC10 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14379.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F941 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34635 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=295A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=460D2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC10 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14383.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F941 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34635 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=295A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=460D2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC10 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14385.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F941 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34635 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=295A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B295 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=460D2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CC10 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14388.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6038 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D781 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14393.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6038 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D781 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14393.1198] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6088 LocalOnlyCode.x86=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize [10.0.14393.1737] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6198 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D861 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35AD5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=30039 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45724 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14393.2457] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6248 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D811 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36CE5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=29CF4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31209 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B545 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45824 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C920 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14901.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6038 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D781 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14905.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6038 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D781 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=359C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=299A4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF29 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AFC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45636 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C930 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14915.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6D98 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E241 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35E35 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=29EB4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=30399 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B4A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46092 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CE40 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14926.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A6D18 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E071 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35E55 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=29EB4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=303B9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1B4A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=460A2 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=CE40 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14931.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4908 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B411 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35705 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=29264 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FF69 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1AD05 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=452FD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C7FC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14936.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A3F38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8B9A1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35355 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=25174 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1BB55 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=44CFE SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=C62C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14942.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A3F38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=9115B LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35355 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=199BD SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1064E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=44CFE SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=258EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14946.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A4018 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=911AB LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35355 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=199AD SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1064E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=44CFD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=258DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14951.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A78D8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=94A6B LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=3BA85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1CEDD SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=32629 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=11E9E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=3F680 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22EE0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14955.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A78D8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=94A6B LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=3BA85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1CEDD SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=32629 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=11E9E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=3F680 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22EE0 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14959.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A79B8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=934AB LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=2EF05 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=16A0D SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2A4E9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10A8E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=448A0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=26960 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14965.1001] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7868 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=9345B LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=3BA85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17DFD SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=32A59 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1212E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=3F680 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=26610 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14971.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7968 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925FB LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36FE5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1803D SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D9A9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=11FBE DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46500 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=26180 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14986.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7878 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=926BB LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36FA5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=17FFD SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D979 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=11F7E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=464A0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=26140 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.14997.1001] LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=931EB LocalOnlyCode.x64=jmpshort SingleUserPatch.x64=1 SingleUserOffset.x64=274ED SingleUserCode.x64=Zero DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D95E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x64=1 SLInitOffset.x64=E000 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15002.1001] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9698 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=931EB LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=346B5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=274ED SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D779 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D95E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=47D90 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=E000 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15007.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9648 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=931EB LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34665 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=274ED SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D719 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D95E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=47D30 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=E000 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15014.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9648 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=931EB LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34685 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=274ED SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3D739 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1D95E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=47D50 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=E000 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15019.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A39F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=928FB LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=BADF5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=FBDD SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=A8479 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx_jmp DefPolicyPatch.x64=1 DefPolicyOffset.x64=20AAE DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=3C240 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=24480 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15025.1000] LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=9259B LocalOnlyCode.x64=jmpshort SingleUserPatch.x64=1 SingleUserOffset.x64=2C08D SingleUserCode.x64=Zero DefPolicyPatch.x64=1 DefPolicyOffset.x64=1DD0E DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x64=1 SLInitOffset.x64=E5B8 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15031.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5BA8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E221 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=30A75 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2A114 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2B1D9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C7B5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4532D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D80C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15042.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5BA8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E221 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=30A75 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=2A114 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2B1D9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1C7B5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4532D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D80C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15046.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=80BB8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E361 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=31E95 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=15E14 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=38A19 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=E745 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=9422D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=21FFC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15048.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=80BB8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E361 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=31E95 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=15E14 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=38A19 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=E745 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=9422D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=21FFC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15055.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5348 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8D2E1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=374C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=181E4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3BAD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10B65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=44EFF SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22AEC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15058.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CAA1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35075 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24E74 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=2DD65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4549D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D1EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15061.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CAA1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35075 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24E74 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=2DD65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4549D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D1EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15063.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CAA1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35075 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24E74 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=2DD65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4549D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D1EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15063.296] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A5D68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CAA1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=35075 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=24E74 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=2FCD9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=2DD65 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4549D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=D1EC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15063.994] LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CB01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x64=1 SingleUserOffset.x64=15EA4 SingleUserCode.x64=Zero DefPolicyPatch.x64=1 DefPolicyOffset.x64=FAE5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x64=1 SLInitOffset.x64=234DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.15063.1155] LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CB01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x64=1 SingleUserOffset.x64=15EA4 SingleUserCode.x64=Zero DefPolicyPatch.x64=1 DefPolicyOffset.x64=FAE5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x64=1 SLInitOffset.x64=234DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16179.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AA568 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8C141 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34425 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=16F84 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31219 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1E7F5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45F30 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=21700 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16184.1001] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AA568 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8C141 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=34425 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=16F84 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31219 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1E7F5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45F30 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=21700 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16199.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=ABA68 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8CED1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=348C5 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=28C14 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=319B9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=CB25 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=469B0 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=FA30 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16215.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7CE8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8DE21 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39F05 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=28724 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3E019 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=CC15 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=46462 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=FB00 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16232.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7D38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8DD41 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39F35 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=287B4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3E0C9 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=CC15 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4650F SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=FB00 SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16237.1001] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7F38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E911 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39F85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1BC84 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3E119 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=DA55 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4655D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2180C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16241.1001] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A7F38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E911 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39F85 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1BC84 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3E119 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=DA55 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4655D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2180C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16251.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=ABC88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8EC21 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=3A525 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1BCB4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31779 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=DAF5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=447FD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2183C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16251.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=ABC88 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8EC21 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=3A525 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1BCB4 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31779 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=DAF5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=447FD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2183C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16257.1] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB718 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E841 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=33925 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=11364 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C409 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1EFD5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4504D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2495C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16257.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB718 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E841 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=33925 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=11364 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C409 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1EFD5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4504D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2495C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16273.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB798 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8E871 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=33925 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=11364 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3C409 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1EFD5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4504D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2495C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16275.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9388 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=90001 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39435 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C724 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DE89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D75 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=463D4 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D0C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16278.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9388 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=90001 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39435 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C724 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DE89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D75 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=463D4 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D0C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16281.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16288.1] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16291.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16294.1] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16296.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16299.0] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16299.15] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E08 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FD01 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39215 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C774 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DC89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=461BD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D5C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16353.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A9388 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=90001 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=39435 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1C724 SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DE89 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D75 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=463D4 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D0C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.16362.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8E38 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FBA1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=2F61C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=19D1C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DE99 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=463D4 SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D9C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17004.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=A8EB8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8FB41 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=2F65C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=19D1C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=3DF09 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=12D85 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=4643F SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22D9C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17017.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB388 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F291 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=3477C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1977C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31049 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=125A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45CDD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=227DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17025.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB498 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F291 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=3477C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1977C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31049 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=125A5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45CDD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=227DC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17035.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB3F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F271 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=354AC SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=14E7C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31F19 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10CB5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45C4D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22AEC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17046.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AB3F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=8F281 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=354AC SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=14E8C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=31F19 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10CC5 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=45C4D SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22AFC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17063.1000] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD7F8 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=92671 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=153CC SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=111CE DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=2318C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17115.1] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD738 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1511C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17128.1] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD738 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1511C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17133.1] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD738 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1511C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17134.1] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AD738 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=925D1 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=36B0C SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1511C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=33569 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=10E78 DefPolicyCode.x64=CDefPolicy_Query_edi_rcx SLInitHook.x86=1 SLInitOffset.x86=474AD SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22E6C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17723.1000] LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=75D91 LocalOnlyCode.x64=jmpshort SingleUserPatch.x64=1 SingleUserOffset.x64=1296C SingleUserCode.x64=Zero DefPolicyPatch.x64=1 DefPolicyOffset.x64=17A45 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x64=1 SLInitOffset.x64=1B10C SLInitFunc.x64=New_CSLQuery_Initialize [10.0.17763.1] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=AF8E4 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=77941 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=4D505 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=1322C SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=4BD09 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=17F45 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=5B02A SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=1ABFC SLInitFunc.x64=New_CSLQuery_Initialize [SLInit] bServerSku=1 bRemoteConnAllowed=1 bFUSEnabled=1 bAppServerAllowed=1 bMultimonAllowed=1 lMaxUserSessions=0 ulMaxDebugSessions=0 bInitialized=1 [6.3.9431.0-SLInit] bFUSEnabled.x86 =A22A8 lMaxUserSessions.x86 =A22AC bAppServerAllowed.x86 =A22B0 bInitialized.x86 =A22B4 bMultimonAllowed.x86 =A22B8 bServerSku.x86 =A22BC ulMaxDebugSessions.x86=A22C0 bRemoteConnAllowed.x86=A22C4 bFUSEnabled.x64 =C4490 lMaxUserSessions.x64 =C4494 bAppServerAllowed.x64 =C4498 bInitialized.x64 =C449C bMultimonAllowed.x64 =C44A0 bServerSku.x64 =C44A4 ulMaxDebugSessions.x64=C44A8 bRemoteConnAllowed.x64=C44AC [6.3.9600.16384-SLInit] bFUSEnabled.x86 =C02A8 lMaxUserSessions.x86 =C02AC bAppServerAllowed.x86 =C02B0 bInitialized.x86 =C02B4 bMultimonAllowed.x86 =C02B8 bServerSku.x86 =C02BC ulMaxDebugSessions.x86=C02C0 bRemoteConnAllowed.x86=C02C4 bServerSku.x64 =E6494 ulMaxDebugSessions.x64=E6498 bRemoteConnAllowed.x64=E649C bFUSEnabled.x64 =E64A0 lMaxUserSessions.x64 =E64A4 bAppServerAllowed.x64 =E64A8 bInitialized.x64 =E64AC bMultimonAllowed.x64 =E64B0 [6.3.9600.17095-SLInit] bFUSEnabled.x86 =C12A8 lMaxUserSessions.x86 =C12AC bAppServerAllowed.x86 =C12B0 bInitialized.x86 =C12B4 bMultimonAllowed.x86 =C12B8 bServerSku.x86 =C12BC ulMaxDebugSessions.x86=C12C0 bRemoteConnAllowed.x86=C12C4 bServerSku.x64 =E4494 ulMaxDebugSessions.x64=E4498 bRemoteConnAllowed.x64=E449C bFUSEnabled.x64 =E44A0 lMaxUserSessions.x64 =E44A4 bAppServerAllowed.x64 =E44A8 bInitialized.x64 =E44AC bMultimonAllowed.x64 =E44B0 [6.3.9600.17415-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =F9054 lMaxUserSessions.x64 =F9058 bAppServerAllowed.x64 =F905C bInitialized.x64 =F9060 bMultimonAllowed.x64 =F9064 bServerSku.x64 =F9068 ulMaxDebugSessions.x64=F906C bRemoteConnAllowed.x64=F9070 [6.3.9600.18692-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =F9054 lMaxUserSessions.x64 =F9058 bAppServerAllowed.x64 =F905C bInitialized.x64 =F9060 bMultimonAllowed.x64 =F9064 bServerSku.x64 =F9068 ulMaxDebugSessions.x64=F906C bRemoteConnAllowed.x64=F9070 [6.3.9600.18708-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =FA054 lMaxUserSessions.x64 =FA058 bAppServerAllowed.x64 =FA05C bInitialized.x64 =FA060 bMultimonAllowed.x64 =FA064 bServerSku.x64 =FA068 ulMaxDebugSessions.x64=FA06C bRemoteConnAllowed.x64=FA070 [6.3.9600.18928-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =FA054 lMaxUserSessions.x64 =FA058 bAppServerAllowed.x64 =FA05C bInitialized.x64 =FA060 bMultimonAllowed.x64 =FA064 bServerSku.x64 =FA068 ulMaxDebugSessions.x64=FA06C bRemoteConnAllowed.x64=FA070 [6.3.9600.19093-SLInit] bFUSEnabled.x86 =D3068 lMaxUserSessions.x86 =D306C bAppServerAllowed.x86 =D3070 bInitialized.x86 =D3074 bMultimonAllowed.x86 =D3078 bServerSku.x86 =D307C ulMaxDebugSessions.x86=D3080 bRemoteConnAllowed.x86=D3084 bFUSEnabled.x64 =FA054 lMaxUserSessions.x64 =FA058 bAppServerAllowed.x64 =FA05C bInitialized.x64 =FA060 bMultimonAllowed.x64 =FA064 bServerSku.x64 =FA068 ulMaxDebugSessions.x64=FA06C bRemoteConnAllowed.x64=FA070 [6.4.9841.0-SLInit] bFUSEnabled.x86 =BF9F0 lMaxUserSessions.x86 =BF9F4 bAppServerAllowed.x86 =BF9F8 bInitialized.x86 =BF9FC bMultimonAllowed.x86 =BFA00 bServerSku.x86 =BFA04 ulMaxDebugSessions.x86=BFA08 bRemoteConnAllowed.x86=BFA0C bFUSEnabled.x64 =ECFF8 lMaxUserSessions.x64 =ECFFC bAppServerAllowed.x64 =ED000 bInitialized.x64 =ED004 bMultimonAllowed.x64 =ED008 bServerSku.x64 =ED00C ulMaxDebugSessions.x64=ED010 bRemoteConnAllowed.x64=ED014 [6.4.9860.0-SLInit] bFUSEnabled.x86 =BF7E0 lMaxUserSessions.x86 =BF7E4 bAppServerAllowed.x86 =BF7E8 bInitialized.x86 =BF7EC bMultimonAllowed.x86 =BF7F0 bServerSku.x86 =BF7F4 ulMaxDebugSessions.x86=BF7F8 bRemoteConnAllowed.x86=BF7FC bFUSEnabled.x64 =ECBD8 lMaxUserSessions.x64 =ECBDC bAppServerAllowed.x64 =ECBE0 bInitialized.x64 =ECBE4 bMultimonAllowed.x64 =ECBE8 bServerSku.x64 =ECBEC ulMaxDebugSessions.x64=ECBF0 bRemoteConnAllowed.x64=ECBF4 [6.4.9879.0-SLInit] bFUSEnabled.x86 =C27D8 lMaxUserSessions.x86 =C27DC bAppServerAllowed.x86 =C27E0 bInitialized.x86 =C27E4 bMultimonAllowed.x86 =C27E8 bServerSku.x86 =C27EC ulMaxDebugSessions.x86=C27F0 bRemoteConnAllowed.x86=C27F4 bFUSEnabled.x64 =EDBF0 lMaxUserSessions.x64 =EDBF4 bAppServerAllowed.x64 =EDBF8 bInitialized.x64 =EDBFC bMultimonAllowed.x64 =EDC00 bServerSku.x64 =EDC04 ulMaxDebugSessions.x64=EDC08 bRemoteConnAllowed.x64=EDC0C [10.0.9926.0-SLInit] bFUSEnabled.x86 =C17D8 lMaxUserSessions.x86 =C17DC bAppServerAllowed.x86 =C17E0 bInitialized.x86 =C17E4 bMultimonAllowed.x86 =C17E8 bServerSku.x86 =C17EC ulMaxDebugSessions.x86=C17F0 bRemoteConnAllowed.x86=C17F4 bFUSEnabled.x64 =EEBF0 lMaxUserSessions.x64 =EEBF4 bAppServerAllowed.x64 =EEBF8 bInitialized.x64 =EEBFC bMultimonAllowed.x64 =EEC00 bServerSku.x64 =EEC04 ulMaxDebugSessions.x64=EEC08 bRemoteConnAllowed.x64=EEC0C [10.0.10041.0-SLInit] bFUSEnabled.x86 =C5F60 lMaxUserSessions.x86 =C5F64 bAppServerAllowed.x86 =C5F68 bInitialized.x86 =C5F6C bMultimonAllowed.x86 =C5F70 bServerSku.x86 =C5F74 ulMaxDebugSessions.x86=C5F78 bRemoteConnAllowed.x86=C5F7C bFUSEnabled.x64 =F3448 lMaxUserSessions.x64 =F344C bAppServerAllowed.x64 =F3450 bInitialized.x64 =F3454 bMultimonAllowed.x64 =F3458 bServerSku.x64 =F345C ulMaxDebugSessions.x64=F3460 bRemoteConnAllowed.x64=F3464 [10.0.10240.16384-SLInit] bFUSEnabled.x86 =C3F60 lMaxUserSessions.x86 =C3F64 bAppServerAllowed.x86 =C3F68 bInitialized.x86 =C3F6C bMultimonAllowed.x86 =C3F70 bServerSku.x86 =C3F74 ulMaxDebugSessions.x86=C3F78 bRemoteConnAllowed.x86=C3F7C lMaxUserSessions.x64 =F23B0 bAppServerAllowed.x64 =F23B4 bServerSku.x64 =F23B8 bFUSEnabled.x64 =F3460 bInitialized.x64 =F3464 bMultimonAllowed.x64 =F3468 ulMaxDebugSessions.x64=F346C bRemoteConnAllowed.x64=F3470 [10.0.10586.0-SLInit] bFUSEnabled.x86 =C3F60 lMaxUserSessions.x86 =C3F64 bAppServerAllowed.x86 =C3F68 bInitialized.x86 =C3F6C bMultimonAllowed.x86 =C3F70 bServerSku.x86 =C3F74 ulMaxDebugSessions.x86=C3F78 bRemoteConnAllowed.x86=C3F7C lMaxUserSessions.x64 =F23B0 bAppServerAllowed.x64 =F23B4 bServerSku.x64 =F23B8 bFUSEnabled.x64 =F3460 bInitialized.x64 =F3464 bMultimonAllowed.x64 =F3468 ulMaxDebugSessions.x64=F346C bRemoteConnAllowed.x64=F3470 [10.0.10586.589-SLInit] bFUSEnabled.x86 =C3F60 lMaxUserSessions.x86 =C3F64 bAppServerAllowed.x86 =C3F68 bInitialized.x86 =C3F6C bMultimonAllowed.x86 =C3F70 bServerSku.x86 =C3F74 ulMaxDebugSessions.x86=C3F78 bRemoteConnAllowed.x86=C3F7C lMaxUserSessions.x64 =F23B0 bAppServerAllowed.x64 =F23B4 bServerSku.x64 =F23B8 bFUSEnabled.x64 =F3460 bInitialized.x64 =F3464 bMultimonAllowed.x64 =F3468 ulMaxDebugSessions.x64=F346C bRemoteConnAllowed.x64=F3470 [10.0.11082.1000-SLInit] bFUSEnabled.x86 =C3F60 lMaxUserSessions.x86 =C3F64 bAppServerAllowed.x86 =C3F68 bInitialized.x86 =C3F6C bMultimonAllowed.x86 =C3F70 bServerSku.x86 =C3F74 ulMaxDebugSessions.x86=C3F78 bRemoteConnAllowed.x86=C3F7C lMaxUserSessions.x64 =F23B0 bAppServerAllowed.x64 =F23B4 bServerSku.x64 =F23B8 bFUSEnabled.x64 =F3460 bInitialized.x64 =F3464 bMultimonAllowed.x64 =F3468 ulMaxDebugSessions.x64=F346C bRemoteConnAllowed.x64=F3470 [10.0.11102.1000-SLInit] bInitialized.x86 =C1F5C bServerSku.x86 =C1F60 lMaxUserSessions.x86 =C1F64 bAppServerAllowed.x86 =C1F68 bRemoteConnAllowed.x86=C1F6C bMultimonAllowed.x86 =C1F70 ulMaxDebugSessions.x86=C1F74 bFUSEnabled.x86 =C1F78 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 bServerSku.x64 =F244C lMaxUserSessions.x64 =F2450 bAppServerAllowed.x64 =F2454 [10.0.14251.1000-SLInit] bInitialized.x86 =C1F5C bServerSku.x86 =C1F60 lMaxUserSessions.x86 =C1F64 bAppServerAllowed.x86 =C1F68 bRemoteConnAllowed.x86=C1F6C bMultimonAllowed.x86 =C1F70 ulMaxDebugSessions.x86=C1F74 bFUSEnabled.x86 =C1F78 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 bServerSku.x64 =F244C lMaxUserSessions.x64 =F2450 bAppServerAllowed.x64 =F2454 [10.0.14271.1000-SLInit] bInitialized.x86 =C0F5C bServerSku.x86 =C0F60 lMaxUserSessions.x86 =C0F64 bAppServerAllowed.x86 =C0F68 bRemoteConnAllowed.x86=C0F6C bMultimonAllowed.x86 =C0F70 ulMaxDebugSessions.x86=C0F74 bFUSEnabled.x86 =C0F78 bServerSku.x64 =EF3C0 lMaxUserSessions.x64 =EF3C4 bAppServerAllowed.x64 =EF3C8 bInitialized.x64 =F0460 bRemoteConnAllowed.x64=F0464 bMultimonAllowed.x64 =F0468 ulMaxDebugSessions.x64=F046C bFUSEnabled.x64 =F0470 [10.0.14279.1000-SLInit] bInitialized.x86 =C0F5C bServerSku.x86 =C0F60 lMaxUserSessions.x86 =C0F64 bAppServerAllowed.x86 =C0F68 bRemoteConnAllowed.x86=C0F6C bMultimonAllowed.x86 =C0F70 ulMaxDebugSessions.x86=C0F74 bFUSEnabled.x86 =C0F78 bServerSku.x64 =EF3C0 lMaxUserSessions.x64 =EF3C4 bAppServerAllowed.x64 =EF3C8 bInitialized.x64 =F0460 bRemoteConnAllowed.x64=F0464 bMultimonAllowed.x64 =F0468 ulMaxDebugSessions.x64=F046C bFUSEnabled.x64 =F0470 [10.0.14295.1000-SLInit] bInitialized.x86 =C0F5C bServerSku.x86 =C0F60 lMaxUserSessions.x86 =C0F64 bAppServerAllowed.x86 =C0F68 bRemoteConnAllowed.x86=C0F6C bMultimonAllowed.x86 =C0F70 ulMaxDebugSessions.x86=C0F74 bFUSEnabled.x86 =C0F78 bServerSku.x64 =E73C0 lMaxUserSessions.x64 =E73C4 bAppServerAllowed.x64 =E73C8 bInitialized.x64 =E8460 bRemoteConnAllowed.x64=E8464 bMultimonAllowed.x64 =E8468 ulMaxDebugSessions.x64=E846C bFUSEnabled.x64 =E8470 [10.0.14300.1000-SLInit] bServerSku.x64 =E93C0 lMaxUserSessions.x64 =E93C4 bAppServerAllowed.x64 =E93C8 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 [10.0.14316.1000-SLInit] bInitialized.x86 =C4F58 bServerSku.x86 =C4F5C lMaxUserSessions.x86 =C4F60 bAppServerAllowed.x86 =C4F64 bRemoteConnAllowed.x86=C4F68 bMultimonAllowed.x86 =C4F6C ulMaxDebugSessions.x86=C4F70 bFUSEnabled.x86 =C4F74 bServerSku.x64 =E93C0 lMaxUserSessions.x64 =E93C4 bAppServerAllowed.x64 =E93C8 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 [10.0.14328.1000-SLInit] bInitialized.x86 =C4F58 bServerSku.x86 =C4F5C lMaxUserSessions.x86 =C4F60 bAppServerAllowed.x86 =C4F64 bRemoteConnAllowed.x86=C4F68 bMultimonAllowed.x86 =C4F6C ulMaxDebugSessions.x86=C4F70 bFUSEnabled.x86 =C4F74 bServerSku.x64 =E93C0 lMaxUserSessions.x64 =E93C4 bAppServerAllowed.x64 =E93C8 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 [10.0.14332.1001-SLInit] bInitialized.x86 =C4F58 bServerSku.x86 =C4F5C lMaxUserSessions.x86 =C4F60 bAppServerAllowed.x86 =C4F64 bRemoteConnAllowed.x86=C4F68 bMultimonAllowed.x86 =C4F6C ulMaxDebugSessions.x86=C4F70 bFUSEnabled.x86 =C4F74 bServerSku.x64 =E93C0 lMaxUserSessions.x64 =E93C4 bAppServerAllowed.x64 =E93C8 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 [10.0.14342.1000-SLInit] bInitialized.x86 =C4F58 bServerSku.x86 =C4F5C lMaxUserSessions.x86 =C4F60 bAppServerAllowed.x86 =C4F64 bRemoteConnAllowed.x86=C4F68 bMultimonAllowed.x86 =C4F6C ulMaxDebugSessions.x86=C4F70 bFUSEnabled.x86 =C4F74 bInitialized.x64 =E9430 bRemoteConnAllowed.x64=E9434 bMultimonAllowed.x64 =E9438 ulMaxDebugSessions.x64=E943C bFUSEnabled.x64 =E9440 bServerSku.x64 =E944C lMaxUserSessions.x64 =E9450 bAppServerAllowed.x64 =E9454 [10.0.14352.1002-SLInit] bInitialized.x86 =C0F5C bServerSku.x86 =C0F60 lMaxUserSessions.x86 =C0F64 bAppServerAllowed.x86 =C0F68 bRemoteConnAllowed.x86=C0F6C bMultimonAllowed.x86 =C0F70 ulMaxDebugSessions.x86=C0F74 bFUSEnabled.x86 =C0F78 bServerSku.x64 =E73C0 lMaxUserSessions.x64 =E73C4 bAppServerAllowed.x64 =E73C8 bInitialized.x64 =E8460 bRemoteConnAllowed.x64=E8464 bMultimonAllowed.x64 =E8468 ulMaxDebugSessions.x64=E846C bFUSEnabled.x64 =E8470 [10.0.14366.0-SLInit] bInitialized.x86 =C4F68 bServerSku.x86 =C4F6C lMaxUserSessions.x86 =C4F70 bAppServerAllowed.x86 =C4F74 bRemoteConnAllowed.x86=C4F78 bMultimonAllowed.x86 =C4F7C ulMaxDebugSessions.x86=C4F80 bFUSEnabled.x86 =C4F84 bServerSku.x64 =E93E0 lMaxUserSessions.x64 =E93E4 bAppServerAllowed.x64 =E93E8 bInitialized.x64 =EA480 bRemoteConnAllowed.x64=EA484 bMultimonAllowed.x64 =EA488 ulMaxDebugSessions.x64=EA48C bFUSEnabled.x64 =EA490 [10.0.14367.0-SLInit] bInitialized.x86 =C4F68 bServerSku.x86 =C4F6C lMaxUserSessions.x86 =C4F70 bAppServerAllowed.x86 =C4F74 bRemoteConnAllowed.x86=C4F78 bMultimonAllowed.x86 =C4F7C ulMaxDebugSessions.x86=C4F80 bFUSEnabled.x86 =C4F84 bServerSku.x64 =E93E0 lMaxUserSessions.x64 =E93E4 bAppServerAllowed.x64 =E93E8 bInitialized.x64 =EA480 bRemoteConnAllowed.x64=EA484 bMultimonAllowed.x64 =EA488 ulMaxDebugSessions.x64=EA48C bFUSEnabled.x64 =EA490 [10.0.14372.0-SLInit] bInitialized.x86 =C3F68 bServerSku.x86 =C3F6C lMaxUserSessions.x86 =C3F70 bAppServerAllowed.x86 =C3F74 bRemoteConnAllowed.x86=C3F78 bMultimonAllowed.x86 =C3F7C ulMaxDebugSessions.x86=C3F80 bFUSEnabled.x86 =C3F84 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 bServerSku.x64 =EA47C lMaxUserSessions.x64 =EA480 bAppServerAllowed.x64 =EA484 [10.0.14379.0-SLInit] bInitialized.x86 =C3F68 bServerSku.x86 =C3F6C lMaxUserSessions.x86 =C3F70 bAppServerAllowed.x86 =C3F74 bRemoteConnAllowed.x86=C3F78 bMultimonAllowed.x86 =C3F7C ulMaxDebugSessions.x86=C3F80 bFUSEnabled.x86 =C3F84 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 bServerSku.x64 =EA47C lMaxUserSessions.x64 =EA480 bAppServerAllowed.x64 =EA484 [10.0.14383.0-SLInit] bInitialized.x86 =C3F68 bServerSku.x86 =C3F6C lMaxUserSessions.x86 =C3F70 bAppServerAllowed.x86 =C3F74 bRemoteConnAllowed.x86=C3F78 bMultimonAllowed.x86 =C3F7C ulMaxDebugSessions.x86=C3F80 bFUSEnabled.x86 =C3F84 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 bServerSku.x64 =EA47C lMaxUserSessions.x64 =EA480 bAppServerAllowed.x64 =EA484 [10.0.14385.0-SLInit] bInitialized.x86 =C3F68 bServerSku.x86 =C3F6C lMaxUserSessions.x86 =C3F70 bAppServerAllowed.x86 =C3F74 bRemoteConnAllowed.x86=C3F78 bMultimonAllowed.x86 =C3F7C ulMaxDebugSessions.x86=C3F80 bFUSEnabled.x86 =C3F84 bInitialized.x64 =EA460 bRemoteConnAllowed.x64=EA464 bMultimonAllowed.x64 =EA468 ulMaxDebugSessions.x64=EA46C bFUSEnabled.x64 =EA470 bServerSku.x64 =EA47C lMaxUserSessions.x64 =EA480 bAppServerAllowed.x64 =EA484 [10.0.14388.0-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14393.0-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14393.1198-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 [10.0.14393.1737-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14393.2457-SLInit] bInitialized.x86 =C1F94 bServerSku.x86 =C1F98 lMaxUserSessions.x86 =C1F9C bAppServerAllowed.x86 =C1FA0 bRemoteConnAllowed.x86=C1FA4 bMultimonAllowed.x86 =C1FA8 ulMaxDebugSessions.x86=C1FAC bFUSEnabled.x86 =C1FB0 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14901.1000-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14905.1000-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E73D0 lMaxUserSessions.x64 =E73D4 bAppServerAllowed.x64 =E73D8 bInitialized.x64 =E8470 bRemoteConnAllowed.x64=E8474 bMultimonAllowed.x64 =E8478 ulMaxDebugSessions.x64=E847C bFUSEnabled.x64 =E8480 [10.0.14915.1000-SLInit] bInitialized.x86 =C4F6C bServerSku.x86 =C4F70 lMaxUserSessions.x86 =C4F74 bAppServerAllowed.x86 =C4F78 bRemoteConnAllowed.x86=C4F7C bMultimonAllowed.x86 =C4F80 ulMaxDebugSessions.x86=C4F84 bFUSEnabled.x86 =C4F88 bServerSku.x64 =E93D0 lMaxUserSessions.x64 =E93D4 bAppServerAllowed.x64 =E93D8 bInitialized.x64 =EA470 bRemoteConnAllowed.x64=EA474 bMultimonAllowed.x64 =EA478 ulMaxDebugSessions.x64=EA47C bFUSEnabled.x64 =EA480 [10.0.14926.1000-SLInit] bInitialized.x86 =C4F6C bServerSku.x86 =C4F70 lMaxUserSessions.x86 =C4F74 bAppServerAllowed.x86 =C4F78 bRemoteConnAllowed.x86=C4F7C bMultimonAllowed.x86 =C4F80 ulMaxDebugSessions.x86=C4F84 bFUSEnabled.x86 =C4F88 bServerSku.x64 =E93D0 lMaxUserSessions.x64 =E93D4 bAppServerAllowed.x64 =E93D8 bInitialized.x64 =EA470 bRemoteConnAllowed.x64=EA474 bMultimonAllowed.x64 =EA478 ulMaxDebugSessions.x64=EA47C bFUSEnabled.x64 =EA480 [10.0.14931.1000-SLInit] bInitialized.x86 =C1F6C bServerSku.x86 =C1F70 lMaxUserSessions.x86 =C1F74 bAppServerAllowed.x86 =C1F78 bRemoteConnAllowed.x86=C1F7C bMultimonAllowed.x86 =C1F80 ulMaxDebugSessions.x86=C1F84 bFUSEnabled.x86 =C1F88 bServerSku.x64 =E63D0 lMaxUserSessions.x64 =E63D4 bAppServerAllowed.x64 =E63D8 bInitialized.x64 =E7470 bRemoteConnAllowed.x64=E7474 bMultimonAllowed.x64 =E7478 ulMaxDebugSessions.x64=E747C bFUSEnabled.x64 =E7480 [10.0.14936.1000-SLInit] bInitialized.x86 =C0F6C bServerSku.x86 =C0F70 lMaxUserSessions.x86 =C0F74 bAppServerAllowed.x86 =C0F78 bRemoteConnAllowed.x86=C0F7C bMultimonAllowed.x86 =C0F80 ulMaxDebugSessions.x86=C0F84 bFUSEnabled.x86 =C0F88 bInitialized.x64 =E8460 bRemoteConnAllowed.x64=E8464 bMultimonAllowed.x64 =E8468 ulMaxDebugSessions.x64=E846C bFUSEnabled.x64 =E8470 bServerSku.x64 =E847C lMaxUserSessions.x64 =E8480 bAppServerAllowed.x64 =E8484 [10.0.14942.1000-SLInit] bInitialized.x86 =C0F6C bServerSku.x86 =C0F70 lMaxUserSessions.x86 =C0F74 bAppServerAllowed.x86 =C0F78 bRemoteConnAllowed.x86=C0F7C bMultimonAllowed.x86 =C0F80 ulMaxDebugSessions.x86=C0F84 bFUSEnabled.x86 =C0F88 bInitialized.x64 =EC460 bRemoteConnAllowed.x64=EC464 bMultimonAllowed.x64 =EC468 ulMaxDebugSessions.x64=EC46C bFUSEnabled.x64 =EC470 bServerSku.x64 =EC47C lMaxUserSessions.x64 =EC480 bAppServerAllowed.x64 =EC484 [10.0.14946.1000-SLInit] bInitialized.x86 =C0F6C bServerSku.x86 =C0F70 lMaxUserSessions.x86 =C0F74 bAppServerAllowed.x86 =C0F78 bRemoteConnAllowed.x86=C0F7C bMultimonAllowed.x86 =C0F80 ulMaxDebugSessions.x86=C0F84 bFUSEnabled.x86 =C0F88 bInitialized.x64 =EC460 bRemoteConnAllowed.x64=EC464 bMultimonAllowed.x64 =EC468 ulMaxDebugSessions.x64=EC46C bFUSEnabled.x64 =EC470 bServerSku.x64 =EC47C lMaxUserSessions.x64 =EC480 bAppServerAllowed.x64 =EC484 [10.0.14951.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =EF3D0 lMaxUserSessions.x64 =EF3D4 bAppServerAllowed.x64 =EF3D8 bInitialized.x64 =F0470 bRemoteConnAllowed.x64=F0474 bMultimonAllowed.x64 =F0478 ulMaxDebugSessions.x64=F047C bFUSEnabled.x64 =F0480 [10.0.14955.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =EF3D0 lMaxUserSessions.x64 =EF3D4 bAppServerAllowed.x64 =EF3D8 bInitialized.x64 =F0470 bRemoteConnAllowed.x64=F0474 bMultimonAllowed.x64 =F0478 ulMaxDebugSessions.x64=F047C bFUSEnabled.x64 =F0480 [10.0.14959.1000-SLInit] bInitialized.x86 =C4F68 bServerSku.x86 =C4F6C lMaxUserSessions.x86 =C4F70 bAppServerAllowed.x86 =C4F74 bRemoteConnAllowed.x86=C4F78 bMultimonAllowed.x86 =C4F7C ulMaxDebugSessions.x86=C4F80 bFUSEnabled.x86 =C4F84 bServerSku.x64 =EE3D0 lMaxUserSessions.x64 =EE3D4 bAppServerAllowed.x64 =EE3D8 bInitialized.x64 =EF470 bRemoteConnAllowed.x64=EF474 bMultimonAllowed.x64 =EF478 ulMaxDebugSessions.x64=EF47C bFUSEnabled.x64 =EF480 [10.0.14965.1001-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bInitialized.x64 =EF460 bRemoteConnAllowed.x64=EF464 bMultimonAllowed.x64 =EF468 ulMaxDebugSessions.x64=EF46C bFUSEnabled.x64 =EF470 bServerSku.x64 =EF47C lMaxUserSessions.x64 =EF480 bAppServerAllowed.x64 =EF484 [10.0.14971.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =EE3C0 lMaxUserSessions.x64 =EE3C4 bAppServerAllowed.x64 =EE3C8 bInitialized.x64 =EE470 bRemoteConnAllowed.x64=EE474 bMultimonAllowed.x64 =EE478 ulMaxDebugSessions.x64=EE47C bFUSEnabled.x64 =EE480 [10.0.14986.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =EE3C0 lMaxUserSessions.x64 =EE3C4 bAppServerAllowed.x64 =EE3C8 bInitialized.x64 =EE470 bRemoteConnAllowed.x64=EE474 bMultimonAllowed.x64 =EE478 ulMaxDebugSessions.x64=EE47C bFUSEnabled.x64 =EE480 [10.0.14997.1001-SLInit] bServerSku.x64 =F0408 lMaxUserSessions.x64 =F040C bAppServerAllowed.x64 =F0410 bInitialized.x64 =F0480 bRemoteConnAllowed.x64=F0484 bMultimonAllowed.x64 =F0488 ulMaxDebugSessions.x64=F048C bFUSEnabled.x64 =F0490 [10.0.15002.1001-SLInit] bInitialized.x86 =C6F74 bServerSku.x86 =C6F78 lMaxUserSessions.x86 =C6F7C bAppServerAllowed.x86 =C6F80 bRemoteConnAllowed.x86=C6F84 bMultimonAllowed.x86 =C6F88 ulMaxDebugSessions.x86=C6F8C bFUSEnabled.x86 =C6F90 bServerSku.x64 =F0408 lMaxUserSessions.x64 =F040C bAppServerAllowed.x64 =F0410 bInitialized.x64 =F0480 bRemoteConnAllowed.x64=F0484 bMultimonAllowed.x64 =F0488 ulMaxDebugSessions.x64=F048C bFUSEnabled.x64 =F0490 [10.0.15007.1000-SLInit] bInitialized.x86 =C6F74 bServerSku.x86 =C6F78 lMaxUserSessions.x86 =C6F7C bAppServerAllowed.x86 =C6F80 bRemoteConnAllowed.x86=C6F84 bMultimonAllowed.x86 =C6F88 ulMaxDebugSessions.x86=C6F8C bFUSEnabled.x86 =C6F90 bServerSku.x64 =F0408 lMaxUserSessions.x64 =F040C bAppServerAllowed.x64 =F0410 bInitialized.x64 =F0480 bRemoteConnAllowed.x64=F0484 bMultimonAllowed.x64 =F0488 ulMaxDebugSessions.x64=F048C bFUSEnabled.x64 =F0490 [10.0.15014.1000-SLInit] bInitialized.x86 =C6F74 bServerSku.x86 =C6F78 lMaxUserSessions.x86 =C6F7C bAppServerAllowed.x86 =C6F80 bRemoteConnAllowed.x86=C6F84 bMultimonAllowed.x86 =C6F88 ulMaxDebugSessions.x86=C6F8C bFUSEnabled.x86 =C6F90 bServerSku.x64 =F0408 lMaxUserSessions.x64 =F040C bAppServerAllowed.x64 =F0410 bInitialized.x64 =F0480 bRemoteConnAllowed.x64=F0484 bMultimonAllowed.x64 =F0488 ulMaxDebugSessions.x64=F048C bFUSEnabled.x64 =F0490 [10.0.15019.1000-SLInit] bInitialized.x86 =C5F68 bServerSku.x86 =C5F6C lMaxUserSessions.x86 =C5F70 bAppServerAllowed.x86 =C5F74 bRemoteConnAllowed.x86=C5F78 bMultimonAllowed.x86 =C5F7C ulMaxDebugSessions.x86=C5F80 bFUSEnabled.x86 =C5F84 bServerSku.x64 =ECBDC lMaxUserSessions.x64 =ECBE0 bAppServerAllowed.x64 =ECBE4 bInitialized.x64 =F0490 bRemoteConnAllowed.x64=F0494 bMultimonAllowed.x64 =F0498 ulMaxDebugSessions.x64=F049C bFUSEnabled.x64 =F04A0 [10.0.15025.1000-SLInit] bServerSku.x64 =EE3E0 lMaxUserSessions.x64 =EE3E4 bAppServerAllowed.x64 =EE3E8 bInitialized.x64 =EF488 bRemoteConnAllowed.x64=EF48C bMultimonAllowed.x64 =EF490 ulMaxDebugSessions.x64=EF494 bFUSEnabled.x64 =EF498 [10.0.15031.0-SLInit] bInitialized.x86 =C2F6C bServerSku.x86 =C2F70 lMaxUserSessions.x86 =C2F74 bAppServerAllowed.x86 =C2F78 bRemoteConnAllowed.x86=C2F7C bMultimonAllowed.x86 =C2F80 ulMaxDebugSessions.x86=C2F84 bFUSEnabled.x86 =C2F88 bServerSku.x64 =E93E0 lMaxUserSessions.x64 =E93E4 bAppServerAllowed.x64 =E93E8 bInitialized.x64 =EA488 bRemoteConnAllowed.x64=EA48C bMultimonAllowed.x64 =EA490 ulMaxDebugSessions.x64=EA494 bFUSEnabled.x64 =EA498 [10.0.15042.0-SLInit] bInitialized.x86 =C2F6C bServerSku.x86 =C2F70 lMaxUserSessions.x86 =C2F74 bAppServerAllowed.x86 =C2F78 bRemoteConnAllowed.x86=C2F7C bMultimonAllowed.x86 =C2F80 ulMaxDebugSessions.x86=C2F84 bFUSEnabled.x86 =C2F88 bServerSku.x64 =E93E0 lMaxUserSessions.x64 =E93E4 bAppServerAllowed.x64 =E93E8 bInitialized.x64 =EA488 bRemoteConnAllowed.x64=EA48C bMultimonAllowed.x64 =EA490 ulMaxDebugSessions.x64=EA494 bFUSEnabled.x64 =EA498 [10.0.15046.0-SLInit] bInitialized.x86 =C4F18 bServerSku.x86 =C4F1C lMaxUserSessions.x86 =C4F20 bAppServerAllowed.x86 =C4F24 bRemoteConnAllowed.x86=C4F28 ulMaxDebugSessions.x86=C4F2C bMultimonAllowed.x86 =C5010 bFUSEnabled.x86 =C5014 bInitialized.x64 =EB468 bRemoteConnAllowed.x64=EB46C bMultimonAllowed.x64 =EB470 ulMaxDebugSessions.x64=EB474 bFUSEnabled.x64 =EB478 bServerSku.x64 =EB484 lMaxUserSessions.x64 =EB488 bAppServerAllowed.x64 =EB48C [10.0.15048.0-SLInit] bInitialized.x86 =C4F18 bServerSku.x86 =C4F1C lMaxUserSessions.x86 =C4F20 bAppServerAllowed.x86 =C4F24 bRemoteConnAllowed.x86=C4F28 ulMaxDebugSessions.x86=C4F2C bMultimonAllowed.x86 =C5010 bFUSEnabled.x86 =C5014 bInitialized.x64 =EB468 bRemoteConnAllowed.x64=EB46C bMultimonAllowed.x64 =EB470 ulMaxDebugSessions.x64=EB474 bFUSEnabled.x64 =EB478 bServerSku.x64 =EB484 lMaxUserSessions.x64 =EB488 bAppServerAllowed.x64 =EB48C [10.0.15055.0-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bServerSku.x64 =E83D8 lMaxUserSessions.x64 =E83DC bAppServerAllowed.x64 =E83E0 bInitialized.x64 =E9490 bRemoteConnAllowed.x64=E9494 bMultimonAllowed.x64 =E9498 ulMaxDebugSessions.x64=E949C bFUSEnabled.x64 =E94A0 [10.0.15058.0-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15061.0-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15063.0-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15063.296-SLInit] bInitialized.x86 =C2F70 bServerSku.x86 =C2F74 lMaxUserSessions.x86 =C2F78 bAppServerAllowed.x86 =C2F7C bRemoteConnAllowed.x86=C2F80 bMultimonAllowed.x86 =C2F84 ulMaxDebugSessions.x86=C2F88 bFUSEnabled.x86 =C2F8C bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15063.994-SLInit] bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.15063.1155-SLInit] bInitialized.x64 =E9468 bRemoteConnAllowed.x64=E946C bMultimonAllowed.x64 =E9470 ulMaxDebugSessions.x64=E9474 bFUSEnabled.x64 =E9478 bServerSku.x64 =E9484 lMaxUserSessions.x64 =E9488 bAppServerAllowed.x64 =E948C [10.0.16179.1000-SLInit] bInitialized.x86 =C7F6C bServerSku.x86 =C7F70 lMaxUserSessions.x86 =C7F74 bAppServerAllowed.x86 =C7F78 bRemoteConnAllowed.x86=C7F7C bMultimonAllowed.x86 =C7F80 ulMaxDebugSessions.x86=C7F84 bFUSEnabled.x86 =C7F88 bServerSku.x64 =E83D8 lMaxUserSessions.x64 =E83DC bAppServerAllowed.x64 =E83E0 bInitialized.x64 =E9490 bRemoteConnAllowed.x64=E9494 bMultimonAllowed.x64 =E9498 ulMaxDebugSessions.x64=E949C bFUSEnabled.x64 =E94A0 [10.0.16184.1001-SLInit] bInitialized.x86 =C7F6C bServerSku.x86 =C7F70 lMaxUserSessions.x86 =C7F74 bAppServerAllowed.x86 =C7F78 bRemoteConnAllowed.x86=C7F7C bMultimonAllowed.x86 =C7F80 ulMaxDebugSessions.x86=C7F84 bFUSEnabled.x86 =C7F88 bServerSku.x64 =E83D8 lMaxUserSessions.x64 =E83DC bAppServerAllowed.x64 =E83E0 bInitialized.x64 =E9490 bRemoteConnAllowed.x64=E9494 bMultimonAllowed.x64 =E9498 ulMaxDebugSessions.x64=E949C bFUSEnabled.x64 =E94A0 [10.0.16199.1000-SLInit] bInitialized.x86 =C8F74 bServerSku.x86 =C8F78 lMaxUserSessions.x86 =C8F7C bAppServerAllowed.x86 =C8F80 bRemoteConnAllowed.x86=C8F84 bMultimonAllowed.x86 =C8F88 ulMaxDebugSessions.x86=C8F8C bFUSEnabled.x86 =C8F90 bServerSku.x64 =E83E8 lMaxUserSessions.x64 =E83EC bAppServerAllowed.x64 =E83F0 bInitialized.x64 =E94A0 bRemoteConnAllowed.x64=E94A4 bMultimonAllowed.x64 =E94A8 ulMaxDebugSessions.x64=E94AC bFUSEnabled.x64 =E94B0 [10.0.16215.1000-SLInit] bInitialized.x86 =C5F78 bServerSku.x86 =C5F7C lMaxUserSessions.x86 =C5F80 bAppServerAllowed.x86 =C5F84 bRemoteConnAllowed.x86=C5F88 bMultimonAllowed.x86 =C5F8C ulMaxDebugSessions.x86=C5F90 bFUSEnabled.x86 =C5F94 bServerSku.x64 =EA3E8 lMaxUserSessions.x64 =EA3EC bAppServerAllowed.x64 =EA3F0 bInitialized.x64 =EB4A0 bRemoteConnAllowed.x64=EB4A4 bMultimonAllowed.x64 =EB4A8 ulMaxDebugSessions.x64=EB4AC bFUSEnabled.x64 =EB4B0 [10.0.16232.1000-SLInit] bInitialized.x86 =C5F78 bServerSku.x86 =C5F7C lMaxUserSessions.x86 =C5F80 bAppServerAllowed.x86 =C5F84 bRemoteConnAllowed.x86=C5F88 bMultimonAllowed.x86 =C5F8C ulMaxDebugSessions.x86=C5F90 bFUSEnabled.x86 =C5F94 bServerSku.x64 =EA3E8 lMaxUserSessions.x64 =EA3EC bAppServerAllowed.x64 =EA3F0 bInitialized.x64 =EB4A0 bRemoteConnAllowed.x64=EB4A4 bMultimonAllowed.x64 =EB4A8 ulMaxDebugSessions.x64=EB4AC bFUSEnabled.x64 =EB4B0 [10.0.16237.1001-SLInit] bInitialized.x86 =C5F78 bServerSku.x86 =C5F7C lMaxUserSessions.x86 =C5F80 bAppServerAllowed.x86 =C5F84 bRemoteConnAllowed.x86=C5F88 bMultimonAllowed.x86 =C5F8C ulMaxDebugSessions.x86=C5F90 bFUSEnabled.x86 =C5F94 bServerSku.x64 =EB3EC lMaxUserSessions.x64 =EB3F0 bAppServerAllowed.x64 =EB3F4 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16241.1001-SLInit] bInitialized.x86 =C5F78 bServerSku.x86 =C5F7C lMaxUserSessions.x86 =C5F80 bAppServerAllowed.x86 =C5F84 bRemoteConnAllowed.x86=C5F88 bMultimonAllowed.x86 =C5F8C ulMaxDebugSessions.x86=C5F90 bFUSEnabled.x86 =C5F94 bServerSku.x64 =EB3EC lMaxUserSessions.x64 =EB3F0 bAppServerAllowed.x64 =EB3F4 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16251.0-SLInit] bInitialized.x86 =C9F78 bServerSku.x86 =C9F7C lMaxUserSessions.x86 =C9F80 bAppServerAllowed.x86 =C9F84 bRemoteConnAllowed.x86=C9F88 bMultimonAllowed.x86 =C9F8C ulMaxDebugSessions.x86=C9F90 bFUSEnabled.x86 =C9F94 bServerSku.x64 =EB3EC lMaxUserSessions.x64 =EB3F0 bAppServerAllowed.x64 =EB3F4 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16251.1000-SLInit] bInitialized.x86 =C9F78 bServerSku.x86 =C9F7C lMaxUserSessions.x86 =C9F80 bAppServerAllowed.x86 =C9F84 bRemoteConnAllowed.x86=C9F88 bMultimonAllowed.x86 =C9F8C ulMaxDebugSessions.x86=C9F90 bFUSEnabled.x86 =C9F94 bServerSku.x64 =EB3EC lMaxUserSessions.x64 =EB3F0 bAppServerAllowed.x64 =EB3F4 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16257.1-SLInit] bInitialized.x86 =C9F7C bServerSku.x86 =C9F80 lMaxUserSessions.x86 =C9F84 bAppServerAllowed.x86 =C9F88 bRemoteConnAllowed.x86=C9F8C bMultimonAllowed.x86 =C9F90 ulMaxDebugSessions.x86=C9F94 bFUSEnabled.x86 =C9F98 bServerSku.x64 =EB3F0 lMaxUserSessions.x64 =EB3F4 bAppServerAllowed.x64 =EB3F8 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16257.1000-SLInit] bInitialized.x86 =C9F7C bServerSku.x86 =C9F80 lMaxUserSessions.x86 =C9F84 bAppServerAllowed.x86 =C9F88 bRemoteConnAllowed.x86=C9F8C bMultimonAllowed.x86 =C9F90 ulMaxDebugSessions.x86=C9F94 bFUSEnabled.x86 =C9F98 bServerSku.x64 =EB3F0 lMaxUserSessions.x64 =EB3F4 bAppServerAllowed.x64 =EB3F8 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16273.1000-SLInit] bInitialized.x86 =C9F7C bServerSku.x86 =C9F80 lMaxUserSessions.x86 =C9F84 bAppServerAllowed.x86 =C9F88 bRemoteConnAllowed.x86=C9F8C bMultimonAllowed.x86 =C9F90 ulMaxDebugSessions.x86=C9F94 bFUSEnabled.x86 =C9F98 bServerSku.x64 =EB3F0 lMaxUserSessions.x64 =EB3F4 bAppServerAllowed.x64 =EB3F8 bInitialized.x64 =EC4A0 bRemoteConnAllowed.x64=EC4A4 bMultimonAllowed.x64 =EC4A8 ulMaxDebugSessions.x64=EC4AC bFUSEnabled.x64 =EC4B0 [10.0.16275.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16278.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16281.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16288.1-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16291.0-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16294.1-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16296.0-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16299.0-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16299.15-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16353.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.16362.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.17004.1000-SLInit] bInitialized.x86 =C6F7C bServerSku.x86 =C6F80 lMaxUserSessions.x86 =C6F84 bAppServerAllowed.x86 =C6F88 bRemoteConnAllowed.x86=C6F8C bMultimonAllowed.x86 =C6F90 ulMaxDebugSessions.x86=C6F94 bFUSEnabled.x86 =C6F98 bServerSku.x64 =ED3E8 lMaxUserSessions.x64 =ED3EC bAppServerAllowed.x64 =ED3F0 bInitialized.x64 =EE4A0 bRemoteConnAllowed.x64=EE4A4 bMultimonAllowed.x64 =EE4A8 ulMaxDebugSessions.x64=EE4AC bFUSEnabled.x64 =EE4B0 [10.0.17017.1000-SLInit] bInitialized.x86 =C9EB8 bServerSku.x86 =C9EBC lMaxUserSessions.x86 =C9EC0 bAppServerAllowed.x86 =C9EC4 bRemoteConnAllowed.x86=C9EC8 bMultimonAllowed.x86 =C9ECC ulMaxDebugSessions.x86=C9ED0 bFUSEnabled.x86 =C9ED4 bServerSku.x64 =EC2E8 lMaxUserSessions.x64 =EC2EC bAppServerAllowed.x64 =EC2F0 bInitialized.x64 =ED3A0 bRemoteConnAllowed.x64=ED3A4 bMultimonAllowed.x64 =ED3A8 ulMaxDebugSessions.x64=ED3AC bFUSEnabled.x64 =ED3B0 [10.0.17025.1000-SLInit] bInitialized.x86 =C9EB8 bServerSku.x86 =C9EBC lMaxUserSessions.x86 =C9EC0 bAppServerAllowed.x86 =C9EC4 bRemoteConnAllowed.x86=C9EC8 bMultimonAllowed.x86 =C9ECC ulMaxDebugSessions.x86=C9ED0 bFUSEnabled.x86 =C9ED4 bServerSku.x64 =EC2E8 lMaxUserSessions.x64 =EC2EC bAppServerAllowed.x64 =EC2F0 bInitialized.x64 =ED3A0 bRemoteConnAllowed.x64=ED3A4 bMultimonAllowed.x64 =ED3A8 ulMaxDebugSessions.x64=ED3AC bFUSEnabled.x64 =ED3B0 [10.0.17035.1000-SLInit] bInitialized.x86 =C9ED8 bServerSku.x86 =C9EDC lMaxUserSessions.x86 =C9EE0 bAppServerAllowed.x86 =C9EE4 bRemoteConnAllowed.x86=C9EE8 bMultimonAllowed.x86 =C9EEC ulMaxDebugSessions.x86=C9EF0 bFUSEnabled.x86 =C9EF4 bServerSku.x64 =EC2E8 lMaxUserSessions.x64 =EC2EC bAppServerAllowed.x64 =EC2F0 bInitialized.x64 =ED3A0 bRemoteConnAllowed.x64=ED3A4 bMultimonAllowed.x64 =ED3A8 ulMaxDebugSessions.x64=ED3AC bFUSEnabled.x64 =ED3B0 [10.0.17046.1000-SLInit] bInitialized.x86 =C9ED8 bServerSku.x86 =C9EDC lMaxUserSessions.x86 =C9EE0 bAppServerAllowed.x86 =C9EE4 bRemoteConnAllowed.x86=C9EE8 bMultimonAllowed.x86 =C9EEC ulMaxDebugSessions.x86=C9EF0 bFUSEnabled.x86 =C9EF4 bServerSku.x64 =EC2E8 lMaxUserSessions.x64 =EC2EC bAppServerAllowed.x64 =EC2F0 bInitialized.x64 =ED3A0 bRemoteConnAllowed.x64=ED3A4 bMultimonAllowed.x64 =ED3A8 ulMaxDebugSessions.x64=ED3AC bFUSEnabled.x64 =ED3B0 [10.0.17063.1000-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17115.1-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17128.1-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17133.1-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17134.1-SLInit] bInitialized.x86 =CBF38 bServerSku.x86 =CBF3C lMaxUserSessions.x86 =CBF40 bAppServerAllowed.x86 =CBF44 bRemoteConnAllowed.x86=CBF48 bMultimonAllowed.x86 =CBF4C ulMaxDebugSessions.x86=CBF50 bFUSEnabled.x86 =CBF54 bServerSku.x64 =F1378 lMaxUserSessions.x64 =F137C bAppServerAllowed.x64 =F1380 bInitialized.x64 =F2430 bRemoteConnAllowed.x64=F2434 bMultimonAllowed.x64 =F2438 ulMaxDebugSessions.x64=F243C bFUSEnabled.x64 =F2440 [10.0.17723.1000-SLInit] bInitialized.x64 =E9AB0 bServerSku.x64 =E9AB4 lMaxUserSessions.x64 =E9AB8 bAppServerAllowed.x64 =E9AC0 bRemoteConnAllowed.x64=E9AC4 bMultimonAllowed.x64 =E9AC8 ulMaxDebugSessions.x64=E9ACC bFUSEnabled.x64 =E9AD0 [10.0.17763.1-SLInit] bInitialized.x86 =CD798 bServerSku.x86 =CD79C lMaxUserSessions.x86 =CD7A0 bAppServerAllowed.x86 =CD7A8 bRemoteConnAllowed.x86=CD7AC bMultimonAllowed.x86 =CD7B0 ulMaxDebugSessions.x86=CD7B4 bFUSEnabled.x86 =CD7B8 bInitialized.x64 =ECAB0 bServerSku.x64 =ECAB4 lMaxUserSessions.x64 =ECAB8 bAppServerAllowed.x64 =ECAC0 bRemoteConnAllowed.x64=ECAC4 bMultimonAllowed.x64 =ECAC8 ulMaxDebugSessions.x64=ECACC bFUSEnabled.x64 =ECAD0 ================================================ FILE: src-installer/RDPWInst.dpr ================================================ { Copyright 2018 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. } program RDPWInst; {$APPTYPE CONSOLE} {$R resource.res} uses SysUtils, Windows, Classes, WinSvc, Registry, WinInet, AccCtrl, AclAPI; function EnumServicesStatusEx( hSCManager: SC_HANDLE; InfoLevel, dwServiceType, dwServiceState: DWORD; lpServices: PByte; cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD; pszGroupName: PWideChar): BOOL; stdcall; external advapi32 name 'EnumServicesStatusExW'; function ConvertStringSidToSid( StringSid: PWideChar; var Sid: PSID): BOOL; stdcall; external advapi32 name 'ConvertStringSidToSidW'; type FILE_VERSION = record Version: record case Boolean of True: (dw: DWORD); False: (w: record Minor, Major: Word; end;) end; Release, Build: Word; bDebug, bPrerelease, bPrivate, bSpecial: Boolean; end; SERVICE_STATUS_PROCESS = packed record dwServiceType, dwCurrentState, dwControlsAccepted, dwWin32ExitCode, dwServiceSpecificExitCode, dwCheckPoint, dwWaitHint, dwProcessId, dwServiceFlags: DWORD; end; PSERVICE_STATUS_PROCESS = ^SERVICE_STATUS_PROCESS; ENUM_SERVICE_STATUS_PROCESS = packed record lpServiceName, lpDisplayName: PWideChar; ServiceStatusProcess: SERVICE_STATUS_PROCESS; end; PENUM_SERVICE_STATUS_PROCESS = ^ENUM_SERVICE_STATUS_PROCESS; const SC_ENUM_PROCESS_INFO = 0; TermService = 'TermService'; var Installed: Boolean; Online: Boolean; WrapPath: String; Arch: Byte; OldWow64RedirectionValue: LongBool; TermServicePath: String; FV: FILE_VERSION; TermServicePID: DWORD; ShareSvc: Array of String; sShareSvc: String; function SupportedArchitecture: Boolean; var SI: TSystemInfo; begin GetNativeSystemInfo(SI); case SI.wProcessorArchitecture of 0: begin Arch := 32; Result := True; // Intel x86 end; 6: Result := False; // Itanium-based x64 9: begin Arch := 64; Result := True; // Intel/AMD x64 end; else Result := False; end; end; function DisableWowRedirection: Boolean; type TFunc = function(var Wow64FsEnableRedirection: LongBool): LongBool; stdcall; var hModule: THandle; Wow64DisableWow64FsRedirection: TFunc; begin Result := False; hModule := GetModuleHandle(kernel32); if hModule <> 0 then Wow64DisableWow64FsRedirection := GetProcAddress(hModule, 'Wow64DisableWow64FsRedirection') else Exit; if @Wow64DisableWow64FsRedirection <> nil then Result := Wow64DisableWow64FsRedirection(OldWow64RedirectionValue); end; function RevertWowRedirection: Boolean; type TFunc = function(var Wow64RevertWow64FsRedirection: LongBool): LongBool; stdcall; var hModule: THandle; Wow64RevertWow64FsRedirection: TFunc; begin Result := False; hModule := GetModuleHandle(kernel32); if hModule <> 0 then Wow64RevertWow64FsRedirection := GetProcAddress(hModule, 'Wow64RevertWow64FsRedirection') else Exit; if @Wow64RevertWow64FsRedirection <> nil then Result := Wow64RevertWow64FsRedirection(OldWow64RedirectionValue); end; procedure CheckInstall; var Code: DWORD; TermServiceHost: String; Reg: TRegistry; begin if Arch = 64 then Reg := TRegistry.Create(KEY_WOW64_64KEY) else Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; if not Reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services\TermService') then begin Reg.Free; Code := GetLastError; Writeln('[-] OpenKeyReadOnly error (code ', Code, ').'); Halt(Code); end; TermServiceHost := Reg.ReadString('ImagePath'); Reg.CloseKey; if (Pos('svchost.exe', LowerCase(TermServiceHost)) = 0) and (Pos('svchost -k', LowerCase(TermServiceHost)) = 0) then begin Reg.Free; Writeln('[-] TermService is hosted in a custom application (BeTwin, etc.) - unsupported.'); Writeln('[*] ImagePath: "', TermServiceHost, '".'); Halt(ERROR_NOT_SUPPORTED); end; if not Reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services\TermService\Parameters') then begin Reg.Free; Code := GetLastError; Writeln('[-] OpenKeyReadOnly error (code ', Code, ').'); Halt(Code); end; TermServicePath := Reg.ReadString('ServiceDll'); Reg.CloseKey; if (Pos('termsrv.dll', LowerCase(TermServicePath)) = 0) and (Pos('rdpwrap.dll', LowerCase(TermServicePath)) = 0) then begin Reg.Free; Writeln('[-] Another third-party TermService library is installed.'); Writeln('[*] ServiceDll: "', TermServicePath, '".'); Halt(ERROR_NOT_SUPPORTED); end; Reg.Free; Installed := Pos('rdpwrap.dll', LowerCase(TermServicePath)) > 0; end; function SvcGetStart(SvcName: String): Integer; var hSC: SC_HANDLE; hSvc: THandle; Code: DWORD; lpServiceConfig: PQueryServiceConfig; Buf: Pointer; cbBufSize, pcbBytesNeeded: Cardinal; begin Result := -1; Writeln('[*] Checking ', SvcName, '...'); hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT); if hSC = 0 then begin Code := GetLastError; Writeln('[-] OpenSCManager error (code ', Code, ').'); Exit; end; hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_QUERY_CONFIG); if hSvc = 0 then begin CloseServiceHandle(hSC); Code := GetLastError; Writeln('[-] OpenService error (code ', Code, ').'); Exit; end; if QueryServiceConfig(hSvc, nil, 0, pcbBytesNeeded) then begin Writeln('[-] QueryServiceConfig failed.'); Exit; end; cbBufSize := pcbBytesNeeded; GetMem(Buf, cbBufSize); if not QueryServiceConfig(hSvc, Buf, cbBufSize, pcbBytesNeeded) then begin FreeMem(Buf, cbBufSize); CloseServiceHandle(hSvc); CloseServiceHandle(hSC); Code := GetLastError; Writeln('[-] QueryServiceConfig error (code ', Code, ').'); Exit; end else begin lpServiceConfig := Buf; Result := Integer(lpServiceConfig^.dwStartType); end; FreeMem(Buf, cbBufSize); CloseServiceHandle(hSvc); CloseServiceHandle(hSC); end; procedure SvcConfigStart(SvcName: String; dwStartType: Cardinal); var hSC: SC_HANDLE; hSvc: THandle; Code: DWORD; begin Writeln('[*] Configuring ', SvcName, '...'); hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT); if hSC = 0 then begin Code := GetLastError; Writeln('[-] OpenSCManager error (code ', Code, ').'); Exit; end; hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_CHANGE_CONFIG); if hSvc = 0 then begin CloseServiceHandle(hSC); Code := GetLastError; Writeln('[-] OpenService error (code ', Code, ').'); Exit; end; if not ChangeServiceConfig(hSvc, SERVICE_NO_CHANGE, dwStartType, SERVICE_NO_CHANGE, nil, nil, nil, nil, nil, nil, nil) then begin CloseServiceHandle(hSvc); CloseServiceHandle(hSC); Code := GetLastError; Writeln('[-] ChangeServiceConfig error (code ', Code, ').'); Exit; end; CloseServiceHandle(hSvc); CloseServiceHandle(hSC); end; procedure SvcStart(SvcName: String); var hSC: SC_HANDLE; hSvc: THandle; Code: DWORD; pch: PWideChar; procedure ExitError(Func: String; ErrorCode: DWORD); begin if hSC > 0 then CloseServiceHandle(hSC); if hSvc > 0 then CloseServiceHandle(hSvc); Writeln('[-] ', Func, ' error (code ', ErrorCode, ').'); end; begin hSC := 0; hSvc := 0; Writeln('[*] Starting ', SvcName, '...'); hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT); if hSC = 0 then begin ExitError('OpenSCManager', GetLastError); Exit; end; hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_START); if hSvc = 0 then begin ExitError('OpenService', GetLastError); Exit; end; pch := nil; if not StartService(hSvc, 0, pch) then begin Code := GetLastError; if Code = 1056 then begin // Service already started Sleep(2000); // or SCM hasn't registered killed process if not StartService(hSvc, 0, pch) then begin ExitError('StartService', Code); Exit; end; end else begin ExitError('StartService', Code); Exit; end; end; CloseServiceHandle(hSvc); CloseServiceHandle(hSC); end; procedure CheckTermsrvProcess; label back; var hSC: SC_HANDLE; dwNeedBytes, dwReturnBytes, dwResumeHandle, Code: DWORD; Svc: Array of ENUM_SERVICE_STATUS_PROCESS; I: Integer; Found, Started: Boolean; TermServiceName: String; begin Started := False; back: hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT or SC_MANAGER_ENUMERATE_SERVICE); if hSC = 0 then begin Code := GetLastError; Writeln('[-] OpenSCManager error (code ', Code, ').'); Halt(Code); end; dwResumeHandle := 0; SetLength(Svc, 1489); FillChar(Svc[0], sizeof(Svc[0])*Length(Svc), 0); if not EnumServicesStatusEx(hSC, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, @Svc[0], sizeof(Svc[0])*Length(Svc), dwNeedBytes, dwReturnBytes, dwResumeHandle, nil) then begin Code := GetLastError; if Code <> ERROR_MORE_DATA then begin CloseServiceHandle(hSC); Writeln('[-] EnumServicesStatusEx error (code ', Code, ').'); Halt(Code); end else begin SetLength(Svc, 5957); FillChar(Svc[0], sizeof(Svc[0])*Length(Svc), 0); if not EnumServicesStatusEx(hSC, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, @Svc[0], sizeof(Svc[0])*Length(Svc), dwNeedBytes, dwReturnBytes, dwResumeHandle, nil) then begin CloseServiceHandle(hSC); Code := GetLastError; Writeln('[-] EnumServicesStatusEx error (code ', Code, ').'); Halt(Code); end; end; end; CloseServiceHandle(hSC); Found := False; for I := 0 to Length(Svc) - 1 do begin if Svc[I].lpServiceName = nil then Break; if LowerCase(Svc[I].lpServiceName) = LowerCase(TermService) then begin Found := True; TermServiceName := Svc[I].lpServiceName; TermServicePID := Svc[I].ServiceStatusProcess.dwProcessId; Break; end; end; if not Found then begin Writeln('[-] TermService not found.'); Halt(ERROR_SERVICE_DOES_NOT_EXIST); end; if TermServicePID = 0 then begin if Started then begin Writeln('[-] Failed to set up TermService. Unknown error.'); Halt(ERROR_SERVICE_NOT_ACTIVE); end; SvcConfigStart(TermService, SERVICE_AUTO_START); SvcStart(TermService); Started := True; goto back; end else Writeln('[+] TermService found (pid ', TermServicePID, ').'); SetLength(ShareSvc, 0); for I := 0 to Length(Svc) - 1 do begin if Svc[I].lpServiceName = nil then Break; if Svc[I].ServiceStatusProcess.dwProcessId = TermServicePID then if Svc[I].lpServiceName <> TermServiceName then begin SetLength(ShareSvc, Length(ShareSvc)+1); ShareSvc[Length(ShareSvc)-1] := Svc[I].lpServiceName; end; end; sShareSvc := ''; for I := 0 to Length(ShareSvc) - 1 do if sShareSvc = '' then sShareSvc := ShareSvc[I] else sShareSvc := sShareSvc + ', ' + ShareSvc[I]; if sShareSvc <> '' then Writeln('[*] Shared services found: ', sShareSvc) else Writeln('[*] No shared services found.'); end; function AddPrivilege(SePriv: String): Boolean; var hToken: THandle; SeNameValue: Int64; tkp: TOKEN_PRIVILEGES; ReturnLength: Cardinal; ErrorCode: Cardinal; begin Result := False; if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin ErrorCode := GetLastError; Writeln('[-] OpenProcessToken error (code ' + IntToStr(ErrorCode) + ').'); Exit; end; if not LookupPrivilegeValue(nil, PWideChar(SePriv), SeNameValue) then begin ErrorCode := GetLastError; Writeln('[-] LookupPrivilegeValue error (code ' + IntToStr(ErrorCode) + ').'); Exit; end; tkp.PrivilegeCount := 1; tkp.Privileges[0].Luid := SeNameValue; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; if not AdjustTokenPrivileges(hToken, False, tkp, SizeOf(tkp), tkp, ReturnLength) then begin ErrorCode := GetLastError; Writeln('[-] AdjustTokenPrivileges error (code ' + IntToStr(ErrorCode) + ').'); Exit; end; Result := True; end; procedure KillProcess(PID: DWORD); var hProc: THandle; Code: DWORD; begin hProc := OpenProcess(PROCESS_TERMINATE, False, PID); if hProc = 0 then begin Code := GetLastError; Writeln('[-] OpenProcess error (code ', Code, ').'); Halt(Code); end; if not TerminateProcess(hProc, 0) then begin CloseHandle(hProc); Code := GetLastError; Writeln('[-] TerminateProcess error (code ', Code, ').'); Halt(Code); end; CloseHandle(hProc); end; function ExecWait(Cmdline: String): Boolean; var si: STARTUPINFO; pi: PROCESS_INFORMATION; begin Result := False; ZeroMemory(@si, sizeof(si)); si.cb := sizeof(si); UniqueString(Cmdline); if not CreateProcess(nil, PWideChar(Cmdline), nil, nil, True, 0, nil, nil, si, pi) then begin Writeln('[-] CreateProcess error (code: ', GetLastError, ').'); Exit; end; CloseHandle(pi.hThread); WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); Result := True; end; function ExpandPath(Path: String): String; var Str: Array[0..511] of Char; begin Result := ''; FillChar(Str, 512, 0); if Arch = 64 then Path := StringReplace(Path, '%ProgramFiles%', '%ProgramW6432%', [rfReplaceAll, rfIgnoreCase]); if ExpandEnvironmentStrings(PWideChar(Path), Str, 512) > 0 then Result := Str; end; procedure SetWrapperDll; var Reg: TRegistry; Code: DWORD; begin if Arch = 64 then Reg := TRegistry.Create(KEY_WRITE or KEY_WOW64_64KEY) else Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; if not Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\TermService\Parameters', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; try Reg.WriteExpandString('ServiceDll', WrapPath); if (Arch = 64) and (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then ExecWait('"'+ExpandPath('%SystemRoot%')+'\system32\reg.exe" add HKLM\SYSTEM\CurrentControlSet\Services\TermService\Parameters /v ServiceDll /t REG_EXPAND_SZ /d "'+WrapPath+'" /f'); except Writeln('[-] WriteExpandString error.'); Halt(ERROR_ACCESS_DENIED); end; Reg.CloseKey; Reg.Free; end; procedure ResetServiceDll; var Reg: TRegistry; Code: DWORD; begin if Arch = 64 then Reg := TRegistry.Create(KEY_WRITE or KEY_WOW64_64KEY) else Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; if not Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\TermService\Parameters', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; try Reg.WriteExpandString('ServiceDll', '%SystemRoot%\System32\termsrv.dll'); except Writeln('[-] WriteExpandString error.'); Halt(ERROR_ACCESS_DENIED); end; Reg.CloseKey; Reg.Free; end; procedure ExtractRes(ResName, Path: String); var ResStream: TResourceStream; begin ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA); try ResStream.SaveToFile(Path); except Writeln('[-] Failed to extract file.'); Writeln('[*] Resource name: ' + ResName); Writeln('[*] Destination path: ' + Path); ResStream.Free; Exit; end; Writeln('[+] Extracted ', ResName, ' -> ', Path); ResStream.Free; end; function ExtractResText(ResName: String): String; var ResStream: TResourceStream; Str: TStringList; begin ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA); Str := TStringList.Create; try Str.LoadFromStream(ResStream); except end; ResStream.Free; Result := Str.Text; Str.Free; end; function GitINIFile(var Content: String): Boolean; const URL = 'https://raw.githubusercontent.com/stascorp/rdpwrap/master/res/rdpwrap.ini'; var NetHandle: HINTERNET; UrlHandle: HINTERNET; Str: String; Buf: Array[0..1023] of Byte; BytesRead: DWORD; begin Result := False; Content := ''; NetHandle := InternetOpen('RDP Wrapper Update', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if not Assigned(NetHandle) then Exit; UrlHandle := InternetOpenUrl(NetHandle, PChar(URL), nil, 0, INTERNET_FLAG_RELOAD, 0); if not Assigned(UrlHandle) then begin InternetCloseHandle(NetHandle); Exit; end; repeat InternetReadFile(UrlHandle, @Buf[0], SizeOf(Buf), BytesRead); SetString(Str, PAnsiChar(@Buf[0]), BytesRead); Content := Content + Str; until BytesRead = 0; InternetCloseHandle(UrlHandle); InternetCloseHandle(NetHandle); Result := True; end; procedure GrantSidFullAccess(Path, SID: String); var p_SID: PSID; pDACL: PACL; EA: EXPLICIT_ACCESS; Code, Result: DWORD; begin p_SID := nil; if not ConvertStringSidToSid(PChar(SID), p_SID) then begin Code := GetLastError; Writeln('[-] ConvertStringSidToSid error (code ', Code, ').'); Exit; end; EA.grfAccessPermissions := GENERIC_ALL; EA.grfAccessMode := GRANT_ACCESS; EA.grfInheritance := SUB_CONTAINERS_AND_OBJECTS_INHERIT; EA.Trustee.pMultipleTrustee := nil; EA.Trustee.MultipleTrusteeOperation := NO_MULTIPLE_TRUSTEE; EA.Trustee.TrusteeForm := TRUSTEE_IS_SID; EA.Trustee.TrusteeType := TRUSTEE_IS_WELL_KNOWN_GROUP; EA.Trustee.ptstrName := p_SID; Result := SetEntriesInAcl(1, @EA, nil, pDACL); if Result = ERROR_SUCCESS then begin if SetNamedSecurityInfo(pchar(Path), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pDACL, nil) <> ERROR_SUCCESS then begin Code := GetLastError; Writeln('[-] SetNamedSecurityInfo error (code ', Code, ').'); end; LocalFree(Cardinal(pDACL)); end else begin Code := GetLastError; Writeln('[-] SetEntriesInAcl error (code ', Code, ').'); end; end; procedure ExtractFiles; var RDPClipRes, RfxvmtRes, S: String; OnlineINI: TStringList; begin if not DirectoryExists(ExtractFilePath(ExpandPath(WrapPath))) then if ForceDirectories(ExtractFilePath(ExpandPath(WrapPath))) then begin S := ExtractFilePath(ExpandPath(WrapPath)); Writeln('[+] Folder created: ', S); GrantSidFullAccess(S, 'S-1-5-18'); // Local System account GrantSidFullAccess(S, 'S-1-5-6'); // Service group end else begin Writeln('[-] ForceDirectories error.'); Writeln('[*] Path: ', ExtractFilePath(ExpandPath(WrapPath))); Halt(0); end; if Online then begin Writeln('[*] Downloading latest INI file...'); OnlineINI := TStringList.Create; if GitINIFile(S) then begin OnlineINI.Text := S; S := ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini'; OnlineINI.SaveToFile(S); Writeln('[+] Latest INI file -> ', S); end else begin Writeln('[-] Failed to get online INI file, using built-in.'); Online := False; end; OnlineINI.Free; end; if not Online then begin S := ExtractFilePath(ParamStr(0)) + 'rdpwrap.ini'; if FileExists(S) then begin OnlineINI := TStringList.Create; OnlineINI.LoadFromFile(S); S := ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini'; OnlineINI.SaveToFile(S); Writeln('[+] Current INI file -> ', S); OnlineINI.Free; end else ExtractRes('config', ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini'); end; RDPClipRes := ''; RfxvmtRes := ''; case Arch of 32: begin ExtractRes('rdpw32', ExpandPath(WrapPath)); if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then RDPClipRes := 'rdpclip6032'; if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then RDPClipRes := 'rdpclip6132'; if (FV.Version.w.Major = 10) and (FV.Version.w.Minor = 0) then RfxvmtRes := 'rfxvmt32'; end; 64: begin ExtractRes('rdpw64', ExpandPath(WrapPath)); if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then RDPClipRes := 'rdpclip6064'; if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then RDPClipRes := 'rdpclip6164'; if (FV.Version.w.Major = 10) and (FV.Version.w.Minor = 0) then RfxvmtRes := 'rfxvmt64'; end; end; if RDPClipRes <> '' then if not FileExists(ExpandPath('%SystemRoot%\System32\rdpclip.exe')) then ExtractRes(RDPClipRes, ExpandPath('%SystemRoot%\System32\rdpclip.exe')); if RfxvmtRes <> '' then if not FileExists(ExpandPath('%SystemRoot%\System32\rfxvmt.dll')) then ExtractRes(RfxvmtRes, ExpandPath('%SystemRoot%\System32\rfxvmt.dll')); end; procedure DeleteFiles; var Code: DWORD; FullPath, Path: String; begin FullPath := ExpandPath(TermServicePath); Path := ExtractFilePath(FullPath); if not DeleteFile(PWideChar(Path + 'rdpwrap.ini')) then begin Code := GetLastError; Writeln('[-] DeleteFile error (code ', Code, ').'); Exit; end; Writeln('[+] Removed file: ', Path + 'rdpwrap.ini'); if not DeleteFile(PWideChar(FullPath)) then begin Code := GetLastError; Writeln('[-] DeleteFile error (code ', Code, ').'); Exit; end; Writeln('[+] Removed file: ', FullPath); if not RemoveDirectory(PWideChar(ExtractFilePath(ExpandPath(TermServicePath)))) then begin Code := GetLastError; Writeln('[-] RemoveDirectory error (code ', Code, ').'); Exit; end; Writeln('[+] Removed folder: ', ExtractFilePath(ExpandPath(TermServicePath))); end; function GetFileVersion(const FileName: TFileName; var FileVersion: FILE_VERSION): Boolean; type VS_VERSIONINFO = record wLength, wValueLength, wType: Word; szKey: Array[1..16] of WideChar; Padding1: Word; Value: VS_FIXEDFILEINFO; Padding2, Children: Word; end; PVS_VERSIONINFO = ^VS_VERSIONINFO; const VFF_DEBUG = 1; VFF_PRERELEASE = 2; VFF_PRIVATE = 8; VFF_SPECIAL = 32; var hFile: HMODULE; hResourceInfo: HRSRC; VersionInfo: PVS_VERSIONINFO; begin Result := False; hFile := LoadLibraryEx(PWideChar(FileName), 0, LOAD_LIBRARY_AS_DATAFILE); if hFile = 0 then Exit; hResourceInfo := FindResource(hFile, PWideChar(1), PWideChar($10)); if hResourceInfo = 0 then Exit; VersionInfo := Pointer(LoadResource(hFile, hResourceInfo)); if VersionInfo = nil then Exit; FileVersion.Version.dw := VersionInfo.Value.dwFileVersionMS; FileVersion.Release := Word(VersionInfo.Value.dwFileVersionLS shr 16); FileVersion.Build := Word(VersionInfo.Value.dwFileVersionLS); FileVersion.bDebug := (VersionInfo.Value.dwFileFlags and VFF_DEBUG) = VFF_DEBUG; FileVersion.bPrerelease := (VersionInfo.Value.dwFileFlags and VFF_PRERELEASE) = VFF_PRERELEASE; FileVersion.bPrivate := (VersionInfo.Value.dwFileFlags and VFF_PRIVATE) = VFF_PRIVATE; FileVersion.bSpecial := (VersionInfo.Value.dwFileFlags and VFF_SPECIAL) = VFF_SPECIAL; FreeLibrary(hFile); Result := True; end; procedure CheckTermsrvVersion; var SuppLvl: Byte; VerTxt: String; procedure UpdateMsg; begin Writeln('Try running "update.bat" or "RDPWInst -w" to download latest INI file.'); Writeln('If it doesn''t help, send your termsrv.dll to project developer for support.'); end; begin GetFileVersion(ExpandPath(TermServicePath), FV); VerTxt := Format('%d.%d.%d.%d', [FV.Version.w.Major, FV.Version.w.Minor, FV.Release, FV.Build]); Writeln('[*] Terminal Services version: ', VerTxt); if (FV.Version.w.Major = 5) and (FV.Version.w.Minor = 1) then begin if Arch = 32 then begin Writeln('[!] Windows XP is not supported.'); Writeln('You may take a look at RDP Realtime Patch by Stas''M for Windows XP'); Writeln('Link: http://stascorp.com/load/1-1-0-62'); end; if Arch = 64 then Writeln('[!] Windows XP 64-bit Edition is not supported.'); Exit; end; if (FV.Version.w.Major = 5) and (FV.Version.w.Minor = 2) then begin if Arch = 32 then Writeln('[!] Windows Server 2003 is not supported.'); if Arch = 64 then Writeln('[!] Windows Server 2003 or XP 64-bit Edition is not supported.'); Exit; end; SuppLvl := 0; if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then begin SuppLvl := 1; if (Arch = 32) and (FV.Release = 6000) and (FV.Build = 16386) then begin Writeln('[!] This version of Terminal Services may crash on logon attempt.'); Writeln('It''s recommended to upgrade to Service Pack 1 or higher.'); end; end; if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then SuppLvl := 1; if Pos('[' + VerTxt + ']', ExtractResText('config')) > 0 then SuppLvl := 2; case SuppLvl of 0: begin Writeln('[-] This version of Terminal Services is not supported.'); UpdateMsg; end; 1: begin Writeln('[!] This version of Terminal Services is supported partially.'); Writeln('It means you may have some limitations such as only 2 concurrent sessions.'); UpdateMsg; end; 2: begin Writeln('[+] This version of Terminal Services is fully supported.'); end; end; end; procedure CheckTermsrvDependencies; const CertPropSvc = 'CertPropSvc'; SessionEnv = 'SessionEnv'; begin if SvcGetStart(CertPropSvc) = SERVICE_DISABLED then SvcConfigStart(CertPropSvc, SERVICE_DEMAND_START); if SvcGetStart(SessionEnv) = SERVICE_DISABLED then SvcConfigStart(SessionEnv, SERVICE_DEMAND_START); end; procedure TSConfigRegistry(Enable: Boolean); var Reg: TRegistry; Code: DWORD; begin if Arch = 64 then Reg := TRegistry.Create(KEY_WRITE or KEY_WOW64_64KEY) else Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; if not Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; try Reg.WriteBool('fDenyTSConnections', not Enable); except Writeln('[-] WriteBool error.'); Halt(ERROR_ACCESS_DENIED); end; Reg.CloseKey; if Enable then begin if not Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server\Licensing Core', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; try Reg.WriteBool('EnableConcurrentSessions', True); except Writeln('[-] WriteBool error.'); Halt(ERROR_ACCESS_DENIED); end; Reg.CloseKey; if not Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; try Reg.WriteBool('AllowMultipleTSSessions', True); except Writeln('[-] WriteBool error.'); Halt(ERROR_ACCESS_DENIED); end; Reg.CloseKey; if not Reg.KeyExists('\SYSTEM\CurrentControlSet\Control\Terminal Server\AddIns') then begin if not Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server\AddIns', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; Reg.CloseKey; if not Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server\AddIns\Clip Redirector', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; try Reg.WriteString('Name', 'RDPClip'); Reg.WriteInteger('Type', 3); except Writeln('[-] WriteInteger error.'); Halt(ERROR_ACCESS_DENIED); end; Reg.CloseKey; if not Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server\AddIns\DND Redirector', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; try Reg.WriteString('Name', 'RDPDND'); Reg.WriteInteger('Type', 3); except Writeln('[-] WriteInteger error.'); Halt(ERROR_ACCESS_DENIED); end; Reg.CloseKey; if not Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server\AddIns\Dynamic VC', True) then begin Code := GetLastError; Writeln('[-] OpenKey error (code ', Code, ').'); Halt(Code); end; try Reg.WriteInteger('Type', -1); except Writeln('[-] WriteInteger error.'); Halt(ERROR_ACCESS_DENIED); end; Reg.CloseKey; end; end; Reg.Free; end; procedure TSConfigFirewall(Enable: Boolean); begin if Enable then begin ExecWait('netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=tcp localport=3389 profile=any action=allow'); ExecWait('netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=udp localport=3389 profile=any action=allow'); end else ExecWait('netsh advfirewall firewall delete rule name="Remote Desktop"'); end; function CheckINIDate(Filename, Content: String; var Date: Integer): Boolean; var Str: TStringList; I: Integer; begin Result := False; Str := TStringList.Create; if Filename <> '' then begin try Str.LoadFromFile(Filename); except Writeln('[-] Failed to read INI file.'); Exit; end; end else Str.Text := Content; for I := 0 to Str.Count - 1 do if Pos('Updated=', Str[I]) = 1 then Break; if I >= Str.Count then begin Writeln('[-] Failed to check INI date.'); Exit; end; Content := StringReplace(Str[I], 'Updated=', '', []); Content := StringReplace(Content, '-', '', [rfReplaceAll]); Str.Free; try Date := StrToInt(Content); except Writeln('[-] Wrong INI date format.'); Exit; end; Result := True; end; procedure CheckUpdate; var INIPath, S: String; Str: TStringList; I, OldDate, NewDate: Integer; begin INIPath := ExtractFilePath(ExpandPath(TermServicePath)) + 'rdpwrap.ini'; if not CheckINIDate(INIPath, '', OldDate) then Halt(ERROR_ACCESS_DENIED); Writeln('[*] Current update date: ', Format('%d.%.2d.%.2d', [OldDate div 10000, OldDate div 100 mod 100, OldDate mod 100])); if not GitINIFile(S) then begin Writeln('[-] Failed to download latest INI from GitHub.'); Halt(ERROR_ACCESS_DENIED); end; if not CheckINIDate('', S, NewDate) then Halt(ERROR_ACCESS_DENIED); Writeln('[*] Latest update date: ', Format('%d.%.2d.%.2d', [NewDate div 10000, NewDate div 100 mod 100, NewDate mod 100])); if NewDate = OldDate then Writeln('[*] Everything is up to date.') else if NewDate > OldDate then begin Writeln('[+] New update is available, updating...'); CheckTermsrvProcess; Writeln('[*] Terminating service...'); AddPrivilege('SeDebugPrivilege'); KillProcess(TermServicePID); Sleep(1000); if Length(ShareSvc) > 0 then for I := 0 to Length(ShareSvc) - 1 do SvcStart(ShareSvc[I]); Sleep(500); Str := TStringList.Create; Str.Text := S; try Str.SaveToFile(INIPath); except Writeln('[-] Failed to write INI file.'); Halt(ERROR_ACCESS_DENIED); end; Str.Free; SvcStart(TermService); Writeln('[+] Update completed.'); end else Writeln('[*] Your INI file is newer than public file. Are you a developer? :)'); end; var I: Integer; begin Writeln('RDP Wrapper Library v1.6.2'); Writeln('Installer v2.6'); Writeln('Copyright (C) Stas''M Corp. 2018'); Writeln(''); if (ParamCount < 1) or ( (ParamStr(1) <> '-l') and (ParamStr(1) <> '-i') and (ParamStr(1) <> '-w') and (ParamStr(1) <> '-u') and (ParamStr(1) <> '-r') ) then begin Writeln('USAGE:'); Writeln('RDPWInst.exe [-l|-i[-s][-o]|-w|-u[-k]|-r]'); Writeln(''); Writeln('-l display the license agreement'); Writeln('-i install wrapper to Program Files folder (default)'); Writeln('-i -s install wrapper to System32 folder'); Writeln('-i -o online install mode (loads latest INI file)'); Writeln('-w get latest update for INI file'); Writeln('-u uninstall wrapper'); Writeln('-u -k uninstall wrapper and keep settings'); Writeln('-r force restart Terminal Services'); Exit; end; if ParamStr(1) = '-l' then begin Writeln(ExtractResText('license')); Exit; end; if not CheckWin32Version(6,0) then begin Writeln('[-] Unsupported Windows version:'); Writeln(' only >= 6.0 (Vista, Server 2008 and newer) are supported.'); Exit; end; if not SupportedArchitecture then begin Writeln('[-] Unsupported processor architecture.'); Exit; end; CheckInstall; if ParamStr(1) = '-i' then begin if Installed then begin Writeln('[*] RDP Wrapper Library is already installed.'); Halt(ERROR_INVALID_FUNCTION); end; Writeln('[*] Notice to user:'); Writeln(' - By using all or any portion of this software, you are agreeing'); Writeln(' to be bound by all the terms and conditions of the license agreement.'); Writeln(' - To read the license agreement, run the installer with -l parameter.'); Writeln(' - If you do not agree to any terms of the license agreement,'); Writeln(' do not use the software.'); Writeln('[*] Installing...'); if ParamStr(2) = '-s' then WrapPath := '%SystemRoot%\system32\rdpwrap.dll' else WrapPath := '%ProgramFiles%\RDP Wrapper\rdpwrap.dll'; if Arch = 64 then DisableWowRedirection; CheckTermsrvVersion; CheckTermsrvProcess; Writeln('[*] Extracting files...'); Online := (ParamStr(2) = '-o') or (ParamStr(3) = '-o'); ExtractFiles; Writeln('[*] Configuring service library...'); SetWrapperDll; Writeln('[*] Checking dependencies...'); CheckTermsrvDependencies; Writeln('[*] Terminating service...'); AddPrivilege('SeDebugPrivilege'); KillProcess(TermServicePID); Sleep(1000); if Length(ShareSvc) > 0 then for I := 0 to Length(ShareSvc) - 1 do SvcStart(ShareSvc[I]); Sleep(500); SvcStart(TermService); Sleep(500); Writeln('[*] Configuring registry...'); TSConfigRegistry(True); Writeln('[*] Configuring firewall...'); TSConfigFirewall(True); Writeln('[+] Successfully installed.'); if Arch = 64 then RevertWowRedirection; end; if ParamStr(1) = '-u' then begin if not Installed then begin Writeln('[*] RDP Wrapper Library is not installed.'); Halt(ERROR_INVALID_FUNCTION); end; Writeln('[*] Uninstalling...'); if Arch = 64 then DisableWowRedirection; CheckTermsrvProcess; Writeln('[*] Resetting service library...'); ResetServiceDll; Writeln('[*] Terminating service...'); AddPrivilege('SeDebugPrivilege'); KillProcess(TermServicePID); Sleep(1000); Writeln('[*] Removing files...'); DeleteFiles; if Length(ShareSvc) > 0 then for I := 0 to Length(ShareSvc) - 1 do SvcStart(ShareSvc[I]); Sleep(500); SvcStart(TermService); Sleep(500); if ParamStr(2) <> '-k' then begin Writeln('[*] Configuring registry...'); TSConfigRegistry(False); Writeln('[*] Configuring firewall...'); TSConfigFirewall(False); end; if Arch = 64 then RevertWowRedirection; Writeln('[+] Successfully uninstalled.'); end; if ParamStr(1) = '-w' then begin if not Installed then begin Writeln('[*] RDP Wrapper Library is not installed.'); Halt(ERROR_INVALID_FUNCTION); end; Writeln('[*] Checking for updates...'); CheckUpdate; end; if ParamStr(1) = '-r' then begin Writeln('[*] Restarting...'); CheckTermsrvProcess; Writeln('[*] Terminating service...'); AddPrivilege('SeDebugPrivilege'); KillProcess(TermServicePID); Sleep(1000); if Length(ShareSvc) > 0 then for I := 0 to Length(ShareSvc) - 1 do SvcStart(ShareSvc[I]); Sleep(500); SvcStart(TermService); Writeln('[+] Done.'); end; end. ================================================ FILE: src-installer/RDPWInst.dproj ================================================  {AF9BEAA3-99CD-4B2E-BE67-3F3BD27B961A} 12.0 RDPWInst.dpr Release DCC32 true true Base true true Base true ..\bin\ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias) ..\bin\RDPWInst.exe 00400000 x86 false RELEASE;$(DCC_Define) 0 false DEBUG;$(DCC_Define) MainSource Base Cfg_1 Base Cfg_2 Base Delphi.Personality.12 False True False -w False False 1 0 0 0 False False False False False 1049 1251 1.0.0.0 1.0.0.0 Embarcadero C++Builder Office 2000 Servers Package Embarcadero C++Builder Office XP Servers Package Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components RDPWInst.dpr 12 ================================================ FILE: src-rdpcheck/MainUnit.dfm ================================================ object Frm: TFrm Left = 0 Top = 0 BorderIcons = [biSystemMenu, biMinimize] BorderStyle = bsSingle Caption = 'Local RDP Checker' ClientHeight = 480 ClientWidth = 640 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poDesktopCenter OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object RDP: TMsRdpClient2 Left = 0 Top = 0 Width = 640 Height = 480 TabOrder = 0 OnDisconnected = RDPDisconnected ControlData = {0003000008000200000000000B0000000B000000} end end ================================================ FILE: src-rdpcheck/MainUnit.pas ================================================ { Copyright 2015 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. } unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleServer, MSTSCLib_TLB, OleCtrls, Registry; type TFrm = class(TForm) RDP: TMsRdpClient2; procedure RDPDisconnected(ASender: TObject; discReason: Integer); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Frm: TFrm; SecurityLayer, UserAuthentication: DWORD; implementation {$R *.dfm} procedure TFrm.FormCreate(Sender: TObject); var Reg: TRegistry; begin RDP.DisconnectedText := 'Disconnected.'; RDP.ConnectingText := 'Connecting...'; RDP.ConnectedStatusText := 'Connected.'; RDP.UserName := ''; RDP.Server := '127.0.0.2'; Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp', True) then begin try SecurityLayer := Reg.ReadInteger('SecurityLayer'); UserAuthentication := Reg.ReadInteger('UserAuthentication'); Reg.WriteInteger('SecurityLayer', 0); Reg.WriteInteger('UserAuthentication', 0); except end; Reg.CloseKey; end; if Reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp') then begin try RDP.AdvancedSettings2.RDPPort := Reg.ReadInteger('PortNumber'); except end; Reg.CloseKey; end; Reg.Free; Sleep(1000); RDP.Connect; end; procedure TFrm.RDPDisconnected(ASender: TObject; discReason: Integer); var ErrStr: String; Reg: TRegistry; begin case discReason of 1: ErrStr := 'Local disconnection.'; 2: ErrStr := 'Disconnected by user.'; 3: ErrStr := 'Disconnected by server.'; $904: ErrStr := 'Socket closed.'; $C08: ErrStr := 'Decompress error.'; $108: ErrStr := 'Connection timed out.'; $C06: ErrStr := 'Decryption error.'; $104: ErrStr := 'DNS name lookup failure.'; $508: ErrStr := 'DNS lookup failed.'; $B06: ErrStr := 'Encryption error.'; $604: ErrStr := 'Windows Sockets gethostbyname() call failed.'; $208: ErrStr := 'Host not found error.'; $408: ErrStr := 'Internal error.'; $906: ErrStr := 'Internal security error.'; $A06: ErrStr := 'Internal security error.'; $506: ErrStr := 'The encryption method specified is not valid.'; $804: ErrStr := 'Bad IP address specified.'; $606: ErrStr := 'Server security data is not valid.'; $406: ErrStr := 'Security data is not valid.'; $308: ErrStr := 'The IP address specified is not valid.'; $808: ErrStr := 'License negotiation failed.'; $908: ErrStr := 'Licensing time-out.'; $106: ErrStr := 'Out of memory.'; $206: ErrStr := 'Out of memory.'; $306: ErrStr := 'Out of memory.'; $706: ErrStr := 'Failed to unpack server certificate.'; $204: ErrStr := 'Socket connection failed.'; $404: ErrStr := 'Windows Sockets recv() call failed.'; $704: ErrStr := 'Time-out occurred.'; $608: ErrStr := 'Internal timer error.'; $304: ErrStr := 'Windows Sockets send() call failed.'; $B07: ErrStr := 'The account is disabled.'; $E07: ErrStr := 'The account is expired.'; $D07: ErrStr := 'The account is locked out.'; $C07: ErrStr := 'The account is restricted.'; $1B07: ErrStr := 'The received certificate is expired.'; $1607: ErrStr := 'The policy does not support delegation of credentials to the target server.'; $2107: ErrStr := 'The server authentication policy does not allow connection requests using saved credentials. The user must enter new credentials.'; $807: ErrStr := 'Login failed.'; $1807: ErrStr := 'No authority could be contacted for authentication. The domain name of the authenticating party could be wrong, the domain could be unreachable, or there might have been a trust relationship failure.'; $A07: ErrStr := 'The specified user has no account.'; $F07: ErrStr := 'The password is expired.'; $1207: ErrStr := 'The user password must be changed before logging on for the first time.'; $1707: ErrStr := 'Delegation of credentials to the target server is not allowed unless mutual authentication has been achieved.'; $2207: ErrStr := 'The smart card is blocked.'; $1C07: ErrStr := 'An incorrect PIN was presented to the smart card.'; $B09: ErrStr := 'Network Level Authentication is required, run RDPCheck as administrator.'; $708: ErrStr := 'RDP is working, but the client doesn''t allow loopback connections. Try to connect to your PC from another device in the network.'; else ErrStr := 'Unknown code 0x'+IntToHex(discReason, 1); end; if (discReason > 2) then MessageBox(Handle, PWideChar(ErrStr), 'Disconnected', mb_Ok or mb_IconError); Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp', True) then begin try Reg.WriteInteger('SecurityLayer', SecurityLayer); Reg.WriteInteger('UserAuthentication', UserAuthentication); except end; Reg.CloseKey; end; Reg.Free; Halt(0); end; end. ================================================ FILE: src-rdpcheck/RDPCheck.dpr ================================================ { Copyright 2014 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. } program RDPCheck; uses Forms, MainUnit in 'MainUnit.pas' {Frm}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.Title := 'Local RDP Checker'; Application.CreateForm(TFrm, Frm); Application.Run; end. ================================================ FILE: src-rdpcheck/RDPCheck.dproj ================================================  {90AE83F6-26B8-45D4-92FE-CF4ACCDE9F68} 12.0 RDPCheck.dpr Release DCC32 true true Base true true Base true ..\bin\ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias) ..\bin\RDPCheck.exe 00400000 x86 false RELEASE;$(DCC_Define) 0 false DEBUG;$(DCC_Define) MainSource
Frm
Base Cfg_1 Base Cfg_2 Base
Delphi.Personality.12 False True False True False 2 2 0 0 False False False False False 1033 1252 Stas'M Corp. Local RDP Checker 2.2.0.0 RDPCheck Copyright © Stas'M Corp. 2015 Stas'M Corp. RDPCheck.exe RDP Host Support 1.6.0.0 http://stascorp.com Embarcadero C++Builder Office 2000 Servers Package Embarcadero C++Builder Office XP Servers Package Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components RDPCheck.dpr 12
================================================ FILE: src-rdpconfig/LicenseUnit.dfm ================================================ object LicenseForm: TLicenseForm Left = 0 Top = 0 BorderIcons = [] BorderStyle = bsDialog Caption = 'License Agreement' ClientHeight = 344 ClientWidth = 386 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poOwnerFormCenter PixelsPerInch = 96 TextHeight = 13 object mText: TMemo Left = 8 Top = 8 Width = 370 Height = 297 ReadOnly = True ScrollBars = ssBoth TabOrder = 0 WordWrap = False end object bAccept: TButton Left = 115 Top = 311 Width = 75 Height = 25 Caption = '&Accept' ModalResult = 1 TabOrder = 1 end object bDecline: TButton Left = 196 Top = 311 Width = 75 Height = 25 Caption = '&Decline' ModalResult = 2 TabOrder = 2 end end ================================================ FILE: src-rdpconfig/LicenseUnit.pas ================================================ { Copyright 2014 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. } unit LicenseUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TLicenseForm = class(TForm) mText: TMemo; bAccept: TButton; bDecline: TButton; private { Private declarations } public { Public declarations } end; var LicenseForm: TLicenseForm; implementation {$R *.dfm} end. ================================================ FILE: src-rdpconfig/MainUnit.dfm ================================================ object MainForm: TMainForm Left = 0 Top = 0 BorderStyle = bsDialog Caption = 'RDP Wrapper Configuration' ClientHeight = 314 ClientWidth = 404 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False Position = poDesktopCenter OnCloseQuery = FormCloseQuery OnCreate = FormCreate OnDestroy = FormDestroy PixelsPerInch = 96 TextHeight = 13 object bOK: TButton Left = 40 Top = 281 Width = 75 Height = 25 Caption = 'OK' ModalResult = 1 TabOrder = 4 OnClick = bOKClick end object bCancel: TButton Left = 121 Top = 281 Width = 75 Height = 25 Caption = 'Cancel' ModalResult = 2 TabOrder = 5 OnClick = bCancelClick end object bApply: TButton Left = 202 Top = 281 Width = 75 Height = 25 Caption = 'Apply' Enabled = False TabOrder = 6 OnClick = bApplyClick end object rgNLA: TRadioGroup Left = 202 Top = 89 Width = 194 Height = 73 Caption = 'Authentication Mode' Items.Strings = ( 'GUI Authentication Only' 'Default RDP Authentication' 'Network Level Authentication') TabOrder = 2 OnClick = cbAllowTSConnectionsClick end object rgShadow: TRadioGroup Left = 202 Top = 168 Width = 194 Height = 105 Caption = 'Session Shadowing Mode' Items.Strings = ( 'Disable Shadowing' 'Full access with user'#39's permission' 'Full access without permission' 'View only with user'#39's permission' 'View only without permission') TabOrder = 3 OnClick = cbAllowTSConnectionsClick end object bLicense: TButton Left = 283 Top = 281 Width = 87 Height = 25 Caption = 'View license...' TabOrder = 7 OnClick = bLicenseClick end object gbDiag: TGroupBox Left = 8 Top = 6 Width = 388 Height = 77 Caption = 'Diagnostics' TabOrder = 0 object lListener: TLabel Left = 11 Top = 55 Width = 70 Height = 13 Caption = 'Listener state:' end object lService: TLabel Left = 11 Top = 36 Width = 67 Height = 13 Caption = 'Service state:' end object lsListener: TLabel Left = 91 Top = 55 Width = 44 Height = 13 Caption = 'Unknown' end object lsService: TLabel Left = 91 Top = 36 Width = 44 Height = 13 Caption = 'Unknown' end object lsTSVer: TLabel Left = 226 Top = 36 Width = 44 Height = 13 Caption = 'Unknown' end object lsWrapper: TLabel Left = 91 Top = 17 Width = 44 Height = 13 Caption = 'Unknown' end object lsWrapVer: TLabel Left = 226 Top = 17 Width = 44 Height = 13 Caption = 'Unknown' end object lTSVer: TLabel Left = 202 Top = 36 Width = 20 Height = 13 Caption = 'ver.' end object lWrapper: TLabel Left = 11 Top = 17 Width = 74 Height = 13 Caption = 'Wrapper state:' end object lWrapVer: TLabel Left = 202 Top = 17 Width = 20 Height = 13 Caption = 'ver.' end object lsSuppVer: TLabel Left = 202 Top = 55 Width = 70 Height = 13 Caption = '[support level]' end end object gbGeneral: TGroupBox Left = 8 Top = 89 Width = 188 Height = 184 Caption = 'General Settings' TabOrder = 1 object lRDPPort: TLabel Left = 8 Top = 44 Width = 47 Height = 13 Caption = 'RDP port:' end object cbAllowTSConnections: TCheckBox Left = 8 Top = 18 Width = 132 Height = 17 Caption = 'Enable Remote Desktop' TabOrder = 0 OnClick = cbAllowTSConnectionsClick end object cbSingleSessionPerUser: TCheckBox Left = 8 Top = 69 Width = 129 Height = 17 Caption = 'Single session per user' TabOrder = 2 OnClick = cbAllowTSConnectionsClick end object cbHideUsers: TCheckBox Left = 8 Top = 92 Width = 149 Height = 17 Caption = 'Hide users on logon screen' TabOrder = 3 OnClick = cbAllowTSConnectionsClick end object seRDPPort: TSpinEdit Left = 61 Top = 41 Width = 62 Height = 22 MaxValue = 65535 MinValue = 0 TabOrder = 1 Value = 0 OnChange = seRDPPortChange end object cbCustomPrg: TCheckBox Left = 8 Top = 115 Width = 169 Height = 17 Caption = 'Allow to start custom programs' TabOrder = 4 OnClick = cbAllowTSConnectionsClick end end object Timer: TTimer Interval = 250 OnTimer = TimerTimer Left = 352 Top = 27 end end ================================================ FILE: src-rdpconfig/MainUnit.pas ================================================ { Copyright 2017 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. } unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, ExtCtrls, Registry, WinSvc; type TMainForm = class(TForm) bOK: TButton; bCancel: TButton; bApply: TButton; cbSingleSessionPerUser: TCheckBox; rgNLA: TRadioGroup; cbAllowTSConnections: TCheckBox; rgShadow: TRadioGroup; seRDPPort: TSpinEdit; lRDPPort: TLabel; lService: TLabel; lListener: TLabel; lWrapper: TLabel; lsListener: TLabel; lsService: TLabel; lsWrapper: TLabel; Timer: TTimer; lTSVer: TLabel; lsTSVer: TLabel; lWrapVer: TLabel; lsWrapVer: TLabel; bLicense: TButton; gbDiag: TGroupBox; lsSuppVer: TLabel; cbHideUsers: TCheckBox; gbGeneral: TGroupBox; cbCustomPrg: TCheckBox; procedure FormCreate(Sender: TObject); procedure cbAllowTSConnectionsClick(Sender: TObject); procedure seRDPPortChange(Sender: TObject); procedure bApplyClick(Sender: TObject); procedure bCancelClick(Sender: TObject); procedure bOKClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure bLicenseClick(Sender: TObject); procedure TimerTimer(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } function ExecWait(Cmdline: String): Boolean; procedure ReadSettings; procedure WriteSettings; end; FILE_VERSION = record Version: record case Boolean of True: (dw: DWORD); False: (w: record Minor, Major: Word; end;) end; Release, Build: Word; bDebug, bPrerelease, bPrivate, bSpecial: Boolean; end; WTS_SESSION_INFOW = record SessionId: DWORD; Name: packed array [0..33] of WideChar; State: DWORD; end; WTS_SESSION = Array[0..0] of WTS_SESSION_INFOW; PWTS_SESSION_INFOW = ^WTS_SESSION; const winstadll = 'winsta.dll'; var MainForm: TMainForm; Ready: Boolean = False; Arch: Byte; OldWow64RedirectionValue: LongBool; OldPort: Word; INI: String; function WinStationEnumerateW(hServer: THandle; var ppSessionInfo: PWTS_SESSION_INFOW; var pCount: DWORD): BOOL; stdcall; external winstadll name 'WinStationEnumerateW'; function WinStationFreeMemory(P: Pointer): BOOL; stdcall; external winstadll; implementation {$R *.dfm} {$R resource.res} uses LicenseUnit; function ExpandPath(Path: String): String; var Str: Array[0..511] of Char; begin Result := ''; FillChar(Str, 512, 0); if Arch = 64 then Path := StringReplace(Path, '%ProgramFiles%', '%ProgramW6432%', [rfReplaceAll, rfIgnoreCase]); if ExpandEnvironmentStrings(PWideChar(Path), Str, 512) > 0 then Result := Str; end; function DisableWowRedirection: Boolean; type TFunc = function(var Wow64FsEnableRedirection: LongBool): LongBool; stdcall; var hModule: THandle; Wow64DisableWow64FsRedirection: TFunc; begin Result := False; hModule := GetModuleHandle(kernel32); if hModule <> 0 then Wow64DisableWow64FsRedirection := GetProcAddress(hModule, 'Wow64DisableWow64FsRedirection') else Exit; if @Wow64DisableWow64FsRedirection <> nil then Result := Wow64DisableWow64FsRedirection(OldWow64RedirectionValue); end; function RevertWowRedirection: Boolean; type TFunc = function(var Wow64RevertWow64FsRedirection: LongBool): LongBool; stdcall; var hModule: THandle; Wow64RevertWow64FsRedirection: TFunc; begin Result := False; hModule := GetModuleHandle(kernel32); if hModule <> 0 then Wow64RevertWow64FsRedirection := GetProcAddress(hModule, 'Wow64RevertWow64FsRedirection') else Exit; if @Wow64RevertWow64FsRedirection <> nil then Result := Wow64RevertWow64FsRedirection(OldWow64RedirectionValue); end; function GetFileVersion(const FileName: TFileName; var FileVersion: FILE_VERSION): Boolean; type VS_VERSIONINFO = record wLength, wValueLength, wType: Word; szKey: Array[1..16] of WideChar; Padding1: Word; Value: VS_FIXEDFILEINFO; Padding2, Children: Word; end; PVS_VERSIONINFO = ^VS_VERSIONINFO; const VFF_DEBUG = 1; VFF_PRERELEASE = 2; VFF_PRIVATE = 8; VFF_SPECIAL = 32; var hFile: HMODULE; hResourceInfo: HRSRC; VersionInfo: PVS_VERSIONINFO; begin Result := False; hFile := LoadLibraryEx(PWideChar(FileName), 0, LOAD_LIBRARY_AS_DATAFILE); if hFile = 0 then Exit; hResourceInfo := FindResource(hFile, PWideChar(1), PWideChar($10)); if hResourceInfo = 0 then Exit; VersionInfo := Pointer(LoadResource(hFile, hResourceInfo)); if VersionInfo = nil then Exit; FileVersion.Version.dw := VersionInfo.Value.dwFileVersionMS; FileVersion.Release := Word(VersionInfo.Value.dwFileVersionLS shr 16); FileVersion.Build := Word(VersionInfo.Value.dwFileVersionLS); FileVersion.bDebug := (VersionInfo.Value.dwFileFlags and VFF_DEBUG) = VFF_DEBUG; FileVersion.bPrerelease := (VersionInfo.Value.dwFileFlags and VFF_PRERELEASE) = VFF_PRERELEASE; FileVersion.bPrivate := (VersionInfo.Value.dwFileFlags and VFF_PRIVATE) = VFF_PRIVATE; FileVersion.bSpecial := (VersionInfo.Value.dwFileFlags and VFF_SPECIAL) = VFF_SPECIAL; FreeLibrary(hFile); Result := True; end; function IsWrapperInstalled(var WrapperPath: String): ShortInt; var TermServiceHost, TermServicePath: String; Reg: TRegistry; begin Result := -1; WrapperPath := ''; Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; if not Reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services\TermService') then begin Reg.Free; Exit; end; TermServiceHost := Reg.ReadString('ImagePath'); Reg.CloseKey; if Pos('svchost.exe', LowerCase(TermServiceHost)) = 0 then begin Result := 2; Reg.Free; Exit; end; if not Reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services\TermService\Parameters') then begin Reg.Free; Exit; end; TermServicePath := Reg.ReadString('ServiceDll'); Reg.CloseKey; Reg.Free; if (Pos('termsrv.dll', LowerCase(TermServicePath)) = 0) and (Pos('rdpwrap.dll', LowerCase(TermServicePath)) = 0) then begin Result := 2; Exit; end; if Pos('rdpwrap.dll', LowerCase(TermServicePath)) > 0 then begin WrapperPath := TermServicePath; Result := 1; end else Result := 0; end; function GetTermSrvState: ShortInt; type SERVICE_STATUS_PROCESS = record dwServiceType, dwCurrentState, dwControlsAccepted, dwWin32ExitCode, dwServiceSpecificExitCode, dwCheckPoint, dwWaitHint, dwProcessId, dwServiceFlags: DWORD; end; PSERVICE_STATUS_PROCESS = ^SERVICE_STATUS_PROCESS; const SvcName = 'TermService'; var hSC: SC_HANDLE; hSvc: THandle; lpServiceStatusProcess: PSERVICE_STATUS_PROCESS; Buf: Pointer; cbBufSize, pcbBytesNeeded: Cardinal; begin Result := -1; hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT); if hSC = 0 then Exit; hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_QUERY_STATUS); if hSvc = 0 then begin CloseServiceHandle(hSC); Exit; end; if QueryServiceStatusEx(hSvc, SC_STATUS_PROCESS_INFO, nil, 0, pcbBytesNeeded) then Exit; cbBufSize := pcbBytesNeeded; GetMem(Buf, cbBufSize); if not QueryServiceStatusEx(hSvc, SC_STATUS_PROCESS_INFO, Buf, cbBufSize, pcbBytesNeeded) then begin FreeMem(Buf, cbBufSize); CloseServiceHandle(hSvc); CloseServiceHandle(hSC); Exit; end else begin lpServiceStatusProcess := Buf; Result := ShortInt(lpServiceStatusProcess^.dwCurrentState); end; FreeMem(Buf, cbBufSize); CloseServiceHandle(hSvc); CloseServiceHandle(hSC); end; function IsListenerWorking: Boolean; var pCount: DWORD; SessionInfo: PWTS_SESSION_INFOW; I: Integer; begin Result := False; if not WinStationEnumerateW(0, SessionInfo, pCount) then Exit; for I := 0 to pCount - 1 do if SessionInfo^[I].Name = 'RDP-Tcp' then begin Result := True; Break; end; WinStationFreeMemory(SessionInfo); end; function ExtractResText(ResName: String): String; var ResStream: TResourceStream; Str: TStringList; begin ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA); Str := TStringList.Create; try Str.LoadFromStream(ResStream); except end; ResStream.Free; Result := Str.Text; Str.Free; end; function TMainForm.ExecWait(Cmdline: String): Boolean; var si: STARTUPINFO; pi: PROCESS_INFORMATION; begin Result := False; ZeroMemory(@si, sizeof(si)); si.cb := sizeof(si); si.dwFlags := STARTF_USESHOWWINDOW; si.wShowWindow := SW_HIDE; UniqueString(Cmdline); if not CreateProcess(nil, PWideChar(Cmdline), nil, nil, True, 0, nil, nil, si, pi) then begin MessageBox(Handle, PWideChar('CreateProcess error (code: ' + IntToStr(GetLastError) + ').'), 'Error', MB_ICONERROR or MB_OK); Exit; end; CloseHandle(pi.hThread); WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); Result := True; end; procedure TMainForm.ReadSettings; var Reg: TRegistry; SecurityLayer, UserAuthentication: Integer; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Control\Terminal Server'); try cbAllowTSConnections.Checked := not Reg.ReadBool('fDenyTSConnections'); except end; try cbSingleSessionPerUser.Checked := Reg.ReadBool('fSingleSessionPerUser'); except end; try cbCustomPrg.Checked := Reg.ReadBool('HonorLegacySettings'); except end; Reg.CloseKey; Reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp'); seRDPPort.Value := 3389; try seRDPPort.Value := Reg.ReadInteger('PortNumber'); except end; OldPort := seRDPPort.Value; SecurityLayer := 0; UserAuthentication := 0; try SecurityLayer := Reg.ReadInteger('SecurityLayer'); UserAuthentication := Reg.ReadInteger('UserAuthentication'); except end; if (SecurityLayer = 0) and (UserAuthentication = 0) then rgNLA.ItemIndex := 0; if (SecurityLayer = 1) and (UserAuthentication = 0) then rgNLA.ItemIndex := 1; if (SecurityLayer = 2) and (UserAuthentication = 1) then rgNLA.ItemIndex := 2; try rgShadow.ItemIndex := Reg.ReadInteger('Shadow'); except end; Reg.CloseKey; Reg.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'); try cbHideUsers.Checked := Reg.ReadBool('dontdisplaylastusername'); except end; Reg.CloseKey; Reg.Free; end; procedure TMainForm.WriteSettings; var Reg: TRegistry; SecurityLayer, UserAuthentication: Integer; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server', True); try Reg.WriteBool('fDenyTSConnections', not cbAllowTSConnections.Checked); except end; try Reg.WriteBool('fSingleSessionPerUser', cbSingleSessionPerUser.Checked); except end; try Reg.WriteBool('HonorLegacySettings', cbCustomPrg.Checked); except end; Reg.CloseKey; Reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp', True); try Reg.WriteInteger('PortNumber', seRDPPort.Value); except end; if OldPort <> seRDPPort.Value then begin OldPort := seRDPPort.Value; ExecWait('netsh advfirewall firewall set rule name="Remote Desktop" new localport=' + IntToStr(OldPort)); end; case rgNLA.ItemIndex of 0: begin SecurityLayer := 0; UserAuthentication := 0; end; 1: begin SecurityLayer := 1; UserAuthentication := 0; end; 2: begin SecurityLayer := 2; UserAuthentication := 1; end; else begin SecurityLayer := -1; UserAuthentication := -1; end; end; if SecurityLayer >= 0 then begin try Reg.WriteInteger('SecurityLayer', SecurityLayer); Reg.WriteInteger('UserAuthentication', UserAuthentication); except end; end; if rgShadow.ItemIndex >= 0 then begin try Reg.WriteInteger('Shadow', rgShadow.ItemIndex); except end; end; Reg.CloseKey; Reg.OpenKey('\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services', True); if rgShadow.ItemIndex >= 0 then begin try Reg.WriteInteger('Shadow', rgShadow.ItemIndex); except end; end; Reg.CloseKey; Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System', True); try Reg.WriteBool('dontdisplaylastusername', cbHideUsers.Checked); except end; Reg.CloseKey; Reg.Free; end; function CheckSupport(FV: FILE_VERSION): Byte; var VerTxt: String; begin Result := 0; if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then Result := 1; if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then Result := 1; VerTxt := Format('%d.%d.%d.%d', [FV.Version.w.Major, FV.Version.w.Minor, FV.Release, FV.Build]); if Pos('[' + VerTxt + ']', INI) > 0 then Result := 2; end; procedure TMainForm.TimerTimer(Sender: TObject); var WrapperPath, INIPath: String; FV: FILE_VERSION; L: TStringList; CheckSupp: Boolean; begin CheckSupp := False; case IsWrapperInstalled(WrapperPath) of -1: begin lsWrapper.Caption := 'Unknown'; lsWrapper.Font.Color := clGrayText; end; 0: begin lsWrapper.Caption := 'Not installed'; lsWrapper.Font.Color := clGrayText; end; 1: begin lsWrapper.Caption := 'Installed'; lsWrapper.Font.Color := clGreen; CheckSupp := True; INIPath := ExtractFilePath(ExpandPath(WrapperPath)) + 'rdpwrap.ini'; if not FileExists(INIPath) then CheckSupp := False; end; 2: begin lsWrapper.Caption := '3rd-party'; lsWrapper.Font.Color := clRed; end; end; case GetTermSrvState of -1, 0: begin lsService.Caption := 'Unknown'; lsService.Font.Color := clGrayText; end; SERVICE_STOPPED: begin lsService.Caption := 'Stopped'; lsService.Font.Color := clRed; end; SERVICE_START_PENDING: begin lsService.Caption := 'Starting...'; lsService.Font.Color := clGrayText; end; SERVICE_STOP_PENDING: begin lsService.Caption := 'Stopping...'; lsService.Font.Color := clGrayText; end; SERVICE_RUNNING: begin lsService.Caption := 'Running'; lsService.Font.Color := clGreen; end; SERVICE_CONTINUE_PENDING: begin lsService.Caption := 'Resuming...'; lsService.Font.Color := clGrayText; end; SERVICE_PAUSE_PENDING: begin lsService.Caption := 'Suspending...'; lsService.Font.Color := clGrayText; end; SERVICE_PAUSED: begin lsService.Caption := 'Suspended'; lsService.Font.Color := clWindowText; end; end; if IsListenerWorking then begin lsListener.Caption := 'Listening'; lsListener.Font.Color := clGreen; end else begin lsListener.Caption := 'Not listening'; lsListener.Font.Color := clRed; end; if WrapperPath = '' then begin lsWrapVer.Caption := 'N/A'; lsWrapVer.Font.Color := clGrayText; end else if not GetFileVersion(ExpandPath(WrapperPath), FV) then begin lsWrapVer.Caption := 'N/A'; lsWrapVer.Font.Color := clGrayText; end else begin lsWrapVer.Caption := IntToStr(FV.Version.w.Major)+'.'+ IntToStr(FV.Version.w.Minor)+'.'+ IntToStr(FV.Release)+'.'+ IntToStr(FV.Build); lsWrapVer.Font.Color := clWindowText; end; if not GetFileVersion('termsrv.dll', FV) then begin lsTSVer.Caption := 'N/A'; lsTSVer.Font.Color := clGrayText; end else begin lsTSVer.Caption := IntToStr(FV.Version.w.Major)+'.'+ IntToStr(FV.Version.w.Minor)+'.'+ IntToStr(FV.Release)+'.'+ IntToStr(FV.Build); lsTSVer.Font.Color := clWindowText; lsSuppVer.Visible := CheckSupp; if CheckSupp then begin if INI = '' then begin L := TStringList.Create; try L.LoadFromFile(INIPath); except end; INI := L.Text; L.Free; end; case CheckSupport(FV) of 0: begin lsSuppVer.Caption := '[not supported]'; lsSuppVer.Font.Color := clRed; end; 1: begin lsSuppVer.Caption := '[supported partially]'; lsSuppVer.Font.Color := clOlive; end; 2: begin lsSuppVer.Caption := '[fully supported]'; lsSuppVer.Font.Color := clGreen; end; end; end; end; end; procedure TMainForm.bLicenseClick(Sender: TObject); begin LicenseForm.mText.Text := ExtractResText('LICENSE'); if LicenseForm.ShowModal <> mrOk then Halt(0); end; procedure TMainForm.cbAllowTSConnectionsClick(Sender: TObject); begin if Ready then bApply.Enabled := True; end; procedure TMainForm.seRDPPortChange(Sender: TObject); begin if Ready then bApply.Enabled := True; end; procedure TMainForm.FormCreate(Sender: TObject); var SI: TSystemInfo; begin GetNativeSystemInfo(SI); case SI.wProcessorArchitecture of 0: Arch := 32; 6: Arch := 64; // Itanium-based x64 9: Arch := 64; // Intel/AMD x64 else Arch := 0; end; if Arch = 64 then DisableWowRedirection; ReadSettings; Ready := True; end; procedure TMainForm.FormDestroy(Sender: TObject); begin if Arch = 64 then RevertWowRedirection; end; procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if bApply.Enabled then CanClose := MessageBox(Handle, 'Settings are not saved. Do you want to exit?', 'Warning', mb_IconWarning or mb_YesNo) = mrYes; end; procedure TMainForm.bOKClick(Sender: TObject); begin if bApply.Enabled then begin WriteSettings; bApply.Enabled := False; end; Close; end; procedure TMainForm.bCancelClick(Sender: TObject); begin Close; end; procedure TMainForm.bApplyClick(Sender: TObject); begin WriteSettings; bApply.Enabled := False; end; end. ================================================ FILE: src-rdpconfig/RDPConf.dpr ================================================ { Copyright 2014 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. } program RDPConf; uses Forms, MainUnit in 'MainUnit.pas' {MainForm}, LicenseUnit in 'LicenseUnit.pas' {LicenseForm}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.Title := 'Remote Desktop Protocol Configuration'; Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TLicenseForm, LicenseForm); Application.Run; end. ================================================ FILE: src-rdpconfig/RDPConf.dproj ================================================  {A7CB4C30-85F5-4D96-B510-6F0CDCF7C2DA} 12.0 RDPConf.dpr Debug DCC32 true true Base true true Base true ..\bin\ WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias) ..\bin\RDPConf.exe 00400000 x86 false RELEASE;$(DCC_Define) 0 false DEBUG;$(DCC_Define) MainSource
MainForm
LicenseForm
Base Cfg_1 Base Cfg_2 Base
Delphi.Personality.12 RDPConf.dpr False True False False False 1 0 0 0 False False False False False 1033 1252 Stas'M Corp. RDP Configuration Program 1.0.0.0 RDPConf Copyright © Stas'M Corp. 2014 Stas'M Corp. RDPConf.exe RDP Host Support 1.4.0.0 http://stascorp.com Embarcadero C++Builder Office 2000 Servers Package Embarcadero C++Builder Office XP Servers Package Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components 12
================================================ FILE: src-x86-binarymaster/LiteINI.pas ================================================ { Copyright 2014 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. } unit LiteINI; interface uses SysUtils; type SList = Array of String; INIValue = record Name: String; Value: String; end; INISection = record Name: String; Values: Array of INIValue; end; INIFile = Array of INISection; procedure SListClear(var List: SList); function SListAppend(var List: SList; S: String): Integer; function SListFind(List: SList; Value: String): Integer; function INIFindSection(INI: INIFile; Section: String): Integer; function INIFindValue(INI: INIFile; Section: Integer; Value: String): Integer; function INIAddSection(var INI: INIFile; Section: String): Integer; function INIAddValue(var INI: INIFile; Section: Integer; ValueName, Value: String): Integer; procedure INIUnload(var INI: INIFile); procedure INILoad(var INI: INIFile; FileName: String); function INISectionExists(INI: INIFile; Section: String): Boolean; function INIValueExists(INI: INIFile; Section: String; Value: String): Boolean; function INIReadSectionLowAPI(INI: INIFile; Section: Integer; var List: SList): Boolean; function INIReadSection(INI: INIFile; Section: String): SList; function INIReadStringLowAPI(INI: INIFile; Section, Value: Integer; var Str: String): Boolean; function INIReadString(INI: INIFile; Section, Value, Default: String): String; function INIReadInt(INI: INIFile; Section, Value: String; Default: Integer): Integer; function INIReadDWord(INI: INIFile; Section, Value: String; Default: Cardinal): Cardinal; function INIReadIntHex(INI: INIFile; Section, Value: String; Default: Integer): Integer; function INIReadDWordHex(INI: INIFile; Section, Value: String; Default: Cardinal): Cardinal; function INIReadBool(INI: INIFile; Section, Value: String; Default: Boolean): Boolean; function INIReadBytes(INI: INIFile; Section, Value: String): TBytes; function INIReadBytesDef(INI: INIFile; Section, Value: String; Default: TBytes): TBytes; implementation procedure SListClear(var List: SList); begin SetLength(List, 0); end; function SListAppend(var List: SList; S: String): Integer; begin SetLength(List, Length(List) + 1); List[Length(List) - 1] := S; Result := Length(List) - 1; end; function SListFind(List: SList; Value: String): Integer; var I: Integer; begin Result := -1; for I := 0 to Length(List) - 1 do if List[I] = Value then begin Result := I; Break; end; end; function INIFindSection(INI: INIFile; Section: String): Integer; var I: Integer; begin Result := -1; for I := 0 to Length(INI) - 1 do if INI[I].Name = Section then begin Result := I; Exit; end; end; function INIFindValue(INI: INIFile; Section: Integer; Value: String): Integer; var I: Integer; begin Result := -1; if (Section < 0) or (Section >= Length(INI)) then Exit; for I := 0 to Length(INI[Section].Values) - 1 do if INI[Section].Values[I].Name = Value then begin Result := I; Exit; end; end; function INIAddSection(var INI: INIFile; Section: String): Integer; begin Result := INIFindSection(INI, Section); if Result >= 0 then Exit; Result := Length(INI); SetLength(INI, Result + 1); INI[Result].Name := Section; SetLength(INI[Result].Values, 0); end; function INIAddValue(var INI: INIFile; Section: Integer; ValueName, Value: String): Integer; var I: Integer; begin Result := -1; if (Section < 0) or (Section >= Length(INI)) then Exit; I := INIFindValue(INI, Section, ValueName); if I = -1 then begin Result := Length(INI[Section].Values); SetLength(INI[Section].Values, Result + 1); INI[Section].Values[Result].Name := ValueName; INI[Section].Values[Result].Value := Value; end else begin INI[Section].Values[I].Value := Value; Result := I; end; end; procedure INIUnload(var INI: INIFile); begin SetLength(INI, 0); end; procedure INILoad(var INI: INIFile; FileName: String); var F: TextFile; S, ValueName, Value: String; INIList: SList; I, Sect: Integer; begin INIUnload(INI); if not FileExists(FileName) then Exit; AssignFile(F, FileName); Reset(F); // Read and filter lines while not EOF(F) do begin Readln(F, S); if (Pos(';', S) <> 1) and (Pos('#', S) <> 1) and ( ((Pos('[', S) > 0) and (Pos(']', S) > 0)) or (Pos('=', S) > 0) ) then SListAppend(INIList, S); end; CloseFile(F); // Parse 2 (parse format) Sect := -1; for I := 0 to Length(INIList) - 1 do begin S := Trim(INIList[I]); if Length(S) >= 2 then if (S[1] = '[') and (S[Length(S)] = ']') then begin S := Trim(Copy(S, 2, Length(S) - 2)); Sect := INIAddSection(INI, S); Continue; end; S := INIList[I]; if Pos('=', S) > 0 then begin ValueName := Trim(Copy(S, 1, Pos('=', S) - 1)); Value := Copy(S, Pos('=', S) + 1, Length(S) - Pos('=', S)); if Sect = -1 then Sect := INIAddSection(INI, ''); INIAddValue(INI, Sect, ValueName, Value); end; end; end; function INISectionExists(INI: INIFile; Section: String): Boolean; begin Result := INIFindSection(INI, Section) > -1; end; function INIValueExists(INI: INIFile; Section: String; Value: String): Boolean; var Sect: Integer; begin Sect := INIFindSection(INI, Section); Result := INIFindValue(INI, Sect, Value) > -1; end; function INIReadSectionLowAPI(INI: INIFile; Section: Integer; var List: SList): Boolean; var I: Integer; begin Result := False; SetLength(List, 0); if (Section < 0) or (Section >= Length(INI)) then Exit; for I := 0 to Length(INI[Section].Values) - 1 do SListAppend(List, INI[Section].Values[I].Name); Result := True; end; function INIReadSection(INI: INIFile; Section: String): SList; var Sect: Integer; begin Sect := INIFindSection(INI, Section); INIReadSectionLowAPI(INI, Sect, Result); end; function INIReadStringLowAPI(INI: INIFile; Section, Value: Integer; var Str: String): Boolean; begin Result := False; if (Section < 0) or (Section >= Length(INI)) then Exit; if (Value < 0) or (Value >= Length(INI[Section].Values)) then Exit; Str := INI[Section].Values[Value].Value; Result := True; end; function INIReadString(INI: INIFile; Section, Value, Default: String): String; var Sect, Val: Integer; begin Sect := INIFindSection(INI, Section); Val := INIFindValue(INI, Sect, Value); if not INIReadStringLowAPI(INI, Sect, Val, Result) then Result := Default; end; function INIReadInt(INI: INIFile; Section, Value: String; Default: Integer): Integer; var S: String; E: Integer; begin S := INIReadString(INI, Section, Value, ''); Val(S, Result, E); if E <> 0 then Result := Default; end; function INIReadDWord(INI: INIFile; Section, Value: String; Default: Cardinal): Cardinal; var S: String; E: Integer; begin S := INIReadString(INI, Section, Value, ''); Val(S, Result, E); if E <> 0 then Result := Default; end; function INIReadIntHex(INI: INIFile; Section, Value: String; Default: Integer): Integer; var S: String; E: Integer; begin S := INIReadString(INI, Section, Value, ''); Val('$'+S, Result, E); if E <> 0 then Result := Default; end; function INIReadDWordHex(INI: INIFile; Section, Value: String; Default: Cardinal): Cardinal; var S: String; E: Integer; begin S := INIReadString(INI, Section, Value, ''); Val('$'+S, Result, E); if E <> 0 then Result := Default; end; function INIReadBool(INI: INIFile; Section, Value: String; Default: Boolean): Boolean; var S: String; I: Cardinal; E: Integer; begin S := INIReadString(INI, Section, Value, ''); Val(S, I, E); if E <> 0 then Result := Default else Result := I > 0; end; function StringToBytes(S: String; var B: TBytes): Boolean; var I: Integer; begin Result := False; if Odd(Length(S)) then Exit; SetLength(B, Length(S) div 2); for I := 0 to Length(B) - 1 do begin B[I] := 0; case S[(I*2)+2] of '0': ; '1': B[I] := B[I] or $1; '2': B[I] := B[I] or $2; '3': B[I] := B[I] or $3; '4': B[I] := B[I] or $4; '5': B[I] := B[I] or $5; '6': B[I] := B[I] or $6; '7': B[I] := B[I] or $7; '8': B[I] := B[I] or $8; '9': B[I] := B[I] or $9; 'A','a': B[I] := B[I] or $A; 'B','b': B[I] := B[I] or $B; 'C','c': B[I] := B[I] or $C; 'D','d': B[I] := B[I] or $D; 'E','e': B[I] := B[I] or $E; 'F','f': B[I] := B[I] or $F; else Exit; end; case S[(I*2)+1] of '0': ; '1': B[I] := B[I] or $10; '2': B[I] := B[I] or $20; '3': B[I] := B[I] or $30; '4': B[I] := B[I] or $40; '5': B[I] := B[I] or $50; '6': B[I] := B[I] or $60; '7': B[I] := B[I] or $70; '8': B[I] := B[I] or $80; '9': B[I] := B[I] or $90; 'A','a': B[I] := B[I] or $A0; 'B','b': B[I] := B[I] or $B0; 'C','c': B[I] := B[I] or $C0; 'D','d': B[I] := B[I] or $D0; 'E','e': B[I] := B[I] or $E0; 'F','f': B[I] := B[I] or $F0; else Exit; end; end; Result := True; end; function INIReadBytes(INI: INIFile; Section, Value: String): TBytes; var S: String; begin S := INIReadString(INI, Section, Value, ''); if not StringToBytes(S, Result) then SetLength(Result, 0); end; function INIReadBytesDef(INI: INIFile; Section, Value: String; Default: TBytes): TBytes; var S: String; begin S := INIReadString(INI, Section, Value, ''); if not StringToBytes(S, Result) then Result := Default; end; end. ================================================ FILE: src-x86-binarymaster/rdpwrap.dpr ================================================ { Copyright 2014 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. } library rdpwrap; uses SysUtils, Windows, TlHelp32, LiteINI; {$R rdpwrap.res} // Hook core definitions type OldCode = packed record One: DWORD; two: Word; end; far_jmp = packed record PushOp: Byte; PushArg: Pointer; RetOp: Byte; end; mov_far_jmp = packed record MovOp: Byte; MovArg: Byte; PushOp: Byte; PushArg: Pointer; RetOp: Byte; end; TTHREADENTRY32 = packed record dwSize: DWORD; cntUsage: DWORD; th32ThreadID: DWORD; th32OwnerProcessID: DWORD; tpBasePri: LongInt; tpDeltaPri: LongInt; dwFlags: DWORD; end; //IntArray = Array of Integer; FILE_VERSION = record Version: record case Boolean of True: (dw: DWORD); False: (w: record Minor, Major: Word; end;) end; Release, Build: Word; bDebug, bPrerelease, bPrivate, bSpecial: Boolean; end; const THREAD_SUSPEND_RESUME = 2; TH32CS_SNAPTHREAD = 4; var INI: INIFile; LogFile: String = '\rdpwrap.txt'; bw: {$if CompilerVersion>=16} NativeUInt {$else} DWORD {$endif}; IsHooked: Boolean = False; // Unhooked import function OpenThread(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwThreadId: DWORD): DWORD; stdcall; external kernel32; function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): DWORD; stdcall; external kernel32; function Thread32First(hSnapshot: THandle; var lpte: TTHREADENTRY32): bool; stdcall; external kernel32; function Thread32Next(hSnapshot: THandle; var lpte: TTHREADENTRY32): bool; stdcall; external kernel32; // Wrapped import var TSMain: function(dwArgc: DWORD; lpszArgv: PWideChar): DWORD; stdcall; TSGlobals: function(lpGlobalData: Pointer): DWORD; stdcall; // Hooked import and vars var SLGetWindowsInformationDWORD: function(pwszValueName: PWideChar; pdwValue: PDWORD): HRESULT; stdcall; TermSrvBase: Pointer; FV: FILE_VERSION; var Stub_SLGetWindowsInformationDWORD: far_jmp; Old_SLGetWindowsInformationDWORD: OldCode; // Main code procedure WriteLog(S: AnsiString); var F: TextFile; begin if not FileExists(LogFile) then Exit; AssignFile(F, LogFile); Append(F); Write(F, S+#13#10); CloseFile(F); end; function GetModuleHandleEx(dwFlags: DWORD; lpModuleName: PWideChar; var phModule: HMODULE): BOOL; stdcall; external kernel32 name 'GetModuleHandleExW'; function GetCurrentModule: HMODULE; const GET_MODULE_HANDLE_EX_FLAG_PIN = 1; GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2; GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; begin Result := 0; GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, @GetCurrentModule, Result); end; function GetBinaryPath: String; var Buf: Array[0..511] of Byte; begin ZeroMemory(@Buf[0], Length(Buf)); GetModuleFileName(GetCurrentModule, PWideChar(@Buf[0]), Length(Buf)); Result := PWideChar(@Buf[0]); end; procedure StopThreads; var h, CurrTh, ThrHandle, CurrPr: DWORD; Thread: TTHREADENTRY32; begin CurrTh := GetCurrentThreadId; CurrPr := GetCurrentProcessId; h := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if h <> INVALID_HANDLE_VALUE then begin Thread.dwSize := SizeOf(TTHREADENTRY32); if Thread32First(h, Thread) then repeat if (Thread.th32ThreadID <> CurrTh) and (Thread.th32OwnerProcessID = CurrPr) then begin ThrHandle := OpenThread(THREAD_SUSPEND_RESUME, false, Thread.th32ThreadID); if ThrHandle > 0 then begin SuspendThread(ThrHandle); CloseHandle(ThrHandle); end; end; until not Thread32Next(h, Thread); CloseHandle(h); end; end; procedure RunThreads; var h, CurrTh, ThrHandle, CurrPr: DWORD; Thread: TTHREADENTRY32; begin CurrTh := GetCurrentThreadId; CurrPr := GetCurrentProcessId; h := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if h <> INVALID_HANDLE_VALUE then begin Thread.dwSize := SizeOf(TTHREADENTRY32); if Thread32First(h, Thread) then repeat if (Thread.th32ThreadID <> CurrTh) and (Thread.th32OwnerProcessID = CurrPr) then begin ThrHandle := OpenThread(THREAD_SUSPEND_RESUME, false, Thread.th32ThreadID); if ThrHandle > 0 then begin ResumeThread(ThrHandle); CloseHandle(ThrHandle); end; end; until not Thread32Next(h, Thread); CloseHandle(h); end; end; function GetModuleAddress(ModuleName: String; ProcessId: DWORD; var BaseAddr: Pointer; var BaseSize: DWORD): Boolean; var hSnap: THandle; md: MODULEENTRY32; begin Result := False; hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId); if hSnap = INVALID_HANDLE_VALUE Then Exit; md.dwSize := SizeOf(MODULEENTRY32); if Module32First(hSnap, md) then begin if LowerCase(ExtractFileName(md.szExePath)) = LowerCase(ModuleName) then begin Result := True; BaseAddr := Pointer(md.modBaseAddr); BaseSize := md.modBaseSize; CloseHandle(hSnap); Exit; end; while Module32Next(hSnap, md) Do begin if LowerCase(ExtractFileName(md.szExePath)) = LowerCase(ModuleName) then begin Result := True; BaseAddr := Pointer(md.modBaseAddr); BaseSize := md.modBaseSize; Break; end; end; end; CloseHandle(hSnap); end; {procedure FindMem(Mem: Pointer; MemSz: DWORD; Buf: Pointer; BufSz: DWORD; From: DWORD; var A: IntArray); var I: Integer; begin SetLength(A, 0); I:=From; if From>0 then Inc(PByte(Mem), From); while I < MemSz - BufSz + 1 do begin if (not IsBadReadPtr(Mem, BufSz)) and (CompareMem(Mem, Buf, BufSz)) then begin SetLength(A, Length(A)+1); A[Length(A)-1] := I; end; Inc(I); Inc(PByte(Mem)); end; end;} function GetModuleVersion(const ModuleName: String; var FileVersion: FILE_VERSION): Boolean; type VS_VERSIONINFO = record wLength, wValueLength, wType: Word; szKey: Array[1..16] of WideChar; Padding1: Word; Value: VS_FIXEDFILEINFO; Padding2, Children: Word; end; PVS_VERSIONINFO = ^VS_VERSIONINFO; const VFF_DEBUG = 1; VFF_PRERELEASE = 2; VFF_PRIVATE = 8; VFF_SPECIAL = 32; var hMod: HMODULE; hResourceInfo: HRSRC; VersionInfo: PVS_VERSIONINFO; begin Result := False; if ModuleName = '' then hMod := GetModuleHandle(nil) else hMod := GetModuleHandle(PWideChar(ModuleName)); if hMod = 0 then Exit; hResourceInfo := FindResource(hMod, PWideChar(1), PWideChar($10)); if hResourceInfo = 0 then Exit; VersionInfo := Pointer(LoadResource(hMod, hResourceInfo)); if VersionInfo = nil then Exit; FileVersion.Version.dw := VersionInfo.Value.dwFileVersionMS; FileVersion.Release := Word(VersionInfo.Value.dwFileVersionLS shr 16); FileVersion.Build := Word(VersionInfo.Value.dwFileVersionLS); FileVersion.bDebug := (VersionInfo.Value.dwFileFlags and VFF_DEBUG) = VFF_DEBUG; FileVersion.bPrerelease := (VersionInfo.Value.dwFileFlags and VFF_PRERELEASE) = VFF_PRERELEASE; FileVersion.bPrivate := (VersionInfo.Value.dwFileFlags and VFF_PRIVATE) = VFF_PRIVATE; FileVersion.bSpecial := (VersionInfo.Value.dwFileFlags and VFF_SPECIAL) = VFF_SPECIAL; Result := True; end; function GetFileVersion(const FileName: String; var FileVersion: FILE_VERSION): Boolean; type VS_VERSIONINFO = record wLength, wValueLength, wType: Word; szKey: Array[1..16] of WideChar; Padding1: Word; Value: VS_FIXEDFILEINFO; Padding2, Children: Word; end; PVS_VERSIONINFO = ^VS_VERSIONINFO; const VFF_DEBUG = 1; VFF_PRERELEASE = 2; VFF_PRIVATE = 8; VFF_SPECIAL = 32; var hFile: HMODULE; hResourceInfo: HRSRC; VersionInfo: PVS_VERSIONINFO; begin Result := False; hFile := LoadLibraryEx(PWideChar(FileName), 0, LOAD_LIBRARY_AS_DATAFILE); if hFile = 0 then Exit; hResourceInfo := FindResource(hFile, PWideChar(1), PWideChar($10)); if hResourceInfo = 0 then Exit; VersionInfo := Pointer(LoadResource(hFile, hResourceInfo)); if VersionInfo = nil then Exit; FileVersion.Version.dw := VersionInfo.Value.dwFileVersionMS; FileVersion.Release := Word(VersionInfo.Value.dwFileVersionLS shr 16); FileVersion.Build := Word(VersionInfo.Value.dwFileVersionLS); FileVersion.bDebug := (VersionInfo.Value.dwFileFlags and VFF_DEBUG) = VFF_DEBUG; FileVersion.bPrerelease := (VersionInfo.Value.dwFileFlags and VFF_PRERELEASE) = VFF_PRERELEASE; FileVersion.bPrivate := (VersionInfo.Value.dwFileFlags and VFF_PRIVATE) = VFF_PRIVATE; FileVersion.bSpecial := (VersionInfo.Value.dwFileFlags and VFF_SPECIAL) = VFF_SPECIAL; Result := True; end; function OverrideSL(ValueName: String; var Value: DWORD): Boolean; begin Result := True; if INIValueExists(INI, 'SLPolicy', ValueName) then begin Value := INIReadDWord(INI, 'SLPolicy', ValueName, 0); Exit; end; Result := False; end; function New_SLGetWindowsInformationDWORD(pwszValueName: PWideChar; pdwValue: PDWORD): HRESULT; stdcall; var dw: DWORD; begin // wrapped SLGetWindowsInformationDWORD function // termsrv.dll will call this function instead of original SLC.dll // Override SL Policy WriteLog('Policy query: ' + pwszValueName); if OverrideSL(pwszValueName, dw) then begin pdwValue^ := dw; Result := S_OK; WriteLog('Policy rewrite: ' + IntToStr(pdwValue^)); Exit; end; // If the requested value name is not defined above // revert to original SL Policy function WriteProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD, @Old_SLGetWindowsInformationDWORD, SizeOf(OldCode), bw); // get result Result := SLGetWindowsInformationDWORD(pwszValueName, pdwValue); if Result = S_OK then WriteLog('Policy result: ' + IntToStr(pdwValue^)) else WriteLog('Policy request failed'); // wrap it back WriteProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD, @Stub_SLGetWindowsInformationDWORD, SizeOf(far_jmp), bw); end; function New_Win8SL(pwszValueName: PWideChar; pdwValue: PDWORD): HRESULT; register; var dw: DWORD; begin // wrapped unexported function SLGetWindowsInformationDWORDWrapper in termsrv.dll // for Windows 8 support // Override SL Policy WriteLog('Policy query: ' + pwszValueName); if OverrideSL(pwszValueName, dw) then begin pdwValue^ := dw; Result := S_OK; WriteLog('Policy rewrite: ' + IntToStr(pdwValue^)); Exit; end; // If the requested value name is not defined above // use function from SLC.dll Result := SLGetWindowsInformationDWORD(pwszValueName, pdwValue); if Result = S_OK then WriteLog('Policy result: ' + IntToStr(pdwValue^)) else WriteLog('Policy request failed'); end; function New_Win8SL_CP(eax: DWORD; pdwValue: PDWORD; ecx: DWORD; pwszValueName: PWideChar): HRESULT; register; begin // wrapped unexported function SLGetWindowsInformationDWORDWrapper in termsrv.dll // for Windows 8 Consumer Preview support Result := New_Win8SL(pwszValueName, pdwValue); end; function New_CSLQuery_Initialize: HRESULT; stdcall; var Sect: String; bServerSku, bRemoteConnAllowed, bFUSEnabled, bAppServerAllowed, bMultimonAllowed, lMaxUserSessions, ulMaxDebugSessions, bInitialized: PDWORD; begin bServerSku := nil; bRemoteConnAllowed := nil; bFUSEnabled := nil; bAppServerAllowed := nil; bMultimonAllowed := nil; lMaxUserSessions := nil; ulMaxDebugSessions := nil; bInitialized := nil; WriteLog('>>> CSLQuery::Initialize'); Sect := IntToStr(FV.Version.w.Major)+'.'+IntToStr(FV.Version.w.Minor)+'.'+ IntToStr(FV.Release)+'.'+IntToStr(FV.Build)+'-SLInit'; if INISectionExists(INI, Sect) then begin bServerSku := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bServerSku.x86', 0)); bRemoteConnAllowed := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bRemoteConnAllowed.x86', 0)); bFUSEnabled := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bFUSEnabled.x86', 0)); bAppServerAllowed := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bAppServerAllowed.x86', 0)); bMultimonAllowed := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bMultimonAllowed.x86', 0)); lMaxUserSessions := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'lMaxUserSessions.x86', 0)); ulMaxDebugSessions := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'ulMaxDebugSessions.x86', 0)); bInitialized := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bInitialized.x86', 0)); end; if bServerSku <> nil then begin bServerSku^ := INIReadDWord(INI, 'SLInit', 'bServerSku', 1); WriteLog('SLInit [0x'+IntToHex(DWORD(bServerSku), 1)+'] bServerSku = ' + IntToStr(bServerSku^)); end; if bRemoteConnAllowed <> nil then begin bRemoteConnAllowed^ := INIReadDWord(INI, 'SLInit', 'bRemoteConnAllowed', 1); WriteLog('SLInit [0x'+IntToHex(DWORD(bRemoteConnAllowed), 1)+'] bRemoteConnAllowed = ' + IntToStr(bRemoteConnAllowed^)); end; if bFUSEnabled <> nil then begin bFUSEnabled^ := INIReadDWord(INI, 'SLInit', 'bFUSEnabled', 1); WriteLog('SLInit [0x'+IntToHex(DWORD(bFUSEnabled), 1)+'] bFUSEnabled = ' + IntToStr(bFUSEnabled^)); end; if bAppServerAllowed <> nil then begin bAppServerAllowed^ := INIReadDWord(INI, 'SLInit', 'bAppServerAllowed', 1); WriteLog('SLInit [0x'+IntToHex(DWORD(bAppServerAllowed), 1)+'] bAppServerAllowed = ' + IntToStr(bAppServerAllowed^)); end; if bMultimonAllowed <> nil then begin bMultimonAllowed^ := INIReadDWord(INI, 'SLInit', 'bMultimonAllowed', 1); WriteLog('SLInit [0x'+IntToHex(DWORD(bMultimonAllowed), 1)+'] bMultimonAllowed = ' + IntToStr(bMultimonAllowed^)); end; if lMaxUserSessions <> nil then begin lMaxUserSessions^ := INIReadDWord(INI, 'SLInit', 'lMaxUserSessions', 0); WriteLog('SLInit [0x'+IntToHex(DWORD(lMaxUserSessions), 1)+'] lMaxUserSessions = ' + IntToStr(lMaxUserSessions^)); end; if ulMaxDebugSessions <> nil then begin ulMaxDebugSessions^ := INIReadDWord(INI, 'SLInit', 'ulMaxDebugSessions', 0); WriteLog('SLInit [0x'+IntToHex(DWORD(ulMaxDebugSessions), 1)+'] ulMaxDebugSessions = ' + IntToStr(ulMaxDebugSessions^)); end; if bInitialized <> nil then begin bInitialized^ := INIReadDWord(INI, 'SLInit', 'bInitialized', 1); WriteLog('SLInit [0x'+IntToHex(DWORD(bInitialized), 1)+'] bInitialized = ' + IntToStr(bInitialized^)); end; Result := S_OK; WriteLog('<<< CSLQuery::Initialize'); end; procedure HookFunctions; var ConfigFile, Sect, FuncName: String; V: DWORD; TS_Handle, SLC_Handle: THandle; TermSrvSize: DWORD; SignPtr: Pointer; I: Integer; PatchList: SList; Patch: Array of TBytes; Jump: far_jmp; MovJump: mov_far_jmp; begin { hook function ^^ (called once) } IsHooked := True; TSMain := nil; TSGlobals := nil; SLGetWindowsInformationDWORD := nil; WriteLog('Loading configuration...'); ConfigFile := ExtractFilePath(GetBinaryPath) + 'rdpwrap.ini'; WriteLog('Configuration file: ' + ConfigFile); INILoad(INI, ConfigFile); if Length(INI) = 0 then begin WriteLog('Error: Failed to load configuration'); Exit; end; LogFile := INIReadString(INI, 'Main', 'LogFile', ExtractFilePath(GetBinaryPath) + 'rdpwrap.txt'); WriteLog('Initializing RDP Wrapper...'); // load termsrv.dll and get functions TS_Handle := LoadLibrary('termsrv.dll'); if TS_Handle = 0 then begin WriteLog('Error: Failed to load Terminal Services library'); Exit; end; TSMain := GetProcAddress(TS_Handle, 'ServiceMain'); TSGlobals := GetProcAddress(TS_Handle, 'SvchostPushServiceGlobals'); WriteLog( 'Base addr: 0x' + IntToHex(TS_Handle, 8) + #13#10 + 'SvcMain: termsrv.dll+0x' + IntToHex(Cardinal(@TSMain) - TS_Handle, 1) + #13#10 + 'SvcGlobals: termsrv.dll+0x' + IntToHex(Cardinal(@TSGlobals) - TS_Handle, 1) ); V := 0; // check termsrv version if GetModuleVersion('termsrv.dll', FV) then V := Byte(FV.Version.w.Minor) or (Byte(FV.Version.w.Major) shl 8) else begin // check NT version // V := GetVersion; // deprecated // V := ((V and $FF) shl 8) or ((V and $FF00) shr 8); end; if V = 0 then begin WriteLog('Error: Failed to detect Terminal Services version'); Exit; end; WriteLog('Version: '+ IntToStr(FV.Version.w.Major)+'.'+ IntToStr(FV.Version.w.Minor)+'.'+ IntToStr(FV.Release)+'.'+ IntToStr(FV.Build)); // temporarily freeze threads WriteLog('Freezing threads...'); StopThreads(); WriteLog('Caching patch codes...'); PatchList := INIReadSection(INI, 'PatchCodes'); SetLength(Patch, Length(PatchList)); for I := 0 to Length(Patch) - 1 do begin Patch[I] := INIReadBytes(INI, 'PatchCodes', PatchList[I]); if Length(Patch[I]) > 16 then // for security reasons SetLength(Patch[I], 16); // not more than 16 bytes end; if (V = $0600) and (INIReadBool(INI, 'Main', 'SLPolicyHookNT60', True)) then begin // Windows Vista // uses SL Policy API (slc.dll) // load slc.dll and hook function SLC_Handle := LoadLibrary('slc.dll'); SLGetWindowsInformationDWORD := GetProcAddress(SLC_Handle, 'SLGetWindowsInformationDWORD'); if @SLGetWindowsInformationDWORD <> nil then begin // rewrite original function to call our function (make hook) WriteLog('Hook SLGetWindowsInformationDWORD'); Stub_SLGetWindowsInformationDWORD.PushOp := $68; Stub_SLGetWindowsInformationDWORD.PushArg := @New_SLGetWindowsInformationDWORD; Stub_SLGetWindowsInformationDWORD.RetOp := $C3; ReadProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD, @Old_SLGetWindowsInformationDWORD, SizeOf(OldCode), bw); WriteProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD, @Stub_SLGetWindowsInformationDWORD, SizeOf(far_jmp), bw); end; end; if (V = $0601) and (INIReadBool(INI, 'Main', 'SLPolicyHookNT61', True)) then begin // Windows 7 // uses SL Policy API (slc.dll) // load slc.dll and hook function SLC_Handle := LoadLibrary('slc.dll'); SLGetWindowsInformationDWORD := GetProcAddress(SLC_Handle, 'SLGetWindowsInformationDWORD'); if @SLGetWindowsInformationDWORD <> nil then begin // rewrite original function to call our function (make hook) WriteLog('Hook SLGetWindowsInformationDWORD'); Stub_SLGetWindowsInformationDWORD.PushOp := $68; Stub_SLGetWindowsInformationDWORD.PushArg := @New_SLGetWindowsInformationDWORD; Stub_SLGetWindowsInformationDWORD.RetOp := $C3; ReadProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD, @Old_SLGetWindowsInformationDWORD, SizeOf(OldCode), bw); WriteProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD, @Stub_SLGetWindowsInformationDWORD, SizeOf(far_jmp), bw); end; end; if V = $0602 then begin // Windows 8 // uses SL Policy internal unexported function // load slc.dll and get function // (will be used on intercepting undefined values) SLC_Handle := LoadLibrary('slc.dll'); SLGetWindowsInformationDWORD := GetProcAddress(SLC_Handle, 'SLGetWindowsInformationDWORD'); end; if V = $0603 then begin // Windows 8.1 // uses SL Policy internal inline code end; if V = $0604 then begin // Windows 10 // uses SL Policy internal inline code end; Sect := IntToStr(FV.Version.w.Major)+'.'+IntToStr(FV.Version.w.Minor)+'.'+ IntToStr(FV.Release)+'.'+IntToStr(FV.Build); if INISectionExists(INI, Sect) then if GetModuleAddress('termsrv.dll', GetCurrentProcessId, TermSrvBase, TermSrvSize) then begin if INIReadBool(INI, Sect, 'LocalOnlyPatch.x86', False) then begin WriteLog('Patch CEnforcementCore::GetInstanceOfTSLicense'); SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'LocalOnlyOffset.x86', 0)); I := SListFind(PatchList, INIReadString(INI, Sect, 'LocalOnlyCode.x86', '')); if I >= 0 then WriteProcessMemory(GetCurrentProcess, SignPtr, @Patch[I][0], Length(Patch[I]), bw); end; if INIReadBool(INI, Sect, 'SingleUserPatch.x86', False) then begin WriteLog('Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled'); SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'SingleUserOffset.x86', 0)); I := SListFind(PatchList, INIReadString(INI, Sect, 'SingleUserCode.x86', '')); if I >= 0 then WriteProcessMemory(GetCurrentProcess, SignPtr, @Patch[I][0], Length(Patch[I]), bw); end; if INIReadBool(INI, Sect, 'DefPolicyPatch.x86', False) then begin WriteLog('Patch CDefPolicy::Query'); SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'DefPolicyOffset.x86', 0)); I := SListFind(PatchList, INIReadString(INI, Sect, 'DefPolicyCode.x86', '')); if I >= 0 then WriteProcessMemory(GetCurrentProcess, SignPtr, @Patch[I][0], Length(Patch[I]), bw); end; if INIReadBool(INI, Sect, 'SLPolicyInternal.x86', False) then begin WriteLog('Hook SLGetWindowsInformationDWORDWrapper'); SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'SLPolicyOffset.x86', 0)); MovJump.MovOp := $89; // mov eax, ecx MovJump.MovArg := $C8; // __msfastcall compatibility MovJump.PushOp := $68; MovJump.PushArg := @New_Win8SL; MovJump.RetOp := $C3; FuncName := INIReadString(INI, Sect, 'SLPolicyFunc.x86', 'New_Win8SL'); if FuncName = 'New_Win8SL' then MovJump.PushArg := @New_Win8SL; if FuncName = 'New_Win8SL_CP' then MovJump.PushArg := @New_Win8SL_CP; WriteProcessMemory(GetCurrentProcess, SignPtr, @MovJump, SizeOf(mov_far_jmp), bw); end; if INIReadBool(INI, Sect, 'SLInitHook.x86', False) then begin WriteLog('Hook CSLQuery::Initialize'); SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'SLInitOffset.x86', 0)); Jump.PushOp := $68; Jump.PushArg := @New_CSLQuery_Initialize; Jump.RetOp := $C3; FuncName := INIReadString(INI, Sect, 'SLInitFunc.x86', 'New_CSLQuery_Initialize'); if FuncName = 'New_CSLQuery_Initialize' then Jump.PushArg := @New_CSLQuery_Initialize; WriteProcessMemory(GetCurrentProcess, SignPtr, @Jump, SizeOf(far_jmp), bw); end; end; // unfreeze threads WriteLog('Resumimg threads...'); RunThreads(); end; function TermServiceMain(dwArgc: DWORD; lpszArgv: PWideChar): DWORD; stdcall; begin // wrap ServiceMain function WriteLog('>>> ServiceMain'); if not IsHooked then HookFunctions; Result := 0; if @TSMain <> nil then Result := TSMain(dwArgc, lpszArgv); WriteLog('<<< ServiceMain'); end; function TermServiceGlobals(lpGlobalData: Pointer): DWORD; stdcall; begin // wrap SvchostPushServiceGlobals function WriteLog('>>> SvchostPushServiceGlobals'); if not IsHooked then HookFunctions; Result := 0; if @TSGlobals <> nil then Result := TSGlobals(lpGlobalData); WriteLog('<<< SvchostPushServiceGlobals'); end; // export section exports TermServiceMain index 1 name 'ServiceMain', TermServiceGlobals index 2 name 'SvchostPushServiceGlobals'; begin // DllMain procedure is not used end. ================================================ FILE: src-x86-binarymaster/rdpwrap.dproj ================================================  {D6811241-D595-4809-B3B8-13BECEA56E11} rdpwrap.dpr Release DCC32 12.0 true true Base true true Base true rdpwrap.dll WinTypes=Windows;WinProcs=Windows;$(DCC_UnitAlias) true 00400000 x86 false RELEASE;$(DCC_Define) 0 false DEBUG;$(DCC_Define) MainSource Base Cfg_1 Base Cfg_2 Base Delphi.Personality.12 VCLApplication rdpwrap.dpr False True False False False 1 0 0 0 False False False False False 1049 1251 1.0.0.0 1.0.0.0 Embarcadero C++Builder Office 2000 Servers Package Embarcadero C++Builder Office XP Servers Package Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components 12 ================================================ FILE: src-x86-x64-Fusix/Export.def ================================================ LIBRARY BTREE EXPORTS ServiceMain SvchostPushServiceGlobals ================================================ FILE: src-x86-x64-Fusix/IniFile.cpp ================================================ /* Copyright 2014 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include "stdafx.h" #include #include #include "IniFile.h" INI_FILE::INI_FILE(wchar_t *FilePath) { DWORD Status = 0; DWORD NumberOfBytesRead = 0; HANDLE hFile = CreateFile(FilePath, GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { return; } FileSize = GetFileSize(hFile, NULL); if (FileSize == INVALID_FILE_SIZE) { return; } FileRaw = new char[FileSize]; Status = ReadFile(hFile, FileRaw, FileSize, &NumberOfBytesRead, NULL); if (!Status) { return; } CreateStringsMap(); Parse(); } INI_FILE::~INI_FILE() { for (DWORD i = 0; i < IniData.SectionCount; i++) { delete[] IniData.Section[i].Variables; } delete[] IniData.Section; delete[] FileStringsMap; delete FileRaw; } bool INI_FILE::CreateStringsMap() { DWORD StringsCount = 1; for (DWORD i = 0; i < FileSize; i++) { if (FileRaw[i] == '\r' && FileRaw[i + 1] == '\n') StringsCount++; } FileStringsCount = StringsCount; FileStringsMap = new DWORD[StringsCount]; FileStringsMap[0] = 0; StringsCount = 1; for (DWORD i = 0; i < FileSize; i++) { if (FileRaw[i] == '\r' && FileRaw[i + 1] == '\n') { FileStringsMap[StringsCount] = i + 2; StringsCount++; } } return true; } int INI_FILE::StrTrim(char* Str) { int i = 0, j; while ((Str[i] == ' ') || (Str[i] == '\t')) { i++; } if (i>0) { for (j = 0; j < strlen(Str); j++) { Str[j] = Str[j + i]; } Str[j] = '\0'; } i = strlen(Str) - 1; while ((Str[i] == ' ') || (Str[i] == '\t')) { i--; } if (i < (strlen(Str) - 1)) { Str[i + 1] = '\0'; } return 0; } DWORD INI_FILE::GetFileStringFromNum(DWORD StringNumber, char *RetString, DWORD Size) { DWORD CurrentStringNum = 0; DWORD EndStringPos = 0; DWORD StringSize = 0; if (StringNumber > FileStringsCount) return 0; for (DWORD i = FileStringsMap[StringNumber]; i < FileSize; i++) { if (i == (FileSize - 1)) { EndStringPos = FileSize; break; } if (FileRaw[i] == '\r' && FileRaw[i + 1] == '\n') { EndStringPos = i; break; } } StringSize = EndStringPos - FileStringsMap[StringNumber]; if (Size < StringSize) return 0; memset(RetString, 0x00, Size); memcpy(RetString, &(FileRaw[FileStringsMap[StringNumber]]), StringSize); return StringSize; } bool INI_FILE::IsVariable(char *Str, DWORD StrSize) { bool Quotes = false; for (DWORD i = 0; i < StrSize; i++) { if (Str[i] == '"' || Str[i] == '\'') Quotes = !Quotes; if (Str[i] == '=' && !Quotes) return true; } return false; } bool INI_FILE::FillVariable(INI_SECTION_VARIABLE *Variable, char *Str, DWORD StrSize) { bool Quotes = false; for (DWORD i = 0; i < StrSize; i++) { if (Str[i] == '"' || Str[i] == '\'') Quotes = !Quotes; if (Str[i] == '=' && !Quotes) { memset(Variable->VariableName, 0, MAX_STRING_LEN); memset(Variable->VariableValue, 0, MAX_STRING_LEN); memcpy(Variable->VariableName, Str, i); memcpy(Variable->VariableValue, &(Str[i + 1]), StrSize - (i - 1)); StrTrim(Variable->VariableName); StrTrim(Variable->VariableValue); break; } } return true; } bool INI_FILE::Parse() { DWORD CurrentStringNum = 0; char CurrentString[512]; DWORD CurrentStringSize = 0; DWORD SectionsCount = 0; DWORD VariablesCount = 0; DWORD CurrentSectionNum = -1; DWORD CurrentVariableNum = -1; // Calculate sections count for (DWORD CurrentStringNum = 0; CurrentStringNum < FileStringsCount; CurrentStringNum++) { CurrentStringSize = GetFileStringFromNum(CurrentStringNum, CurrentString, 512); if (CurrentString[0] == ';') continue; // It's a comment if (CurrentString[0] == '[' && CurrentString[CurrentStringSize - 1] == ']') // It's section declaration { SectionsCount++; continue; } } DWORD *SectionVariableCount = new DWORD[SectionsCount]; memset(SectionVariableCount, 0x00, sizeof(DWORD)*SectionsCount); for (DWORD CurrentStringNum = 0; CurrentStringNum < FileStringsCount; CurrentStringNum++) { CurrentStringSize = GetFileStringFromNum(CurrentStringNum, CurrentString, 512); if (CurrentString[0] == ';') continue; // It's a comment if (CurrentString[0] == '[' && CurrentString[CurrentStringSize - 1] == ']') // It's section declaration { CurrentSectionNum++; continue; } if (IsVariable(CurrentString, CurrentStringSize)) { VariablesCount++; SectionVariableCount[CurrentSectionNum]++; continue; } } IniData.SectionCount = SectionsCount; IniData.Section = new INI_SECTION[SectionsCount]; memset(IniData.Section, 0x00, sizeof(PINI_SECTION)*SectionsCount); for (DWORD i = 0; i < SectionsCount; i++) { IniData.Section[i].VariablesCount = SectionVariableCount[i]; IniData.Section[i].Variables = new INI_SECTION_VARIABLE[SectionVariableCount[i]]; memset(IniData.Section[i].Variables, 0x00, sizeof(INI_SECTION_VARIABLE)*SectionVariableCount[i]); } delete[] SectionVariableCount; CurrentSectionNum = -1; CurrentVariableNum = -1; for (DWORD CurrentStringNum = 0; CurrentStringNum < FileStringsCount; CurrentStringNum++) { CurrentStringSize = GetFileStringFromNum(CurrentStringNum, CurrentString, 512); if (CurrentString[0] == ';') // It's a comment { continue; } if (CurrentString[0] == '[' && CurrentString[CurrentStringSize - 1] == ']') { CurrentSectionNum++; CurrentVariableNum = 0; memset(IniData.Section[CurrentSectionNum].SectionName, 0, MAX_STRING_LEN); memcpy(IniData.Section[CurrentSectionNum].SectionName, &(CurrentString[1]), (CurrentStringSize - 2)); continue; } if (IsVariable(CurrentString, CurrentStringSize)) { FillVariable(&(IniData.Section[CurrentSectionNum].Variables[CurrentVariableNum]), CurrentString, CurrentStringSize); CurrentVariableNum++; continue; } } return true; } PINI_SECTION INI_FILE::GetSection(char *SectionName) { for (DWORD i = 0; i < IniData.SectionCount; i++) { if ( (strlen(IniData.Section[i].SectionName) == strlen(SectionName)) && (memcmp(IniData.Section[i].SectionName, SectionName, strlen(SectionName)) == 0) ) { return &IniData.Section[i]; } } return NULL; } bool INI_FILE::SectionExists(char *SectionName) { if (GetSection(SectionName) == NULL) return false; return true; } bool INI_FILE::VariableExists(char *SectionName, char *VariableName) { INI_SECTION_VARIABLE Variable = { 0 }; return GetVariableInSectionPrivate(SectionName, VariableName, &Variable); } bool INI_FILE::GetVariableInSectionPrivate(char *SectionName, char *VariableName, INI_SECTION_VARIABLE *RetVariable) { INI_SECTION *Section = NULL; INI_SECTION_VARIABLE *Variable = NULL; // Find section Section = GetSection(SectionName); if (Section == NULL) { SetLastError(318); // This region is not found return false; } // Find variable for (DWORD i = 0; i < Section->VariablesCount; i++) { if ( (strlen(Section->Variables[i].VariableName) == strlen(VariableName)) && (memcmp(Section->Variables[i].VariableName, VariableName, strlen(VariableName)) == 0) ) { Variable = &(Section->Variables[i]); break; } } if (Variable == NULL) { SetLastError(1898); // Member of the group is not found return false; } memset(RetVariable, 0x00, sizeof(*RetVariable)); memcpy(RetVariable, Variable, sizeof(*Variable)); return true; } bool INI_FILE::GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_STRING *RetVariable) { bool Status = false; INI_SECTION_VARIABLE Variable = {}; Status = GetVariableInSectionPrivate(SectionName, VariableName, &Variable); if (!Status) return Status; memset(RetVariable, 0x00, sizeof(*RetVariable)); memcpy(RetVariable->Name, Variable.VariableName, strlen(Variable.VariableName)); memcpy(RetVariable->Value, Variable.VariableValue, strlen(Variable.VariableValue)); return true; } bool INI_FILE::GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_DWORD *RetVariable) { bool Status = false; INI_SECTION_VARIABLE Variable = {}; Status = GetVariableInSectionPrivate(SectionName, VariableName, &Variable); if (!Status) return Status; memset(RetVariable, 0x00, sizeof(*RetVariable)); memcpy(RetVariable->Name, Variable.VariableName, strlen(Variable.VariableName)); #ifndef _WIN64 RetVariable->ValueDec = strtol(Variable.VariableValue, NULL, 10); RetVariable->ValueHex = strtol(Variable.VariableValue, NULL, 16); #else RetVariable->ValueDec = _strtoi64(Variable.VariableValue, NULL, 10); RetVariable->ValueHex = _strtoi64(Variable.VariableValue, NULL, 16); #endif return true; } bool INI_FILE::GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_BYTEARRAY *RetVariable) { bool Status = false; INI_SECTION_VARIABLE Variable = {}; Status = GetVariableInSectionPrivate(SectionName, VariableName, &Variable); if (!Status) return Status; DWORD ValueLen = strlen(Variable.VariableValue); if ((ValueLen % 2) != 0) return false; // for security reasons not more than 16 bytes if (ValueLen > 32) ValueLen = 32; // 32 hex digits memset(RetVariable, 0x00, sizeof(*RetVariable)); memcpy(RetVariable->Name, Variable.VariableName, strlen(Variable.VariableName)); for (DWORD i = 0; i <= ValueLen; i++) { if ((i % 2) != 0) continue; switch (Variable.VariableValue[i]) { case '0': break; case '1': RetVariable->Value[(i / 2)] += (1 << 4); break; case '2': RetVariable->Value[(i / 2)] += (2 << 4); break; case '3': RetVariable->Value[(i / 2)] += (3 << 4); break; case '4': RetVariable->Value[(i / 2)] += (4 << 4); break; case '5': RetVariable->Value[(i / 2)] += (5 << 4); break; case '6': RetVariable->Value[(i / 2)] += (6 << 4); break; case '7': RetVariable->Value[(i / 2)] += (7 << 4); break; case '8': RetVariable->Value[(i / 2)] += (8 << 4); break; case '9': RetVariable->Value[(i / 2)] += (9 << 4); break; case 'A': RetVariable->Value[(i / 2)] += (10 << 4); break; case 'B': RetVariable->Value[(i / 2)] += (11 << 4); break; case 'C': RetVariable->Value[(i / 2)] += (12 << 4); break; case 'D': RetVariable->Value[(i / 2)] += (13 << 4); break; case 'E': RetVariable->Value[(i / 2)] += (14 << 4); break; case 'F': RetVariable->Value[(i / 2)] += (15 << 4); break; } switch (Variable.VariableValue[i + 1]) { case '0': break; case '1': RetVariable->Value[(i / 2)] += 1; break; case '2': RetVariable->Value[(i / 2)] += 2; break; case '3': RetVariable->Value[(i / 2)] += 3; break; case '4': RetVariable->Value[(i / 2)] += 4; break; case '5': RetVariable->Value[(i / 2)] += 5; break; case '6': RetVariable->Value[(i / 2)] += 6; break; case '7': RetVariable->Value[(i / 2)] += 7; break; case '8': RetVariable->Value[(i / 2)] += 8; break; case '9': RetVariable->Value[(i / 2)] += 9; break; case 'A': RetVariable->Value[(i / 2)] += 10; break; case 'B': RetVariable->Value[(i / 2)] += 11; break; case 'C': RetVariable->Value[(i / 2)] += 12; break; case 'D': RetVariable->Value[(i / 2)] += 13; break; case 'E': RetVariable->Value[(i / 2)] += 14; break; case 'F': RetVariable->Value[(i / 2)] += 15; break; } } RetVariable->ArraySize = ValueLen / 2; return true; } bool INI_FILE::GetVariableInSection(char *SectionName, char *VariableName, bool *RetVariable) { bool Status = false; INI_SECTION_VARIABLE Variable = {}; Status = GetVariableInSectionPrivate(SectionName, VariableName, &Variable); if (!Status) return Status; *RetVariable = (bool)strtol(Variable.VariableValue, NULL, 10); return true; } bool INI_FILE::GetSectionVariablesList(char *SectionName, INI_SECTION_VARLIST *VariablesList) { INI_SECTION *Section = NULL; Section = GetSection(SectionName); if (Section == NULL) { SetLastError(318); // This region is not found return false; } VariablesList->EntriesCount = Section->VariablesCount; VariablesList->NamesEntries = new INI_SECTION_VARLIST_ENTRY[VariablesList->EntriesCount]; memset(VariablesList->NamesEntries, 0x00, sizeof(INI_SECTION_VARLIST_ENTRY)*VariablesList->EntriesCount); VariablesList->ValuesEntries = new INI_SECTION_VARLIST_ENTRY[VariablesList->EntriesCount]; memset(VariablesList->ValuesEntries, 0x00, sizeof(INI_SECTION_VARLIST_ENTRY)*VariablesList->EntriesCount); for (DWORD i = 0; i < Section->VariablesCount; i++) { memcpy(VariablesList->NamesEntries[i].String, Section->Variables[i].VariableName, strlen(Section->Variables[i].VariableName)); memcpy(VariablesList->ValuesEntries[i].String, Section->Variables[i].VariableValue, strlen(Section->Variables[i].VariableValue)); } return true; } // ---------------------------- WCHAR_T BLOCK ---------------------------------------------- bool INI_FILE::SectionExists(wchar_t *SectionName) { char cSectionName[MAX_STRING_LEN] = { 0x00 }; wcstombs(cSectionName, SectionName, MAX_STRING_LEN); return GetSection(cSectionName); } bool INI_FILE::VariableExists(wchar_t *SectionName, wchar_t *VariableName) { INI_SECTION_VARIABLE Variable = { 0 }; char cSectionName[MAX_STRING_LEN] = { 0x00 }; char cVariableName[MAX_STRING_LEN] = { 0x00 }; wcstombs(cSectionName, SectionName, MAX_STRING_LEN); wcstombs(cVariableName, VariableName, MAX_STRING_LEN); return GetVariableInSectionPrivate(cSectionName, cVariableName, &Variable); } bool INI_FILE::GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_STRING *RetVariable) { char cSectionName[MAX_STRING_LEN] = { 0x00 }; char cVariableName[MAX_STRING_LEN] = { 0x00 }; wcstombs(cSectionName, SectionName, MAX_STRING_LEN); wcstombs(cVariableName, VariableName, MAX_STRING_LEN); return GetVariableInSection(cSectionName, cVariableName, RetVariable); } bool INI_FILE::GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_DWORD *RetVariable) { char cSectionName[MAX_STRING_LEN] = { 0x00 }; char cVariableName[MAX_STRING_LEN] = { 0x00 }; wcstombs(cSectionName, SectionName, MAX_STRING_LEN); wcstombs(cVariableName, VariableName, MAX_STRING_LEN); return GetVariableInSection(cSectionName, cVariableName, RetVariable); } bool INI_FILE::GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_BYTEARRAY *RetVariable) { char cSectionName[MAX_STRING_LEN] = { 0x00 }; char cVariableName[MAX_STRING_LEN] = { 0x00 }; wcstombs(cSectionName, SectionName, MAX_STRING_LEN); wcstombs(cVariableName, VariableName, MAX_STRING_LEN); return GetVariableInSection(cSectionName, cVariableName, RetVariable); } bool INI_FILE::GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, bool *RetVariable) { char cSectionName[MAX_STRING_LEN] = { 0x00 }; char cVariableName[MAX_STRING_LEN] = { 0x00 }; wcstombs(cSectionName, SectionName, MAX_STRING_LEN); wcstombs(cVariableName, VariableName, MAX_STRING_LEN); return GetVariableInSection(cSectionName, cVariableName, RetVariable); } bool INI_FILE::GetSectionVariablesList(wchar_t *SectionName, INI_SECTION_VARLIST *VariablesList) { char cSectionName[MAX_STRING_LEN] = { 0x00 }; wcstombs(cSectionName, SectionName, MAX_STRING_LEN); return GetSectionVariablesList(cSectionName, VariablesList); } ================================================ FILE: src-x86-x64-Fusix/IniFile.h ================================================ /* Copyright 2014 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include "stdafx.h" #include #define MAX_STRING_LEN 255 // Out values struсts typedef struct _INI_VAR_STRING { char Name[MAX_STRING_LEN]; char Value[MAX_STRING_LEN]; } INI_VAR_STRING, *PINI_VAR_STRING; typedef struct _INI_VAR_DWORD { char Name[MAX_STRING_LEN]; #ifndef _WIN64 DWORD ValueDec; DWORD ValueHex; #else DWORD64 ValueDec; DWORD64 ValueHex; #endif } INI_VAR_DWORD, *PINI_VAR_DWORD; typedef struct _INI_VAR_BYTEARRAY { char Name[MAX_STRING_LEN]; BYTE ArraySize; char Value[MAX_STRING_LEN]; } INI_VAR_BYTEARRAY, *PINI_VAR_BYTEARRAY; typedef struct _INI_SECTION_VARLIST_ENTRY { char String[MAX_STRING_LEN]; } INI_SECTION_VARLIST_ENTRY, *PINI_SECTION_VARLIST_ENTRY; typedef struct _INI_SECTION_VARLIST { DWORD EntriesCount; [length_is(EntriesCount)] INI_SECTION_VARLIST_ENTRY *NamesEntries; [length_is(EntriesCount)] INI_SECTION_VARLIST_ENTRY *ValuesEntries; } INI_SECTION_VARLIST, *PINI_SECTION_VARLIST; // end typedef struct _INI_SECTION_VARIABLE { char VariableName[MAX_STRING_LEN]; char VariableValue[MAX_STRING_LEN]; } INI_SECTION_VARIABLE, *PINI_SECTION_VARIABLE; typedef struct _INI_SECTION { char SectionName[MAX_STRING_LEN]; DWORD VariablesCount; [length_is(SectionCount)] INI_SECTION_VARIABLE *Variables; } INI_SECTION, *PINI_SECTION; typedef struct _INI_DATA { DWORD SectionCount; [length_is(SectionCount)] INI_SECTION *Section; } INI_DATA, *PINI_DATA; class INI_FILE { public: INI_FILE(wchar_t*); ~INI_FILE(); // char block bool SectionExists(char *SectionName); bool VariableExists(char *SectionName, char *VariableName); bool GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_STRING *Variable); bool GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_DWORD *Variable); bool GetVariableInSection(char *SectionName, char *VariableName, bool *Variable); bool GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_BYTEARRAY *Variable); bool GetSectionVariablesList(char *SectionName, INI_SECTION_VARLIST *VariablesList); // wchar_t tramps bool SectionExists(wchar_t *SectionName); bool VariableExists(wchar_t *SectionName, wchar_t *VariableName); bool GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_STRING *Variable); bool GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_DWORD *Variable); bool GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, bool *Variable); bool GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_BYTEARRAY *Variable); bool GetSectionVariablesList(wchar_t *SectionName, INI_SECTION_VARLIST *VariablesList); private: DWORD FileSize; // Ini file size char *FileRaw; // Ini file raw dump DWORD FileStringsCount; // String-map length DWORD *FileStringsMap; // String-map INI_DATA IniData; // Parsed data // Common service functions int StrTrim(char* Str); // Class service functions bool CreateStringsMap(); // Create file string-map bool Parse(); // Parse file to class structures DWORD GetFileStringFromNum(DWORD StringNumber, char *RetString, DWORD Size); // Get string from string-map bool IsVariable(char *Str, DWORD StrSize); bool FillVariable(INI_SECTION_VARIABLE *Variable, char *Str, DWORD StrSize); // Fill INI_SECTION_VARIABLE struct (for Parse) PINI_SECTION GetSection(char *SectionName); bool GetVariableInSectionPrivate(char *SectionName, char *VariableName, INI_SECTION_VARIABLE *RetVariable); }; ================================================ FILE: src-x86-x64-Fusix/RDPWrap.cpp ================================================ /* Copyright 2014 Stas'M Corp. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ #include "stdafx.h" #include "IniFile.h" #include typedef struct { union { struct { WORD Minor; WORD Major; } wVersion; DWORD dwVersion; }; WORD Release; WORD Build; } FILE_VERSION; #ifdef _WIN64 typedef unsigned long long PLATFORM_DWORD; struct FARJMP { // x64 far jump | opcode | assembly BYTE MovOp; // 48 mov rax, ptr BYTE MovRegArg; // B8 DWORD64 MovArg; // PTR BYTE PushRaxOp; // 50 push rax BYTE RetOp; // C3 retn }; #else typedef unsigned long PLATFORM_DWORD; struct FARJMP { // x86 far jump | opcode | assembly BYTE PushOp; // 68 push ptr DWORD PushArg; // PTR BYTE RetOp; // C3 retn }; #endif FARJMP Old_SLGetWindowsInformationDWORD, Stub_SLGetWindowsInformationDWORD; SLGETWINDOWSINFORMATIONDWORD _SLGetWindowsInformationDWORD; INI_FILE *IniFile; wchar_t LogFile[256] = L"\\rdpwrap.txt\0"; HMODULE hTermSrv; HMODULE hSLC; PLATFORM_DWORD TermSrvBase; FILE_VERSION FV; SERVICEMAIN _ServiceMain; SVCHOSTPUSHSERVICEGLOBALS _SvchostPushServiceGlobals; bool AlreadyHooked = false; DWORD INIReadDWordHex(INI_FILE *IniFile, char *Sect, char *VariableName, PLATFORM_DWORD Default) { INI_VAR_DWORD Variable; if(IniFile->GetVariableInSection(Sect, VariableName, &Variable)) { return Variable.ValueHex; } return Default; } void INIReadString(INI_FILE *IniFile, char *Sect, char *VariableName, char *Default, char *Ret, DWORD RetSize) { INI_VAR_STRING Variable; memset(Ret, 0x00, RetSize); if(!IniFile->GetVariableInSection(Sect, VariableName, &Variable)) { strcpy_s(Ret, RetSize, Default); return; } strcpy_s(Ret, RetSize, Variable.Value); } void WriteToLog(LPSTR Text) { DWORD dwBytesOfWritten; HANDLE hFile = CreateFile(LogFile, GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) return; SetFilePointer(hFile, 0, 0, FILE_END); WriteFile(hFile, Text, strlen(Text), &dwBytesOfWritten, NULL); CloseHandle(hFile); } HMODULE GetCurrentModule() { HMODULE hModule = NULL; GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)GetCurrentModule, &hModule); return hModule; } /*PLATFORM_DWORD SearchAddressBySignature(char *StartPosition, PLATFORM_DWORD Size, char *Signature, int SignatureSize) { PLATFORM_DWORD AddressReturn = -1; for (PLATFORM_DWORD i = 0; i < Size; i++) { for (int j = 0; StartPosition[i+j] == Signature[j] && j < SignatureSize; j++) { if (j == SignatureSize-1) AddressReturn = (PLATFORM_DWORD)&StartPosition[i]; } } return AddressReturn; }*/ bool GetModuleCodeSectionInfo(HMODULE hModule, PLATFORM_DWORD *BaseAddr, PLATFORM_DWORD *BaseSize) { PIMAGE_DOS_HEADER pDosHeader; PIMAGE_FILE_HEADER pFileHeader; PIMAGE_OPTIONAL_HEADER pOptionalHeader; if (hModule == NULL) return false; pDosHeader = (PIMAGE_DOS_HEADER)hModule; pFileHeader = (PIMAGE_FILE_HEADER)(((PBYTE)hModule)+pDosHeader->e_lfanew+4); pOptionalHeader = (PIMAGE_OPTIONAL_HEADER)(pFileHeader+1); *BaseAddr = (PLATFORM_DWORD)hModule; *BaseSize = (PLATFORM_DWORD)pOptionalHeader->SizeOfCode; if (*BaseAddr <= 0 || *BaseSize <= 0) return false; return true; } void SetThreadsState(bool Resume) { HANDLE h, hThread; DWORD CurrTh, CurrPr; THREADENTRY32 Thread; CurrTh = GetCurrentThreadId(); CurrPr = GetCurrentProcessId(); h = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (h != INVALID_HANDLE_VALUE) { Thread.dwSize = sizeof(THREADENTRY32); Thread32First(h, &Thread); do { if (Thread.th32ThreadID != CurrTh && Thread.th32OwnerProcessID == CurrPr) { hThread = OpenThread(THREAD_SUSPEND_RESUME, false, Thread.th32ThreadID); if (hThread != INVALID_HANDLE_VALUE) { if (Resume) ResumeThread(hThread); else SuspendThread(hThread); CloseHandle(hThread); } } } while (Thread32Next(h, &Thread)); CloseHandle(h); } } BOOL __stdcall GetModuleVersion(LPCWSTR lptstrModuleName, FILE_VERSION *FileVersion) { typedef struct { WORD wLength; WORD wValueLength; WORD wType; WCHAR szKey[16]; WORD Padding1; VS_FIXEDFILEINFO Value; WORD Padding2; WORD Children; } VS_VERSIONINFO; HMODULE hMod = GetModuleHandle(lptstrModuleName); if(!hMod) { return false; } HRSRC hResourceInfo = FindResourceW(hMod, (LPCWSTR)1, (LPCWSTR)0x10); if(!hResourceInfo) { return false; } VS_VERSIONINFO *VersionInfo = (VS_VERSIONINFO*)LoadResource(hMod, hResourceInfo); if(!VersionInfo) { return false; } FileVersion->dwVersion = VersionInfo->Value.dwFileVersionMS; FileVersion->Release = (WORD)(VersionInfo->Value.dwFileVersionLS >> 16); FileVersion->Build = (WORD)VersionInfo->Value.dwFileVersionLS; return true; } BOOL __stdcall GetFileVersion(LPCWSTR lptstrFilename, FILE_VERSION *FileVersion) { typedef struct { WORD wLength; WORD wValueLength; WORD wType; WCHAR szKey[16]; WORD Padding1; VS_FIXEDFILEINFO Value; WORD Padding2; WORD Children; } VS_VERSIONINFO; HMODULE hFile = LoadLibraryExW(lptstrFilename, NULL, LOAD_LIBRARY_AS_DATAFILE); if(!hFile) { return false; } HRSRC hResourceInfo = FindResourceW(hFile, (LPCWSTR)1, (LPCWSTR)0x10); if(!hResourceInfo) { return false; } VS_VERSIONINFO *VersionInfo = (VS_VERSIONINFO*)LoadResource(hFile, hResourceInfo); if(!VersionInfo) { return false; } FileVersion->dwVersion = VersionInfo->Value.dwFileVersionMS; FileVersion->Release = (WORD)(VersionInfo->Value.dwFileVersionLS >> 16); FileVersion->Build = (WORD)VersionInfo->Value.dwFileVersionLS; return true; } bool OverrideSL(LPWSTR ValueName, DWORD *Value) { INI_VAR_DWORD Variable = {0}; if (IniFile->VariableExists(L"SLPolicy", ValueName)) { if (!(IniFile->GetVariableInSection(L"SLPolicy", ValueName, &Variable))) *Value = 0; else *Value = Variable.ValueDec; return true; } return false; } HRESULT WINAPI New_SLGetWindowsInformationDWORD(PWSTR pwszValueName, DWORD *pdwValue) { // wrapped SLGetWindowsInformationDWORD function // termsrv.dll will call this function instead of original SLC.dll // Override SL Policy extern FARJMP Old_SLGetWindowsInformationDWORD, Stub_SLGetWindowsInformationDWORD; extern SLGETWINDOWSINFORMATIONDWORD _SLGetWindowsInformationDWORD; char *Log; DWORD dw; SIZE_T bw; HRESULT Result; Log = new char[1024]; wsprintfA(Log, "Policy query: %S\r\n", pwszValueName); WriteToLog(Log); delete[] Log; if (OverrideSL(pwszValueName, &dw)) { *pdwValue = dw; Log = new char[1024]; wsprintfA(Log, "Policy rewrite: %i\r\n", dw); WriteToLog(Log); delete[] Log; return S_OK; } WriteProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Old_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw); Result = _SLGetWindowsInformationDWORD(pwszValueName, pdwValue); if (Result == S_OK) { Log = new char[1024]; wsprintfA(Log, "Policy result: %i\r\n", dw); WriteToLog(Log); delete[] Log; } else { WriteToLog("Policy request failed\r\n"); } WriteProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Stub_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw); return Result; } HRESULT __fastcall New_Win8SL(PWSTR pwszValueName, DWORD *pdwValue) { // wrapped unexported function SLGetWindowsInformationDWORDWrapper in termsrv.dll // for Windows 8 support // Override SL Policy extern SLGETWINDOWSINFORMATIONDWORD _SLGetWindowsInformationDWORD; char *Log; DWORD dw; HRESULT Result; Log = new char[1024]; wsprintfA(Log, "Policy query: %S\r\n", pwszValueName); WriteToLog(Log); delete[] Log; if (OverrideSL(pwszValueName, &dw)) { *pdwValue = dw; Log = new char[1024]; wsprintfA(Log, "Policy rewrite: %i\r\n", dw); WriteToLog(Log); delete[] Log; return S_OK; } Result = _SLGetWindowsInformationDWORD(pwszValueName, pdwValue); if (Result == S_OK) { Log = new char[1024]; wsprintfA(Log, "Policy result: %i\r\n", dw); WriteToLog(Log); delete[] Log; } else { WriteToLog("Policy request failed\r\n"); } return Result; } #ifndef _WIN64 HRESULT __fastcall New_Win8SL_CP(DWORD arg1, DWORD *pdwValue, PWSTR pwszValueName, DWORD arg4) { // wrapped unexported function SLGetWindowsInformationDWORDWrapper in termsrv.dll // for Windows 8 Consumer Preview support return New_Win8SL(pwszValueName, pdwValue); } #endif HRESULT WINAPI New_CSLQuery_Initialize() { extern PLATFORM_DWORD TermSrvBase; extern FILE_VERSION FV; char *Log; DWORD *bServerSku = NULL; DWORD *bRemoteConnAllowed = NULL; DWORD *bFUSEnabled = NULL; DWORD *bAppServerAllowed = NULL; DWORD *bMultimonAllowed = NULL; DWORD *lMaxUserSessions = NULL; DWORD *ulMaxDebugSessions = NULL; DWORD *bInitialized = NULL; WriteToLog(">>> CSLQuery::Initialize\r\n"); char *Sect; Sect = new char[256]; memset(Sect, 0x00, 256); wsprintfA(Sect, "%d.%d.%d.%d-SLInit", FV.wVersion.Major, FV.wVersion.Minor, FV.Release, FV.Build); if (IniFile->SectionExists(Sect)) { #ifdef _WIN64 bServerSku = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bServerSku.x64", 0)); bRemoteConnAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bRemoteConnAllowed.x64", 0)); bFUSEnabled = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bFUSEnabled.x64", 0)); bAppServerAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bAppServerAllowed.x64", 0)); bMultimonAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bMultimonAllowed.x64", 0)); lMaxUserSessions = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "lMaxUserSessions.x64", 0)); ulMaxDebugSessions = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "ulMaxDebugSessions.x64", 0)); bInitialized = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bInitialized.x64", 0)); #else bServerSku = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bServerSku.x86", 0)); bRemoteConnAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bRemoteConnAllowed.x86", 0)); bFUSEnabled = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bFUSEnabled.x86", 0)); bAppServerAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bAppServerAllowed.x86", 0)); bMultimonAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bMultimonAllowed.x86", 0)); lMaxUserSessions = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "lMaxUserSessions.x86", 0)); ulMaxDebugSessions = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "ulMaxDebugSessions.x86", 0)); bInitialized = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "bInitialized.x86", 0)); #endif } delete[] Sect; if (bServerSku) { *bServerSku = INIReadDWordHex(IniFile, "SLInit", "bServerSku", 1); Log = new char[1024]; wsprintfA(Log, "SLInit [0x%p] bServerSku = %d\r\n", bServerSku, *bServerSku); WriteToLog(Log); delete[] Log; } if (bRemoteConnAllowed) { *bRemoteConnAllowed = INIReadDWordHex(IniFile, "SLInit", "bRemoteConnAllowed", 1); Log = new char[1024]; wsprintfA(Log, "SLInit [0x%p] bRemoteConnAllowed = %d\r\n", bRemoteConnAllowed, *bRemoteConnAllowed); WriteToLog(Log); delete[] Log; } if (bFUSEnabled) { *bFUSEnabled = INIReadDWordHex(IniFile, "SLInit", "bFUSEnabled", 1); Log = new char[1024]; wsprintfA(Log, "SLInit [0x%p] bFUSEnabled = %d\r\n", bFUSEnabled, *bFUSEnabled); WriteToLog(Log); delete[] Log; } if (bAppServerAllowed) { *bAppServerAllowed = INIReadDWordHex(IniFile, "SLInit", "bAppServerAllowed", 1); Log = new char[1024]; wsprintfA(Log, "SLInit [0x%p] bAppServerAllowed = %d\r\n", bAppServerAllowed, *bAppServerAllowed); WriteToLog(Log); delete[] Log; } if (bMultimonAllowed) { *bMultimonAllowed = INIReadDWordHex(IniFile, "SLInit", "bMultimonAllowed", 1); Log = new char[1024]; wsprintfA(Log, "SLInit [0x%p] bMultimonAllowed = %d\r\n", bMultimonAllowed, *bMultimonAllowed); WriteToLog(Log); delete[] Log; } if (lMaxUserSessions) { *lMaxUserSessions = INIReadDWordHex(IniFile, "SLInit", "lMaxUserSessions", 0); Log = new char[1024]; wsprintfA(Log, "SLInit [0x%p] lMaxUserSessions = %d\r\n", lMaxUserSessions, *lMaxUserSessions); WriteToLog(Log); delete[] Log; } if (ulMaxDebugSessions) { *ulMaxDebugSessions = INIReadDWordHex(IniFile, "SLInit", "ulMaxDebugSessions", 0); Log = new char[1024]; wsprintfA(Log, "SLInit [0x%p] ulMaxDebugSessions = %d\r\n", ulMaxDebugSessions, *ulMaxDebugSessions); WriteToLog(Log); delete[] Log; } if (bInitialized) { *bInitialized = INIReadDWordHex(IniFile, "SLInit", "bInitialized", 1); Log = new char[1024]; wsprintfA(Log, "SLInit [0x%p] bInitialized = %d\r\n", bInitialized, *bInitialized); WriteToLog(Log); delete[] Log; } WriteToLog("<<< CSLQuery::Initialize\r\n"); return S_OK; } void Hook() { extern FARJMP Old_SLGetWindowsInformationDWORD, Stub_SLGetWindowsInformationDWORD; extern SLGETWINDOWSINFORMATIONDWORD _SLGetWindowsInformationDWORD; extern HMODULE hTermSrv; extern HMODULE hSLC; extern PLATFORM_DWORD TermSrvBase; extern FILE_VERSION FV; extern wchar_t LogFile[256]; AlreadyHooked = true; char *Log; wchar_t ConfigFile[256] = { 0x00 }; WriteToLog("Loading configuration...\r\n"); GetModuleFileName(GetCurrentModule(), ConfigFile, 255); for (DWORD i = wcslen(ConfigFile); i > 0; i--) { if (ConfigFile[i] == '\\') { memset(&ConfigFile[i + 1], 0x00, ((256 - (i + 1))) * 2); memcpy(&ConfigFile[i + 1], L"rdpwrap.ini", strlen("rdpwrap.ini") * 2); break; } } Log = new char[1024]; wsprintfA(Log, "Configuration file: %S\r\n", ConfigFile); WriteToLog(Log); delete[] Log; IniFile = new INI_FILE(ConfigFile); // TODO: implement this if (IniFile == NULL) { WriteToLog("Error: Failed to load configuration\r\n"); return; } INI_VAR_STRING LogFileVar; if(!(IniFile->GetVariableInSection("Main", "LogFile", &LogFileVar))) { GetModuleFileName(GetCurrentModule(), LogFile, 255); for(DWORD i = wcslen(LogFile); i > 0; i--) { if(LogFile[i] == '\\') { memset(&LogFile[i+1], 0x00, ((256-(i+1)))*2); memcpy(&LogFile[i+1], L"rdpwrap.txt", strlen("rdpwrap.txt")*2); break; } } } else { // TODO: Change it before add UNICODE in IniFile wchar_t wcLogFile[256]; memset(wcLogFile, 0x00, 256); mbstowcs(wcLogFile, LogFileVar.Value, 255); wcscpy(LogFile, wcLogFile); } SIZE_T bw; WORD Ver = 0; PLATFORM_DWORD TermSrvSize, SignPtr; FARJMP Jump; WriteToLog("Initializing RDP Wrapper...\r\n"); hTermSrv = LoadLibrary(L"termsrv.dll"); if (hTermSrv == 0) { WriteToLog("Error: Failed to load Terminal Services library\r\n"); return; } _ServiceMain = (SERVICEMAIN)GetProcAddress(hTermSrv, "ServiceMain"); _SvchostPushServiceGlobals = (SVCHOSTPUSHSERVICEGLOBALS)GetProcAddress(hTermSrv, "SvchostPushServiceGlobals"); Log = new char[4096]; wsprintfA(Log, "Base addr: 0x%p\r\n" "SvcMain: termsrv.dll+0x%p\r\n" "SvcGlobals: termsrv.dll+0x%p\r\n", hTermSrv, (PLATFORM_DWORD)_ServiceMain - (PLATFORM_DWORD)hTermSrv, (PLATFORM_DWORD)_SvchostPushServiceGlobals - (PLATFORM_DWORD)hTermSrv); WriteToLog(Log); delete[] Log; // check termsrv version if (GetModuleVersion(L"termsrv.dll", &FV)) { Ver = (BYTE)FV.wVersion.Minor | ((BYTE)FV.wVersion.Major << 8); } else { // check NT version // Ver = GetVersion(); // deprecated // Ver = ((Ver & 0xFF) << 8) | ((Ver & 0xFF00) >> 8); } if (Ver == 0) { WriteToLog("Error: Failed to detect Terminal Services version\r\n"); return; } Log = new char[1024]; wsprintfA(Log, "Version: %d.%d.%d.%d\r\n", FV.wVersion.Major, FV.wVersion.Minor, FV.Release, FV.Build); WriteToLog(Log); delete[] Log; // temporarily freeze threads WriteToLog("Freezing threads...\r\n"); SetThreadsState(false); bool Bool; if (!(IniFile->GetVariableInSection("Main", "SLPolicyHookNT60", &Bool))) Bool = true; if ((Ver == 0x0600) && Bool) { // Windows Vista // uses SL Policy API (slc.dll) // load slc.dll and hook function hSLC = LoadLibrary(L"slc.dll"); _SLGetWindowsInformationDWORD = (SLGETWINDOWSINFORMATIONDWORD)GetProcAddress(hSLC, "SLGetWindowsInformationDWORD"); if (_SLGetWindowsInformationDWORD != INVALID_HANDLE_VALUE) { // rewrite original function to call our function (make hook) WriteToLog("Hook SLGetWindowsInformationDWORD\r\n"); #ifdef _WIN64 Stub_SLGetWindowsInformationDWORD.MovOp = 0x48; Stub_SLGetWindowsInformationDWORD.MovRegArg = 0xB8; Stub_SLGetWindowsInformationDWORD.MovArg = (PLATFORM_DWORD)New_SLGetWindowsInformationDWORD; Stub_SLGetWindowsInformationDWORD.PushRaxOp = 0x50; Stub_SLGetWindowsInformationDWORD.RetOp = 0xC3; #else Stub_SLGetWindowsInformationDWORD.PushOp = 0x68; Stub_SLGetWindowsInformationDWORD.PushArg = (PLATFORM_DWORD)New_SLGetWindowsInformationDWORD; Stub_SLGetWindowsInformationDWORD.RetOp = 0xC3; #endif ReadProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Old_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw); WriteProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Stub_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw); } } if (!(IniFile->GetVariableInSection("Main", "SLPolicyHookNT61", &Bool))) Bool = true; if ((Ver == 0x0601) && Bool) { // Windows 7 // uses SL Policy API (slc.dll) // load slc.dll and hook function hSLC = LoadLibrary(L"slc.dll"); _SLGetWindowsInformationDWORD = (SLGETWINDOWSINFORMATIONDWORD)GetProcAddress(hSLC, "SLGetWindowsInformationDWORD"); if (_SLGetWindowsInformationDWORD != INVALID_HANDLE_VALUE) { // rewrite original function to call our function (make hook) WriteToLog("Hook SLGetWindowsInformationDWORD\r\n"); #ifdef _WIN64 Stub_SLGetWindowsInformationDWORD.MovOp = 0x48; Stub_SLGetWindowsInformationDWORD.MovRegArg = 0xB8; Stub_SLGetWindowsInformationDWORD.MovArg = (PLATFORM_DWORD)New_SLGetWindowsInformationDWORD; Stub_SLGetWindowsInformationDWORD.PushRaxOp = 0x50; Stub_SLGetWindowsInformationDWORD.RetOp = 0xC3; #else Stub_SLGetWindowsInformationDWORD.PushOp = 0x68; Stub_SLGetWindowsInformationDWORD.PushArg = (PLATFORM_DWORD)New_SLGetWindowsInformationDWORD; Stub_SLGetWindowsInformationDWORD.RetOp = 0xC3; #endif ReadProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Old_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw); WriteProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Stub_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw); } } if (Ver == 0x0602) { // Windows 8 // uses SL Policy internal unexported function // load slc.dll and get function // (will be used on intercepting undefined values) hSLC = LoadLibrary(L"slc.dll"); _SLGetWindowsInformationDWORD = (SLGETWINDOWSINFORMATIONDWORD)GetProcAddress(hSLC, "SLGetWindowsInformationDWORD"); } if (Ver == 0x0603) { // Windows 8.1 // uses SL Policy internal inline code } if (Ver == 0x0604) { // Windows 10 // uses SL Policy internal inline code } char *Sect; INI_VAR_STRING PatchName; INI_VAR_BYTEARRAY Patch; Sect = new char[256]; memset(Sect, 0x00, 256); wsprintfA(Sect, "%d.%d.%d.%d", FV.wVersion.Major, FV.wVersion.Minor, FV.Release, FV.Build); if (IniFile->SectionExists(Sect)) { if (GetModuleCodeSectionInfo(hTermSrv, &TermSrvBase, &TermSrvSize)) { #ifdef _WIN64 if (!(IniFile->GetVariableInSection(Sect, "LocalOnlyPatch.x64", &Bool))) Bool = false; #else if (!(IniFile->GetVariableInSection(Sect, "LocalOnlyPatch.x86", &Bool))) Bool = false; #endif if (Bool) { WriteToLog("Patch CEnforcementCore::GetInstanceOfTSLicense\r\n"); Bool = false; #ifdef _WIN64 SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "LocalOnlyOffset.x64", 0)); Bool = IniFile->GetVariableInSection(Sect, "LocalOnlyCode.x64", &PatchName); #else SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "LocalOnlyOffset.x86", 0)); Bool = IniFile->GetVariableInSection(Sect, "LocalOnlyCode.x86", &PatchName); #endif if (Bool) Bool = IniFile->GetVariableInSection("PatchCodes", PatchName.Value, &Patch); if (Bool && (SignPtr > TermSrvBase)) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, Patch.Value, Patch.ArraySize, &bw); } #ifdef _WIN64 if (!(IniFile->GetVariableInSection(Sect, "SingleUserPatch.x64", &Bool))) Bool = false; #else if (!(IniFile->GetVariableInSection(Sect, "SingleUserPatch.x86", &Bool))) Bool = false; #endif if (Bool) { WriteToLog("Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n"); Bool = false; #ifdef _WIN64 SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "SingleUserOffset.x64", 0)); Bool = IniFile->GetVariableInSection(Sect, "SingleUserCode.x64", &PatchName); #else SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "SingleUserOffset.x86", 0)); Bool = IniFile->GetVariableInSection(Sect, "SingleUserCode.x86", &PatchName); #endif if (Bool) Bool = IniFile->GetVariableInSection("PatchCodes", PatchName.Value, &Patch); if (Bool && (SignPtr > TermSrvBase)) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, Patch.Value, Patch.ArraySize, &bw); } #ifdef _WIN64 if (!(IniFile->GetVariableInSection(Sect, "DefPolicyPatch.x64", &Bool))) Bool = false; #else if (!(IniFile->GetVariableInSection(Sect, "DefPolicyPatch.x86", &Bool))) Bool = false; #endif if (Bool) { WriteToLog("Patch CDefPolicy::Query\r\n"); Bool = false; #ifdef _WIN64 SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "DefPolicyOffset.x64", 0)); Bool = IniFile->GetVariableInSection(Sect, "DefPolicyCode.x64", &PatchName); #else SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "DefPolicyOffset.x86", 0)); Bool = IniFile->GetVariableInSection(Sect, "DefPolicyCode.x86", &PatchName); #endif if (Bool) Bool = IniFile->GetVariableInSection("PatchCodes", PatchName.Value, &Patch); if (Bool && (SignPtr > TermSrvBase)) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, Patch.Value, Patch.ArraySize, &bw); } #ifdef _WIN64 if (!(IniFile->GetVariableInSection(Sect, "SLPolicyInternal.x64", &Bool))) Bool = false; #else if (!(IniFile->GetVariableInSection(Sect, "SLPolicyInternal.x86", &Bool))) Bool = false; #endif if (Bool) { WriteToLog("Hook SLGetWindowsInformationDWORDWrapper\r\n"); char *FuncName; FuncName = new char[1024]; #ifdef _WIN64 SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "SLPolicyOffset.x64", 0)); Jump.MovOp = 0x48; Jump.MovRegArg = 0xB8; Jump.MovArg = (PLATFORM_DWORD)New_Win8SL; Jump.PushRaxOp = 0x50; Jump.RetOp = 0xC3; INIReadString(IniFile, Sect, "SLPolicyFunc.x64", "New_Win8SL", FuncName, 1024); if (strcmp(FuncName, "New_Win8SL")) { Jump.MovArg = (PLATFORM_DWORD)New_Win8SL; } #else SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "SLPolicyOffset.x86", 0)); Jump.PushOp = 0x68; Jump.PushArg = (PLATFORM_DWORD)New_Win8SL; Jump.RetOp = 0xC3; INIReadString(IniFile, Sect, "SLPolicyFunc.x86", "New_Win8SL", FuncName, 1024); if (strcmp(FuncName, "New_Win8SL")) { Jump.PushArg = (PLATFORM_DWORD)New_Win8SL; } if (strcmp(FuncName, "New_Win8SL_CP")) { Jump.PushArg = (PLATFORM_DWORD)New_Win8SL_CP; } #endif delete[] FuncName; if (SignPtr > TermSrvBase) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, &Jump, sizeof(FARJMP), &bw); } #ifdef _WIN64 if (!(IniFile->GetVariableInSection(Sect, "SLInitHook.x64", &Bool))) Bool = false; #else if (!(IniFile->GetVariableInSection(Sect, "SLInitHook.x86", &Bool))) Bool = false; #endif if (Bool) { WriteToLog("Hook CSLQuery::Initialize\r\n"); char *FuncName; FuncName = new char[1024]; #ifdef _WIN64 SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "SLInitOffset.x64", 0)); Jump.MovOp = 0x48; Jump.MovRegArg = 0xB8; Jump.MovArg = (PLATFORM_DWORD)New_CSLQuery_Initialize; Jump.PushRaxOp = 0x50; Jump.RetOp = 0xC3; INIReadString(IniFile, Sect, "SLInitFunc.x64", "New_CSLQuery_Initialize", FuncName, 1024); if (strcmp(FuncName, "New_CSLQuery_Initialize")) { Jump.MovArg = (PLATFORM_DWORD)New_CSLQuery_Initialize; } #else SignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, "SLInitOffset.x86", 0)); Jump.PushOp = 0x68; Jump.PushArg = (PLATFORM_DWORD)New_CSLQuery_Initialize; Jump.RetOp = 0xC3; INIReadString(IniFile, Sect, "SLInitFunc.x86", "New_CSLQuery_Initialize", FuncName, 1024); if (strcmp(FuncName, "New_CSLQuery_Initialize")) { Jump.PushArg = (PLATFORM_DWORD)New_CSLQuery_Initialize; } #endif delete[] FuncName; if (SignPtr > TermSrvBase) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, &Jump, sizeof(FARJMP), &bw); } } } delete[] Sect; WriteToLog("Resumimg threads...\r\n"); SetThreadsState(true); return; } void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv) { WriteToLog(">>> ServiceMain\r\n"); if (!AlreadyHooked) Hook(); if (_ServiceMain != NULL) _ServiceMain(dwArgc, lpszArgv); WriteToLog("<<< ServiceMain\r\n"); } void WINAPI SvchostPushServiceGlobals(void *lpGlobalData) { WriteToLog(">>> SvchostPushServiceGlobals\r\n"); if (!AlreadyHooked) Hook(); if (_SvchostPushServiceGlobals != NULL) _SvchostPushServiceGlobals(lpGlobalData); WriteToLog("<<< SvchostPushServiceGlobals\r\n"); } ================================================ FILE: src-x86-x64-Fusix/RDPWrap.sln ================================================  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RDPWrap", "RDPWrap.vcxproj", "{29E4E73B-EBA6-495B-A76C-FBB462196C64}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|Win32.ActiveCfg = Debug|Win32 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|Win32.Build.0 = Debug|Win32 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|Win32.Deploy.0 = Debug|Win32 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|x64.ActiveCfg = Debug|x64 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|x64.Build.0 = Debug|x64 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|x64.Deploy.0 = Debug|x64 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|Win32.ActiveCfg = Release|Win32 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|Win32.Build.0 = Release|Win32 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|Win32.Deploy.0 = Release|Win32 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|x64.ActiveCfg = Release|x64 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|x64.Build.0 = Release|x64 {29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|x64.Deploy.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal ================================================ FILE: src-x86-x64-Fusix/RDPWrap.vcxproj ================================================  Debug Win32 Debug x64 Release Win32 Release x64 {29E4E73B-EBA6-495B-A76C-FBB462196C64} Win32Proj RDPWrap DynamicLibrary true v120 Unicode DynamicLibrary true v120 Unicode DynamicLibrary false v120 true Unicode DynamicLibrary false v120 true Unicode true true false false Use Level3 Disabled WIN32;_DEBUG;_WINDOWS;_USRDLL;RDPWRAP_EXPORTS;%(PreprocessorDefinitions) true Windows true Export.def Use Level3 Disabled WIN32;_DEBUG;_WINDOWS;_USRDLL;RDPWRAP_EXPORTS;%(PreprocessorDefinitions) true Windows true Export.def Use MaxSpeed true true WIN32;NDEBUG;_WINDOWS;_USRDLL;RDPWRAP_EXPORTS;%(PreprocessorDefinitions) true true Level3 1Byte MultiThreaded Windows false true true Export.def false true Use MaxSpeed true true WIN32;NDEBUG;_WINDOWS;_USRDLL;RDPWRAP_EXPORTS;%(PreprocessorDefinitions) true true Level3 1Byte MultiThreaded Windows false true true Export.def false true false false false false Create Create Create Create ================================================ FILE: src-x86-x64-Fusix/RDPWrap.vcxproj.filters ================================================  {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Заголовочные файлы Заголовочные файлы Заголовочные файлы Файлы исходного кода Файлы исходного кода Файлы исходного кода Файлы исходного кода Файлы исходного кода ================================================ FILE: src-x86-x64-Fusix/ReadMe.txt ================================================ ======================================================================== БИБЛИОТЕКА ДИНАМИЧЕСКОЙ КОМПОНОВКИ. Обзор проекта RDPWrap ======================================================================== Эта библиотека DLL RDPWrap создана автоматически с помощью мастера приложений. В этом файле представлена сводка содержимого всех файлов, входящих в состав приложения RDPWrap. RDPWrap.vcxproj Это основной файл проекта VC++, создаваемый с помощью мастера приложений. Он содержит данные о версии языка Visual C++, использованной для создания файла, а также сведения о платформах, конфигурациях и функциях проекта, выбранных с помощью мастера приложений. RDPWrap.vcxproj.filters Это файл фильтров для проектов VC++, созданный с помощью мастера приложений. Он содержит сведения о сопоставлениях между файлами в вашем проекте и фильтрами. Эти сопоставления используются в среде IDE для группировки файлов с одинаковыми расширениями в одном узле (например CPP-файлы сопоставляются с фильтром "Исходные файлы"). RDPWrap.cpp Основной исходный файл библиотеки DLL. При создании этой библиотеки DLL не выполняется экспорт символов. Поэтому при ее построении не создается LIB-файл. Если в этом проекте требуется определить зависимость от другого проекта, необходимо добавить код для экспорта символов из библиотеки DLL, чтобы обеспечить создание библиотеки экспорта, или задать значение «Да» для свойства «Пропустить входную библиотеку» на странице общих свойств папки «Компоновщик» в диалоговом окне «Страницы свойств» проекта. ///////////////////////////////////////////////////////////////////////////// Другие стандартные файлы: StdAfx.h, StdAfx.cpp Эти файлы используются для построения файла предкомпилированного заголовка (PCH) с именем RDPWrap.pch и файла предкомпилированных типов с именем StdAfx.obj. ///////////////////////////////////////////////////////////////////////////// Прочие примечания. С помощью комментариев «TODO:» в мастере приложений обозначаются фрагменты исходного кода, которые необходимо дополнить или изменить. ///////////////////////////////////////////////////////////////////////////// ================================================ FILE: src-x86-x64-Fusix/dllmain.cpp ================================================ // dllmain.cpp: DLL. #include "stdafx.h" BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return true; } ================================================ FILE: src-x86-x64-Fusix/stdafx.cpp ================================================ // stdafx.cpp: , // RDPWrap.pch // stdafx.obj #include "stdafx.h" // TODO: STDAFX.H // , ================================================ FILE: src-x86-x64-Fusix/stdafx.h ================================================ // stdafx.h: // , , // // #pragma once #include "targetver.h" #define WIN32_LEAN_AND_MEAN // Windows #define _CRT_SECURE_NO_WARNINGS // Windows: #include #include // TODO: , typedef VOID (WINAPI* SERVICEMAIN)(DWORD, LPTSTR*); typedef VOID (WINAPI* SVCHOSTPUSHSERVICEGLOBALS)(VOID*); typedef HRESULT (WINAPI* SLGETWINDOWSINFORMATIONDWORD)(PCWSTR, DWORD*); ================================================ FILE: src-x86-x64-Fusix/targetver.h ================================================ #pragma once // SDKDDKVer.h Windows. // Windows, WinSDKVer.h // _WIN32_WINNT SDKDDKVer.h. #include ================================================ FILE: technical.txt ================================================ RDP Wrapper Library project by Stas'M Terminal Services supported versions 6.0.X.X (Windows Vista, any) [policy hook only] 6.0.6000.16386 (Windows Vista) [policy hook + extended patch] 6.0.6000.20723 (Windows Vista with KB944917) [todo] 6.0.6001.18000 (Windows Vista SP1) [policy hook + extended patch] 6.0.6001.22286 (Windows Vista SP1 with KB958612) [todo] 6.0.6001.22357 (Windows Vista SP1 with KB958612 v2) [todo] 6.0.6001.22323 (Windows Vista SP1 with KB960742) [todo] 6.0.6001.22392 (Windows Vista SP1 with KB968680) [todo] 6.0.6001.22565 (Windows Vista SP1 with KB977541) [todo] 6.0.6001.22635 (Windows Vista SP1 with KB970911) [todo] 6.0.6001.22801 (Windows Vista SP1 with KB2381675) [todo] 6.0.6002.18005 (Windows Vista SP2) [policy hook + extended patch] 6.0.6002.22269 (Windows Vista SP2 with KB977541) [todo] 6.0.6002.22340 (Windows Vista SP2 with KB970911) [todo] 6.0.6002.22515 (Windows Vista SP2 with KB2381675) [todo] 6.0.6002.22641 (Windows Vista SP2 with KB2523307) [todo] 6.0.6002.22790 (Windows Vista SP2 with KB2672601) [todo] 6.0.6002.19214 (Windows Vista SP2 with KB3003743 GDR) [policy hook + extended patch] 6.0.6002.23521 (Windows Vista SP2 with KB3003743 LDR) [policy hook + extended patch] 6.1.X.X (Windows 7, any) [policy hook only] 6.1.7100.0 (Windows 7 Release Candidate) [todo] 6.1.7600.16385 (Windows 7) [policy hook + extended patch] 6.1.7600.20661 (Windows 7 with KB951422) [todo] 6.1.7600.21085 (Windows 7 with KB951422 v2) [todo] 6.1.7600.20621 (Windows 7 with KB979470) [todo] 6.1.7600.20890 (Windows 7 with KB2479710) [policy hook + extended patch] 6.1.7600.21316 (Windows 7 with KB2750090) [policy hook + extended patch] 6.1.7600.21420 (Windows 7 with KB2800789) [todo] 6.1.7601.17514 (Windows 7 SP1) [policy hook + extended patch] 6.1.7601.21855 (Windows 7 SP1 with KB951422 v2) [todo] 6.1.7601.21650 (Windows 7 SP1 with KB2479710) [policy hook + extended patch] 6.1.7601.21866 (Windows 7 SP1 with KB2647409) [policy hook + extended patch] 6.1.7601.22104 (Windows 7 SP1 with KB2750090) [policy hook + extended patch] 6.1.7601.22213 (Windows 7 SP1 with KB2800789) [todo] 6.1.7601.22476 (Windows 7 SP1 with KB2870165) [todo] 6.1.7601.22435 (Windows 7 SP1 with KB2878424) [todo] 6.1.7601.22477 (Windows 7 SP1 with KB2896256) [todo] 6.1.7601.18540 (Windows 7 SP1 with KB2984972 GDR) [policy hook + extended patch] 6.1.7601.22750 (Windows 7 SP1 with KB2984972 LDR) [policy hook + extended patch] 6.1.7601.18637 (Windows 7 SP1 with KB3003743 GDR) [policy hook + extended patch] 6.1.7601.22843 (Windows 7 SP1 with KB3003743 LDR) [policy hook + extended patch] 6.1.7601.23403 (Windows 7 SP1 with KB3125574) [policy hook + extended patch] 6.1.7601.24234 (Windows 7 SP1 with KB4462923) [policy hook + extended patch] 6.2.8102.0 (Windows 8 Developer Preview) [policy hook + extended patch] 6.2.8250.0 (Windows 8 Consumer Preview) [policy hook + extended patch] 6.2.8400.0 (Windows 8 Release Preview) [policy hook + extended patch] 6.2.9200.16384 (Windows 8) [policy hook + extended patch] 6.2.9200.17048 (Windows 8 with KB2973501 GDR) [policy hook + extended patch] 6.2.9200.21166 (Windows 8 with KB2973501 LDR) [policy hook + extended patch] 6.3.9431.0 (Windows 8.1 Preview) [init hook + extended patch] 6.3.9600.16384 (Windows 8.1) [init hook + extended patch] 6.3.9600.17095 (Windows 8.1 with KB2959626) [init hook + extended patch] 6.3.9600.17415 (Windows 8.1 with KB3000850) [init hook + extended patch] 6.3.9600.18692 (Windows 8.1 with KB4022720) [init hook + extended patch] 6.3.9600.18708 (Windows 8.1 with KB4025335) [init hook + extended patch] 6.3.9600.18928 (Windows 8.1 with KB4088876) [init hook + extended patch] 6.3.9600.19093 (Windows 8.1 with KB4343891) [init hook + extended patch] 6.4.9841.0 (Windows 10 Technical Preview) [init hook + extended patch] 6.4.9860.0 (Windows 10 Technical Preview UP1) [init hook + extended patch] 6.4.9879.0 (Windows 10 Technical Preview UP2) [init hook + extended patch] 10.0.9926.0 (Windows 10 Pro Technical Preview) [init hook + extended patch] 10.0.10041.0 (Windows 10 Pro Technical Preview UP1) [init hook + extended patch] 10.0.10049.0 (Windows 10 Pro Technical Preview UP2) [todo] 10.0.10061.0 (Windows 10 Pro Technical Preview UP3) [todo] 10.0.10240.16384 (Windows 10 RTM) [init hook + extended patch] 10.0.10525.0 (Windows 10 th2_release.150812-1658) [todo] 10.0.10532.0 (Windows 10 th2_release.150822-1406) [todo] 10.0.10547.0 (Windows 10 th2_release.150913-1511) [todo] 10.0.10586.0 (Windows 10 th2_release.151029-1700) [init hook + extended patch] 10.0.10586.589 (Windows 10 th2_release.160906-1759) [init hook + extended patch] 10.0.11082.1000 (Windows 10 rs1_release.151210-2021) [init hook + extended patch] 10.0.11102.1000 (Windows 10 rs1_release.160113-1800) [init hook + extended patch] 10.0.14251.1000 (Windows 10 rs1_release.160124-1059) [init hook + extended patch] 10.0.14271.1000 (Windows 10 rs1_release.160218-2310) [init hook + extended patch] 10.0.14279.1000 (Windows 10 rs1_release.160229-1700) [init hook + extended patch] 10.0.14295.1000 (Windows 10 rs1_release.160318-1628) [init hook + extended patch] 10.0.14300.1000 (Windows Server 2016 Technical Preview 5) [init hook + extended patch] 10.0.14316.1000 (Windows 10 rs1_release.160402-2227) [init hook + extended patch] 10.0.14328.1000 (Windows 10 rs1_release.160418-1609) [init hook + extended patch] 10.0.14332.1001 (Windows 10 rs1_release.160422-1940) [init hook + extended patch] 10.0.14342.1000 (Windows 10 rs1_release.160506-1708) [init hook + extended patch] 10.0.14352.1002 (Windows 10 rs1_release.160522-1930) [init hook + extended patch] 10.0.14366.0 (Windows 10 rs1_release.160610-1700) [init hook + extended patch] 10.0.14367.0 (Windows 10 rs1_release.160613-1700) [init hook + extended patch] 10.0.14372.0 (Windows 10 rs1_release.160620-2342) [init hook + extended patch] 10.0.14379.0 (Windows 10 rs1_release.160627-1607) [init hook + extended patch] 10.0.14383.0 (Windows 10 rs1_release.160701-1839) [init hook + extended patch] 10.0.14385.0 (Windows 10 rs1_release.160706-1700) [init hook + extended patch] 10.0.14388.0 (Windows 10 rs1_release.160709-1635) [init hook + extended patch] 10.0.14393.0 (Windows 10 rs1_release.160715-1616) [init hook + extended patch] 10.0.14393.1198 (Windows 10 rs1_release_sec.170427-1353) [init hook + extended patch] 10.0.14393.1737 (Windows 10 rs1_release_inmarket.170914-1249) [init hook + extended patch] 10.0.14393.2457 (Windows 10 rs1_release_inmarket.180822-1743) [init hook + extended patch] 10.0.14901.1000 (Windows 10 rs_prerelease.160805-1700) [init hook + extended patch] 10.0.14905.1000 (Windows 10 rs_prerelease.160811-1739) [init hook + extended patch] 10.0.14915.1000 (Windows 10 rs_prerelease.160826-1902) [init hook + extended patch] 10.0.14926.1000 (Windows 10 rs_prerelease.160910-1529) [init hook + extended patch] 10.0.14931.1000 (Windows 10 rs_prerelease.160916-1700) [init hook + extended patch] 10.0.14936.1000 (Windows 10 rs_prerelease.160923-1700) [init hook + extended patch] 10.0.14942.1000 (Windows 10 rs_prerelease.161003-1929) [init hook + extended patch] 10.0.14946.1000 (Windows 10 rs_prerelease.161007-1700) [init hook + extended patch] 10.0.14951.1000 (Windows 10 rs_prerelease.161014-1700) [init hook + extended patch] 10.0.14955.1000 (Windows 10 rs_prerelease.161020-1700) [init hook + extended patch] 10.0.14959.1000 (Windows 10 rs_prerelease.161026-1700) [init hook + extended patch] 10.0.14965.1001 (Windows 10 rs_prerelease.161104-1700) [init hook + extended patch] 10.0.14971.1000 (Windows 10 rs_prerelease.161111-1700) [init hook + extended patch] 10.0.14986.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.14997.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15002.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15007.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15014.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15019.1000 (Windows 10 rs_prerelease.170121-1513) [init hook + extended patch] 10.0.15025.1000 (Windows 10 rs_prerelease.170127-1750) [init hook + extended patch] 10.0.15031.0 (Windows 10 rs2_release.170204-1546) [init hook + extended patch] 10.0.15042.0 (Windows 10 rs2_release.170219-2329) [init hook + extended patch] 10.0.15046.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15048.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15055.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15058.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15061.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15063.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15063.296 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15063.994 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.15063.1155 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16179.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16184.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16199.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16215.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16232.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16237.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16241.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16251.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16251.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16257.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16257.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16273.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16275.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16278.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16281.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16288.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16291.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16294.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16296.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16299.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16299.15 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16353.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.16362.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17004.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17017.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17025.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17035.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17040.1000 (Windows 10 WinBuild.160101.0800) [todo] 10.0.17046.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17063.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17074.1002 (Windows 10 WinBuild.160101.0800) [todo] 10.0.17083.1000 (Windows 10 WinBuild.160101.0800) [todo] 10.0.17115.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17128.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17133.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17134.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17723.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] 10.0.17763.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch] Source code changelog (rdpwrap library): 2018.10.10 : - added support for termsrv.dll 6.1.7601.24234 x86 2018.10.04 : - added support for termsrv.dll 10.0.14393.2457 x86 2018.10.03 : - added support for termsrv.dll 6.1.7601.24234 x64 - added support for termsrv.dll 10.0.15063.994 x64 - added support for termsrv.dll 10.0.17723.1000 x64 - added support for termsrv.dll 10.0.17763.1 2018.09.10 : - added support for termsrv.dll 6.1.7600.20890 - added support for termsrv.dll 6.1.7600.21316 - added support for termsrv.dll 6.1.7601.21650 - added support for termsrv.dll 6.1.7601.21866 - added support for termsrv.dll 6.1.7601.22104 - added support for termsrv.dll 6.3.9600.19093 - added support for termsrv.dll 10.0.14393.2457 x64 - added support for termsrv.dll 10.0.15063.1155 x64 2018.05.16 : - added support for termsrv.dll 10.0.17115.1 - added support for termsrv.dll 10.0.17128.1 - added support for termsrv.dll 10.0.17133.1 - added support for termsrv.dll 10.0.17134.1 2018.03.26 : - added support for termsrv.dll 6.3.9600.18928 by 1nd1g0 2017.12.27 : - added support for termsrv.dll 10.0.17017.1000 - added support for termsrv.dll 10.0.17025.1000 - added support for termsrv.dll 10.0.17035.1000 - added support for termsrv.dll 10.0.17046.1000 - added support for termsrv.dll 10.0.17063.1000 2017.10.13 : - added support for termsrv.dll 10.0.14393.1737 - added support for termsrv.dll 10.0.16299.0 - added support for termsrv.dll 10.0.16299.15 - added support for termsrv.dll 10.0.17004.1000 2017.09.24 : - added support for termsrv.dll 10.0.16291.0 - added support for termsrv.dll 10.0.16294.1 - added support for termsrv.dll 10.0.16296.0 - added support for termsrv.dll 10.0.16362.1000 2017.09.15 : - added support for termsrv.dll 10.0.16288.1 2017.09.06 : - added support for termsrv.dll 10.0.16273.1000 - added support for termsrv.dll 10.0.16275.1000 - added support for termsrv.dll 10.0.16278.1000 - added support for termsrv.dll 10.0.16281.1000 - added support for termsrv.dll 10.0.16353.1000 2017.08.04 : - added support for termsrv.dll 10.0.16257.1 - added support for termsrv.dll 10.0.16257.1000 2017.07.30 : - added support for termsrv.dll 6.3.9600.18708 - added support for termsrv.dll 10.0.16232.1000 - added support for termsrv.dll 10.0.16237.1001 - added support for termsrv.dll 10.0.16241.1001 - added support for termsrv.dll 10.0.16251.0 - added support for termsrv.dll 10.0.16251.1000 2017.06.29 : - added support for termsrv.dll 6.3.9600.18692 2017.06.10 : - added support for termsrv.dll 10.0.15063.296 - added support for termsrv.dll 10.0.16215.1000 2017.05.29 : - added support for termsrv.dll 10.0.16199.1000 2017.05.17 : - added support for termsrv.dll 10.0.14997.1001 x64 2017.05.12 : - added support for termsrv.dll 10.0.14393.1198 x86 2017.05.03 : - added support for termsrv.dll 10.0.16179.1000 - added support for termsrv.dll 10.0.16184.1001 2017.03.22 : - added support for termsrv.dll 10.0.15063.0 2017.03.21 : - added support for termsrv.dll 10.0.15061.0 2017.03.16 : - added support for termsrv.dll 10.0.15058.0 2017.03.14 : - added support for termsrv.dll 10.0.15055.0 2017.03.05 : - added support for termsrv.dll 10.0.15048.0 2017.03.02 : - added support for termsrv.dll 10.0.15046.0 2017.03.01 : - added support for termsrv.dll 10.0.15031.0 - added support for termsrv.dll 10.0.15042.0 2017.02.03 : - added support for termsrv.dll 10.0.15025.1000 x64 2017.01.28 : - added support for termsrv.dll 10.0.15019.1000 2017.01.21 : - added support for termsrv.dll 10.0.15014.1000 2017.01.15 : - added support for termsrv.dll 10.0.15007.1000 2017.01.12 : - added support for termsrv.dll 10.0.15002.1001 2016.12.23 : - added support for termsrv.dll 10.0.14986.1000 2016.11.19 : - added support for termsrv.dll 10.0.14959.1000 - added support for termsrv.dll 10.0.14965.1001 - added support for termsrv.dll 10.0.14971.1000 2016.10.28 : - added support for termsrv.dll 10.0.14955.1000 2016.10.21 : - added support for termsrv.dll 10.0.14951.1000 2016.10.19 : - added support for termsrv.dll 10.0.14946.1000 2016.10.08 : - added support for termsrv.dll 10.0.14942.1000 2016.09.30 : - added support for termsrv.dll 10.0.14936.1000 2016.09.27 : - added support for termsrv.dll 10.0.14931.1000 2016.09.15 : - added support for termsrv.dll 10.0.14926.1000 2016.09.14 : - added support for termsrv.dll 10.0.10586.589 2016.09.03 : - added support for termsrv.dll 10.0.14915.1000 2016.08.28 : - added support for termsrv.dll 6.1.7601.23403 - added support for termsrv.dll 10.0.14901.1000 - added support for termsrv.dll 10.0.14905.1000 2016.08.12 : - added support for termsrv.dll 10.0.14385.0 2016.08.01 : - preparing the release 2016.07.23 : - added online install mode to installer - added feature to keep settings on uninstall - fixed update firewall rule on port change in config tool - added feature to hide users on logon 2016.07.22 : - added support for termsrv.dll 10.0.14393.0 2016.07.15 : - added support for termsrv.dll 10.0.14383.0 - added support for termsrv.dll 10.0.14388.0 2016.07.06 : - added support for termsrv.dll 10.0.14379.0 2016.06.27 : - added support for termsrv.dll 10.0.14372.0 x86 2016.06.26 : - added support for termsrv.dll 10.0.14372.0 x64 by kbmorris 2016.06.17 : - fixed issue with termsrv.dll 10.0.14352.1002 - added support for termsrv.dll 10.0.14366.0 - added support for termsrv.dll 10.0.14367.0 2016.05.30 : - added support for termsrv.dll 10.0.14352.1002 2016.05.14 : - added support for termsrv.dll 10.0.14342.1000 2016.05.08 : - added support for termsrv.dll 10.0.14300.1000 x64 - added support for termsrv.dll 10.0.14328.1000 2016.04.29 : - added support for termsrv.dll 10.0.14332.1001 by maxpiva 2016.04.14 : - added support for termsrv.dll 10.0.14316.1000 2016.04.06 : - added support for termsrv.dll 10.0.14295.1000 2016.03.07 : - added experimental codes for ARMv7 architecture (see rdpwrap-arm-kb.ini) - Windows RT / termsrv.dll 6.2.9200.16384 - Windows RT 8.1 / termsrv.dll 6.3.9600.16384 - Windows RT 8.1 / termsrv.dll 6.3.9600.17095 2016.03.06 : - added support for termsrv.dll 10.0.14279.1000 2016.02.29 : - added support for termsrv.dll 10.0.14271.1000 2016.01.28 : - added support for termsrv.dll 10.0.14251.1000 2016.01.26 : - added support for termsrv.dll 10.0.11102.1000 2016.01.15 : - updated messages in the installer - added support for termsrv.dll 10.0.11082.1000 2015.11.14 : - added support for termsrv.dll 10.0.10586.0 2015.08.11 : - embed new rdpclip versions in the installer (for NT 6.0 and 6.1) - preparing the release 2015.08.07 : - added INI update feature to installer 2015.07.30 : - fixed issue with Windows 10 Home x86 (wrong LocalOnly offset was specified in INI file) 2015.07.17 : - added support for termsrv.dll 10.0.10240.16384 - added HOW TO hints to KB (so other reverse engineers can do this hard work more easier) 2015.07.16 : - moved all comments from INI file to Knowledge Base text file - now INI file have smaller size - updated RDP checker: changed IP Address to 127.0.0.2 (sometimes client doesn't want to connect .1), updated text message - updated RDP config: list all possible shadowing modes, also write group policy - updated installer: added workaround for 1056 error - updated copyright years in source code - obtained files from build 10.0.10240.16384 - researching Windows 10 RTM 2015.03.23 : - researching Windows 10 Pro Technical Preview UP1 - added support for termsrv.dll 10.0.10041.0 2015.03.20 : - new build 10.0.10041.0 was released, obtaining files... 2015.01.26 : - researching Windows 10 Pro Technical Preview (10.0.9926.0 x86) - added support for termsrv.dll 10.0.9926.0 (x86) 2015.01.22 : - v-yadli contributed offsets for version 10.0.9926.0 (x64) 2014.12.13 : - added more policy values to INI file 2014.12.10 : - C++ version seems to work well now! - added support for termsrv.dll 6.4.9879.0 - preparing the new release 2014.12.09 : - many bug fixes in C++ version, you can track it in the git history :) - it can be compiled now :D - we are getting closer to the finish line! 2014.12.03 : - added INI reader by Fusix for C++ version - asulwer also helped with the development 2014.11.25 : - corrected some typos in INI file - added EasyPrint policy value 2014.11.24 : - added support for termsrv.dll 6.3.9600.17415 2014.11.21 : - new LiteINI module to read INI files - added support to store patch settings in INI file - version support can be extended without recompilation - C++ version needs to be updated 2014.11.20 : - improved comments - researching KB3000850 - found required files - improving RDPWrap... - placing signatures, offsets, values, etc in separate config file - working with code 2014.11.13 : - researching KB3003743 - added support for version 6.0.6002.19214 - added support for version 6.0.6002.23521 - added support for version 6.1.7601.18637 - added support for version 6.1.7601.22843 2014.11.02 : - researching termsrv.dll 6.4.9860.0 - done 2014.10.19 : - added support for version 6.0.6000.16386 (x64) - added support for version 6.0.6001.18000 (x64) - added support for version 6.1.7600.16385 2014.10.18 : - corrected some typos in source - simplified signature constants - added support for version 6.0.6000.16386 (x86) - added support for version 6.0.6001.18000 (x86) - added support for version 6.0.6002.18005 - added support for version 6.1.7601.17514 - added support for version 6.1.7601.18540 - added support for version 6.1.7601.22750 - added support for version 6.2.9200.17048 - added support for version 6.2.9200.21166 2014.10.17 : - collecting information about all versions of Terminal Services beginning from Vista - added [todo] to the versions list 2014.10.16 : - got new updates: KB2984972 for Win 7 (still works with 2 concurrent users) and KB2973501 for Win 8 (doesn't work) 2014.10.02 : - researching Windows 10 TP Remote Desktop - done! even without debugging symbols ^^) 2014.07.20 : - added support for Windows 8 Release Preview - added support for Windows 8 Consumer Preview - added support for Windows 8 Developer Preview 2014.07.19 : - improved patching of Windows 8 - added policy patches - will patch CDefPolicy::Query - will patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled 2014.07.18 : - researched patched files from MDL forum - CSLQuery::GetMaxSessions requires no patching - it's better to change the default policy, so... - will patch CDefPolicy::Query - will patch CEnforcementCore::GetInstanceOfTSLicense - will patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled - the function CSLQuery::Initialize is hooked correctly 2014.07.17 : - will hook only CSLQuery::Initialize function - CSLQuery::GetMaxSessions will be patched - added x86 signatures for 6.3.9431.0 (Windows 8.1 Preview) 2014.07.16 : - changing asm opcodes is bad, will hook CSL functions 2014.07.15 : - added x86 signatures for 6.3.9600.16384 (Windows 8.1) 2014.07.15 : - added x86 signatures for 6.3.9600.17095 (Windows 8.1 with KB2959626)