Full Code of stascorp/rdpwrap for AI

master a5c64a43319e cached
48 files
573.4 KB
197.9k tokens
32 symbols
1 requests
Download .txt
Showing preview only (594K chars total). Download the full file or copy to clipboard to get everything.
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:
<br>https://github.com/stascorp/rdpwrap/
- Official Telegram chat:
<br>https://t.me/rdpwrap
- Active discussion in the comments here:
<br>[Enable remote desktop on Windows 8 core / basic - Andrew Block .net][andrewblock]
- MDL Projects and Applications thread here:
<br>[RDP Wrapper Library (works with Windows 8.1 Basic)][mydigitallife]
- Some ideas about porting to ARM for Windows RT (post #23):
<br>[\[Q\] Mod Windows RT to enable Remote Desktop][xda-dev]
- Adding «Remote Desktop Users» group:
<br>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:
<br>`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
================================================
<?xml version="1.0" encoding="UTF-8"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <?define ProductName="RDP Wrapper Library" ?>
  <?define ProductVersion="1.6.2" ?>
  <?define ProductCode="37ea5771-3352-4a52-9fac-9297331daebd"?>
  <?define UpgradeCode="6623f60c-e84f-41e7-a55b-f421165deeb5"?>
  <?define Manufacturer="Stas'M Corp. and contributors"?>

  <Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
    <Package InstallerVersion="200" Compressed="yes"/>
    <Property Id="MSIFASTINSTALL" Value="1" />
    <Property Id="DISABLEROLLBACK" Value="1" />
    <MajorUpgrade AllowDowngrades="yes"/>

    <Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/>

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="CommonAppDataFolder">
        <Directory Id="PACKAGECACHE" Name="Package Cache">
          <Directory Id="INSTALLLOCATION" Name="{$(var.ProductCode)}">
            <Component Id="RDPWrap" Guid="affd77d1-b35c-46f3-a97f-1686dc57b8b8">
              <File Id='RDPWInst' DiskId='1' Source='RDPWInst.exe'/>
            </Component>
          </Directory>
        </Directory>
      </Directory>
    </Directory>

    <Feature Id="RDPWrapInstall" Title="RDPWrapSetup" Level="1">
      <ComponentRef Id="RDPWrap" />
    </Feature>

    <CustomAction Id='InstallAction' FileKey='RDPWInst' ExeCommand='-i -o' Execute='immediate' Return='check'/>
    <CustomAction Id='UninstallAction' FileKey='RDPWInst' ExeCommand='-u' Execute='immediate' Return='check'/>
    <CustomAction Id='UpdateAction' FileKey='RDPWInst' ExeCommand='-w' Execute='immediate' Return='check'/>
<!--     <CustomAction Id='ChangeAction' Directory='ProgramFilesFolder' ExeCommand='RDP Wrapper\RDPConf' Execute='immediate' Return='check'/>
    <CustomAction Id='RepairAction' Directory='ProgramFilesFolder' ExeCommand='RDP Wrapper\RDPCheck' Execute='immediate' Return='check'/> -->

    <InstallExecuteSequence>
      <Custom Action='InstallAction' After='InstallFinalize'>NOT Installed AND NOT WIX_UPGRADE_DETECTED</Custom>
      <Custom Action='UninstallAction' Before="RemoveFiles">REMOVE AND NOT UPGRADINGPRODUCTCODE</Custom>
      <Custom Action='UpdateAction' Before="RemoveFiles">UPGRADINGPRODUCTCODE</Custom>
<!--       <Custom Action='ChangeAction' After='InstallFinalize'>Installed AND NOT REINSTALL AND NOT UPGRADINGPRODUCTCODE AND NOT REMOVE</Custom>
      <Custom Action='RepairAction' After='InstallFinalize'>REINSTALL</Custom> -->
    </InstallExecuteSequence>

  </Product>
</Wix>


================================================
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  =C3F6
Download .txt
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
Download .txt
SYMBOL INDEX (32 symbols across 5 files)

FILE: src-x86-x64-Fusix/IniFile.cpp
  function DWORD (line 120) | DWORD INI_FILE::GetFileStringFromNum(DWORD StringNumber, char *RetString...
  function PINI_SECTION (line 278) | PINI_SECTION INI_FILE::GetSection(char *SectionName)

FILE: src-x86-x64-Fusix/IniFile.h
  type INI_VAR_STRING (line 23) | typedef struct _INI_VAR_STRING
  type INI_VAR_DWORD (line 29) | typedef struct _INI_VAR_DWORD
  type INI_VAR_BYTEARRAY (line 42) | typedef struct _INI_VAR_BYTEARRAY
  type INI_SECTION_VARLIST_ENTRY (line 49) | typedef struct _INI_SECTION_VARLIST_ENTRY
  type INI_SECTION_VARLIST (line 54) | typedef struct _INI_SECTION_VARLIST
  type INI_SECTION_VARIABLE (line 63) | typedef struct _INI_SECTION_VARIABLE
  type INI_SECTION (line 70) | typedef struct _INI_SECTION
  type INI_DATA (line 78) | typedef struct _INI_DATA
  function class (line 84) | class INI_FILE

FILE: src-x86-x64-Fusix/RDPWrap.cpp
  type FARJMP (line 38) | struct FARJMP
  type FARJMP (line 48) | struct FARJMP
  function DWORD (line 69) | DWORD INIReadDWordHex(INI_FILE *IniFile, char *Sect, char *VariableName,...
  function INIReadString (line 80) | void INIReadString(INI_FILE *IniFile, char *Sect, char *VariableName, ch...
  function WriteToLog (line 93) | void WriteToLog(LPSTR Text)
  function HMODULE (line 105) | HMODULE GetCurrentModule()
  function GetModuleCodeSectionInfo (line 127) | bool GetModuleCodeSectionInfo(HMODULE hModule, PLATFORM_DWORD *BaseAddr,...
  function SetThreadsState (line 146) | void SetThreadsState(bool Resume)
  function BOOL (line 177) | BOOL __stdcall GetModuleVersion(LPCWSTR lptstrModuleName, FILE_VERSION *...
  function BOOL (line 216) | BOOL __stdcall GetFileVersion(LPCWSTR lptstrFilename, FILE_VERSION *File...
  function OverrideSL (line 255) | bool OverrideSL(LPWSTR ValueName, DWORD *Value)
  function HRESULT (line 268) | HRESULT WINAPI New_SLGetWindowsInformationDWORD(PWSTR pwszValueName, DWO...
  function HRESULT (line 316) | HRESULT __fastcall New_Win8SL(PWSTR pwszValueName, DWORD *pdwValue)
  function HRESULT (line 361) | HRESULT __fastcall New_Win8SL_CP(DWORD arg1, DWORD *pdwValue, PWSTR pwsz...
  function HRESULT (line 370) | HRESULT WINAPI New_CSLQuery_Initialize()
  function Hook (line 492) | void Hook()
  function ServiceMain (line 853) | void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv)
  function SvchostPushServiceGlobals (line 862) | void WINAPI SvchostPushServiceGlobals(void *lpGlobalData)

FILE: src-x86-x64-Fusix/dllmain.cpp
  function BOOL (line 4) | BOOL APIENTRY DllMain( HMODULE hModule,

FILE: src-x86-x64-Fusix/stdafx.h
  type LPTSTR (line 21) | typedef VOID	(WINAPI* SERVICEMAIN)(DWORD, LPTSTR*);
  type DWORD (line 23) | typedef HRESULT (WINAPI* SLGETWINDOWSINFORMATIONDWORD)(PCWSTR, DWORD*);
Condensed preview — 48 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (626K chars).
[
  {
    "path": ".gitattributes",
    "chars": 160,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Plain text (Windows)\n*.txt    diff=astextplain eol="
  },
  {
    "path": ".gitignore",
    "chars": 191,
    "preview": "# Delphi local files (user-specific info)\n*.local\n*.identcache\n\n# Delphi history and backups\n__history/\n*.~*\n\n# Compiled"
  },
  {
    "path": "LICENSE",
    "chars": 10854,
    "preview": "                                 Apache License\n                        Version 2.0, January 2004\n                     h"
  },
  {
    "path": "README.md",
    "chars": 22464,
    "preview": "# RDP Wrapper Library by Stas'M\n\n[![Telegram](https://img.shields.io/badge/chat-Telegram-blue.svg)](https://t.me/rdpwrap"
  },
  {
    "path": "bin/install.bat",
    "chars": 444,
    "preview": "@echo off\nif not exist \"%~dp0RDPWInst.exe\" goto :error\n\"%~dp0RDPWInst\" -i -o\necho ______________________________________"
  },
  {
    "path": "bin/uninstall.bat",
    "chars": 239,
    "preview": "@echo off\nif not exist \"%~dp0RDPWInst.exe\" goto :error\n\"%~dp0RDPWInst\" -u\necho.\ngoto :anykey\n:error\necho [-] Installer e"
  },
  {
    "path": "bin/update.bat",
    "chars": 239,
    "preview": "@echo off\nif not exist \"%~dp0RDPWInst.exe\" goto :error\n\"%~dp0RDPWInst\" -w\necho.\ngoto :anykey\n:error\necho [-] Installer e"
  },
  {
    "path": "res/RDPWInst.wxs",
    "chars": 2619,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<Wix xmlns=\"http://schemas.microsoft.com/wix/2006/wi\">\n  <?define ProductName=\"R"
  },
  {
    "path": "res/build_wxs.bat",
    "chars": 130,
    "preview": "@echo off\n\"%ProgramFiles%\\WiX Toolset v3.11\\bin\\candle\" RDPWInst.wxs\n\"%ProgramFiles%\\WiX Toolset v3.11\\bin\\light\" RDPWIn"
  },
  {
    "path": "res/clearres.bat",
    "chars": 728,
    "preview": "@echo off\necho [FILENAMES]> clearres.txt\necho Exe=%1>> clearres.txt\necho SaveAs=%1>> clearres.txt\necho Log=>> clearres.t"
  },
  {
    "path": "res/legacy.install.bat",
    "chars": 2418,
    "preview": "@echo off\nsetlocal EnableDelayedExpansion\necho RDP Wrapper Library Installer v1.0\necho Copyright (C) Stas'M Corp. 2013\ne"
  },
  {
    "path": "res/rdpwrap-arm-kb.ini",
    "chars": 7878,
    "preview": "; RDP Wrapper Library configuration\r\n; for Windows RT (ARMv7)\r\n\r\n; This is experimental file\r\n\r\n[Main]\r\nUpdated=2016-03-"
  },
  {
    "path": "res/rdpwrap-ini-kb.txt",
    "chars": 195150,
    "preview": "[Main]\r\n; Last updated date\r\nUpdated=2018-10-10\r\n; Address to log file (RDP Wrapper will write it, if exists)\r\nLogFile=\\"
  },
  {
    "path": "res/rdpwrap.ini",
    "chars": 131602,
    "preview": "; RDP Wrapper Library configuration\r\n; Do not modify without special knowledge\r\n\r\n[Main]\r\nUpdated=2018-10-10\r\nLogFile=\\r"
  },
  {
    "path": "src-installer/RDPWInst.dpr",
    "chars": 36721,
    "preview": "{\n  Copyright 2018 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use thi"
  },
  {
    "path": "src-installer/RDPWInst.dproj",
    "chars": 4682,
    "preview": "\t<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\t\t<PropertyGroup>\n\t\t\t<ProjectGuid>{AF9BEAA3-99CD"
  },
  {
    "path": "src-rdpcheck/MainUnit.dfm",
    "chars": 649,
    "preview": "object Frm: TFrm\n  Left = 0\n  Top = 0\n  BorderIcons = [biSystemMenu, biMinimize]\n  BorderStyle = bsSingle\n  Caption = 'L"
  },
  {
    "path": "src-rdpcheck/MainUnit.pas",
    "chars": 5725,
    "preview": "{\n  Copyright 2015 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use thi"
  },
  {
    "path": "src-rdpcheck/RDPCheck.dpr",
    "chars": 838,
    "preview": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use thi"
  },
  {
    "path": "src-rdpcheck/RDPCheck.dproj",
    "chars": 4987,
    "preview": "\t<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\t\t<PropertyGroup>\n\t\t\t<ProjectGuid>{90AE83F6-26B8"
  },
  {
    "path": "src-rdpconfig/LicenseUnit.dfm",
    "chars": 888,
    "preview": "object LicenseForm: TLicenseForm\n  Left = 0\n  Top = 0\n  BorderIcons = []\n  BorderStyle = bsDialog\n  Caption = 'License A"
  },
  {
    "path": "src-rdpconfig/LicenseUnit.pas",
    "chars": 961,
    "preview": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use thi"
  },
  {
    "path": "src-rdpconfig/MainUnit.dfm",
    "chars": 4932,
    "preview": "object MainForm: TMainForm\n  Left = 0\n  Top = 0\n  BorderStyle = bsDialog\n  Caption = 'RDP Wrapper Configuration'\n  Clien"
  },
  {
    "path": "src-rdpconfig/MainUnit.pas",
    "chars": 18542,
    "preview": "{\n  Copyright 2017 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use thi"
  },
  {
    "path": "src-rdpconfig/RDPConf.dpr",
    "chars": 975,
    "preview": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use thi"
  },
  {
    "path": "src-rdpconfig/RDPConf.dproj",
    "chars": 5085,
    "preview": "\t<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\t\t<PropertyGroup>\n\t\t\t<ProjectGuid>{A7CB4C30-85F5"
  },
  {
    "path": "src-x86-binarymaster/LiteINI.pas",
    "chars": 10047,
    "preview": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use thi"
  },
  {
    "path": "src-x86-binarymaster/rdpwrap.dpr",
    "chars": 24023,
    "preview": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use thi"
  },
  {
    "path": "src-x86-binarymaster/rdpwrap.dproj",
    "chars": 4600,
    "preview": "\t<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\t\t<PropertyGroup>\n\t\t\t<ProjectGuid>{D6811241-D595"
  },
  {
    "path": "src-x86-x64-Fusix/Export.def",
    "chars": 67,
    "preview": "LIBRARY   BTREE\nEXPORTS\n   ServiceMain\n   SvchostPushServiceGlobals"
  },
  {
    "path": "src-x86-x64-Fusix/IniFile.cpp",
    "chars": 15612,
    "preview": "/*\nCopyright 2014 Stas'M Corp.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this fil"
  },
  {
    "path": "src-x86-x64-Fusix/IniFile.h",
    "chars": 4025,
    "preview": "/*\nCopyright 2014 Stas'M Corp.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this fil"
  },
  {
    "path": "src-x86-x64-Fusix/RDPWrap.cpp",
    "chars": 26352,
    "preview": "/*\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use th"
  },
  {
    "path": "src-x86-x64-Fusix/RDPWrap.sln",
    "chars": 1510,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2012\nProject(\"{8BC9CEB8-8B4A-11D0-8D11-00A"
  },
  {
    "path": "src-x86-x64-Fusix/RDPWrap.vcxproj",
    "chars": 9889,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src-x86-x64-Fusix/RDPWrap.vcxproj.filters",
    "chars": 1746,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "src-x86-x64-Fusix/ReadMe.txt",
    "chars": 2178,
    "preview": "========================================================================\r\n    БИБЛИОТЕКА ДИНАМИЧЕСКОЙ КОМПОНОВКИ. Обзор"
  },
  {
    "path": "src-x86-x64-Fusix/dllmain.cpp",
    "chars": 205,
    "preview": "// dllmain.cpp:      DLL.\n#include \"stdafx.h\"\n\nBOOL APIENTRY DllMain( HMODULE hModule,\n                       DWORD  ul_"
  },
  {
    "path": "src-x86-x64-Fusix/stdafx.cpp",
    "chars": 121,
    "preview": "// stdafx.cpp:  ,     \n// RDPWrap.pch   \n// stdafx.obj       \n\n#include \"stdafx.h\"\n\n// TODO:          STDAFX.H\n// ,     "
  },
  {
    "path": "src-x86-x64-Fusix/stdafx.h",
    "chars": 433,
    "preview": "// stdafx.h:       \n//      ,   , \n//   \n//\n\n#pragma once\n\n#include \"targetver.h\"\n\n#define WIN32_LEAN_AND_MEAN          "
  },
  {
    "path": "src-x86-x64-Fusix/targetver.h",
    "chars": 141,
    "preview": "#pragma once\n\n//  SDKDDKVer.h       Windows.\n\n//         Windows,  WinSDKVer.h \n//    _WIN32_WINNT      SDKDDKVer.h.\n\n#i"
  },
  {
    "path": "technical.txt",
    "chars": 26068,
    "preview": "RDP Wrapper Library project by Stas'M\r\n\r\nTerminal Services supported versions\r\n6.0.X.X          (Windows Vista, any)    "
  }
]

// ... and 6 more files (download for full content)

About this extraction

This page contains the full source code of the stascorp/rdpwrap GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 48 files (573.4 KB), approximately 197.9k tokens, and a symbol index with 32 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!