This commit is contained in:
DavidXanatos 2022-10-12 21:13:44 +02:00
parent 0a71e674a4
commit e00cacb0b9
151 changed files with 21269 additions and 1332 deletions

View File

@ -35,67 +35,117 @@ jobs:
# - name: Build Sandboxie # - name: Build Sandboxie
# run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=${{ matrix.platform }} # run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=${{ matrix.platform }}
- name: Build Sandboxie 32 bit - name: Build Sandboxie x86
run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=Win32 -maxcpucount:8 run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=Win32 -maxcpucount:8
- name: Build Sandboxie 64 bit - name: Build Sandboxie x64
run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=x64 -maxcpucount:8 run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=x64 -maxcpucount:8
- name: Build Sandboxie ARM64
run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=ARM64 -maxcpucount:8
- name: Build Sandboxie ARM64EC
run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=ARM64EC -maxcpucount:8
- name: Cache Qt - name: Cache Qt
id: cache-qt id: cache-qt
uses: actions/cache@v3 uses: actions/cache@v3
with: with:
path: ${{ runner.workspace }}\Qt path: ${{ runner.workspace }}\Qt
key: Qt-5.15.2-QtCache key: Qt-6.3.1+5.15.2-QtCache
- name: Install Qt 64 bit
uses: jurplel/install-qt-action@v3 - name: Install Qt6 x64
uses: jurplel/install-qt-action@v2
with:
# version: '6.2.4'
version: '6.3.1'
dir: ..
# arch: ${{ matrix.qt-target }}
arch: 'win64_msvc2019_64'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
cached: ${{ steps.cache-qt.outputs.cache-hit }}
- name: Install Qt6 ARM64
uses: jurplel/install-qt-action@v2
with:
# version: '6.2.4'
version: '6.3.1'
dir: ..
# arch: ${{ matrix.qt-target }}
arch: 'win64_msvc2019_arm64'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
cached: ${{ steps.cache-qt.outputs.cache-hit }}
- name: Install Qt5 x64
uses: jurplel/install-qt-action@v2
with: with:
version: '5.15.2' version: '5.15.2'
dir: .. dir: ..
# arch: ${{ matrix.qt-target }} # arch: ${{ matrix.qt-target }}
arch: 'win64_msvc2019_64' arch: 'win64_msvc2019_64'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator' # tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
# cached: ${{ steps.cache-qt.outputs.cache-hit }} cached: ${{ steps.cache-qt.outputs.cache-hit }}
- name: Install Qt 32 bit - name: Install Qt5 x86
uses: jurplel/install-qt-action@v3 uses: jurplel/install-qt-action@v2
with: with:
version: '5.15.2' version: '5.15.2'
dir: .. dir: ..
# arch: ${{ matrix.qt-target }} # arch: ${{ matrix.qt-target }}
arch: 'win32_msvc2019' arch: 'win32_msvc2019'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator' # tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
# cached: ${{ steps.cache-qt.outputs.cache-hit }} cached: ${{ steps.cache-qt.outputs.cache-hit }}
- name: Installing Jom - name: Installing Jom
# if: steps.cache-qt.outputs.cache-hit != 'true' if: steps.cache-qt.outputs.cache-hit != 'true'
run: SandboxiePlus\install_jom.cmd run: SandboxiePlus\install_jom.cmd
- name: Build Sandboxie-Plus 64 bit
- name: Build Sandboxie-Plus x64
run: SandboxiePlus\qmake_plus.cmd x64 run: SandboxiePlus\qmake_plus.cmd x64
- name: Build SbieShell 64 bit # - name: Build SbieShell x64
run: msbuild /t:restore,build -p:RestorePackagesConfig=true SandboxiePlus\SbieShell\SbieShell.sln /p:Configuration="Release" /p:Platform=x64 # run: msbuild /t:restore,build -p:RestorePackagesConfig=true SandboxiePlus\SbieShell\SbieShell.sln /p:Configuration="Release" /p:Platform=x64
- name: Build Sandboxie-Plus 32 bit - name: Build Sandboxie-Plus ARM64
run: SandboxiePlus\qmake_plus.cmd ARM64
# - name: Build SbieShell ARM64
# run: msbuild /t:restore,build -p:RestorePackagesConfig=true SandboxiePlus\SbieShell\SbieShell.sln /p:Configuration="Release" /p:Platform=x64
- name: Build Sandboxie-Plus x86
run: SandboxiePlus\qmake_plus.cmd Win32 run: SandboxiePlus\qmake_plus.cmd Win32
- name: Add missing languages for Qt5 x86 (issue #1528)
run: Installer\fix_qt5_languages.cmd Win32
- name: Add Windows 7 compatible Qt6 DLL's
run: Installer\fix_qt6_win7.cmd
- name: Merging Builds - name: Merging Builds
run: Installer\merge_builds.cmd run: Installer\merge_builds.cmd
- name: Upload Sandboxie 32 - name: Upload Sandboxie x64
uses: actions/upload-artifact@v3
with:
name: Sandboxie_x86
path: |
Installer/SbiePlus32/*
retention-days: 60
- name: Upload Sandboxie 64
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: Sandboxie_x64 name: Sandboxie_x64
path: | path: |
Installer/SbiePlus64/* Installer/SbiePlus_x64/*
retention-days: 60 retention-days: 60
- name: Upload Sandboxie ARM64
uses: actions/upload-artifact@v3
with:
name: Sandboxie_ARM64
path: |
Installer/SbiePlus_a64/*
retention-days: 60
- name: Upload Sandboxie x86
uses: actions/upload-artifact@v3
with:
name: Sandboxie_x86
path: |
Installer/SbiePlus_x86/*
retention-days: 60

View File

@ -5,6 +5,25 @@ This project adheres to [Semantic Versioning](http://semver.org/).
## [1.5.0 / 5.60.0] - 2022-09-??
### Added
- Added support for Windows on ARM64 [#1321](https://github.com/sandboxie-plus/Sandboxie/issues/1321) [#645](https://github.com/sandboxie-plus/Sandboxie/issues/645)
-- Ported SbieDrv for ARM64
-- Ported low level injection mechanism for ARM64/ARM64EC
-- Ported syscall hooks for ARM64/ARM64EC
-- Ported SbieDll.dll to ARM64/ARM64EC
-- Note: ARM32 on ARM64 is not implemented and will terminate with message SBIE2338
-- Note: When Sandboxie is running, it disables the use of CHPE binaries for x86 processes globally, this is required for the forced processes functionality. This behaviour can be disabled by adding the global option "DisableCHPE=n" to the Sandboxie.ini, then x86 processes started outside the sandbox, instead of being forced, will be terminated with message SBIE2338
### fixed
- fixed issue with Win32 hooks in x86 applications
### Changed
- reworked API compatibility check
## [1.4.2 / 5.59.2] - 2022-10-10 ## [1.4.2 / 5.59.2] - 2022-10-10

View File

@ -1,43 +1,59 @@
REM @ECHO OFF REM @ECHO OFF
IF %1 == x86 (
set archPath=%1
set sysPath=%windir%\System32
set qtPath=%~dp0..\..\Qt\5.15.2\msvc2019_64
set instPath=%~dp0\SbiePlus64
IF %archPath% == x86 (
set archPath=Win32 set archPath=Win32
set sysPath=%windir%\SysWOW64 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
set qtPath=%~dp0..\..\Qt\5.15.2\msvc2019 set qtPath=%~dp0..\..\Qt\5.15.2\msvc2019
set instPath=%~dp0\SbiePlus32 set instPath=%~dp0\SbiePlus_x86
) )
IF %1 == x64 (
set archPath=x64
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
set qtPath=%~dp0..\..\Qt\5.15.2\msvc2019_64
REM set qtPath=%~dp0..\..\Qt\6.3.1\msvc2019_64
set instPath=%~dp0\SbiePlus_x64
)
IF %1 == ARM64 (
set archPath=ARM64
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"
set qtPath=%~dp0..\..\Qt\6.3.1\msvc2019_arm64
set instPath=%~dp0\SbiePlus_a64
)
set redistPath=%VCToolsRedistDir%\%1\Microsoft.VC142.CRT
@echo on
set srcPath=%~dp0..\SandboxiePlus\Bin\%archPath%\Release set srcPath=%~dp0..\SandboxiePlus\Bin\%archPath%\Release
set sbiePath=%~dp0..\Sandboxie\Bin\%archPath%\SbieRelease set sbiePath=%~dp0..\Sandboxie\Bin\%archPath%\SbieRelease
echo inst: %instPath% echo inst: %instPath%
echo arch: %archPath% echo arch: %archPath%
echo sys: %sysPath% echo redistr: %redistPath%
echo source: %srcPath% echo source: %srcPath%
echo source: %sbiePath% echo source: %sbiePath%
mkdir %instPath% mkdir %instPath%
ECHO Copying VC Runtime files ECHO Copying VC Runtime files
copy %sysPath%\msvcp140.dll %instPath%\ copy "%redistPath%\*" %instPath%\
copy %sysPath%\msvcp140_1.dll %instPath%\
copy %sysPath%\vcruntime140.dll %instPath%\
IF %archPath% == x64 (
copy %sysPath%\vcruntime140_1.dll %instPath%\
)
ECHO Copying Qt libraries ECHO Copying Qt libraries
REM IF NOT %archPath% == ARM64 (
IF %archPath% == Win32 (
copy %qtPath%\bin\Qt5Core.dll %instPath%\ copy %qtPath%\bin\Qt5Core.dll %instPath%\
copy %qtPath%\bin\Qt5Gui.dll %instPath%\ copy %qtPath%\bin\Qt5Gui.dll %instPath%\
copy %qtPath%\bin\Qt5Network.dll %instPath%\ copy %qtPath%\bin\Qt5Network.dll %instPath%\
copy %qtPath%\bin\Qt5Widgets.dll %instPath%\ copy %qtPath%\bin\Qt5Widgets.dll %instPath%\
copy %qtPath%\bin\Qt5WinExtras.dll %instPath%\ copy %qtPath%\bin\Qt5WinExtras.dll %instPath%\
) ELSE (
copy %qtPath%\bin\Qt6Core.dll %instPath%\
copy %qtPath%\bin\Qt6Gui.dll %instPath%\
copy %qtPath%\bin\Qt6Network.dll %instPath%\
copy %qtPath%\bin\Qt6Widgets.dll %instPath%\
copy %qtPath%\bin\Qt6WinExtras.dll %instPath%\
)
mkdir %instPath%\platforms mkdir %instPath%\platforms
copy %qtPath%\plugins\platforms\qdirect2d.dll %instPath%\platforms\ copy %qtPath%\plugins\platforms\qdirect2d.dll %instPath%\platforms\
@ -48,19 +64,17 @@ copy %qtPath%\plugins\platforms\qwindows.dll %instPath%\platforms\
mkdir %instPath%\styles mkdir %instPath%\styles
copy %qtPath%\plugins\styles\qwindowsvistastyle.dll %instPath%\styles\ copy %qtPath%\plugins\styles\qwindowsvistastyle.dll %instPath%\styles\
ECHO Copying OpenSSL libraries ECHO Copying OpenSSL libraries
rem copy /y %~dp0OpenSSL\%archPath%\libeay32.dll %instPath%\
rem copy /y %~dp0OpenSSL\%archPath%\ssleay32.dll %instPath%\
IF %archPath% == Win32 ( IF %archPath% == Win32 (
copy /y %~dp0OpenSSL\Win32\libssl-1_1.dll %instPath%\ copy /y %~dp0OpenSSL\Win_x86\bin\libssl-1_1.dll %instPath%\
copy /y %~dp0OpenSSL\Win32\libcrypto-1_1.dll %instPath%\ copy /y %~dp0OpenSSL\Win_x86\bin\libcrypto-1_1.dll %instPath%\
) )
IF %archPath% == x64 ( IF NOT %archPath% == Win32 (
copy /y %~dp0OpenSSL\x64\libssl-1_1-x64.dll %instPath%\ copy /y %~dp0OpenSSL\Win_%archPath%\bin\libssl-1_1-%archPath%.dll %instPath%\
copy /y %~dp0OpenSSL\x64\libcrypto-1_1-x64.dll %instPath%\ copy /y %~dp0OpenSSL\Win_%archPath%\bin\libcrypto-1_1-%archPath%.dll %instPath%\
) )
rem for OpenSSL
copy %sysPath%\msvcr100.dll %instPath%\
ECHO Copying SandMan project and libraries ECHO Copying SandMan project and libraries
copy %srcPath%\MiscHelpers.dll %instPath%\ copy %srcPath%\MiscHelpers.dll %instPath%\
@ -124,6 +138,18 @@ IF %archPath% == x64 (
copy /y %~dp0..\SandboxiePlus\x64\Release\SbieShellExt.dll %instPath%\ copy /y %~dp0..\SandboxiePlus\x64\Release\SbieShellExt.dll %instPath%\
copy /y %~dp0..\SandboxiePlus\x64\Release\SbieShellPkg.msix %instPath%\ copy /y %~dp0..\SandboxiePlus\x64\Release\SbieShellPkg.msix %instPath%\
) )
IF %archPath% == ARM64 (
mkdir %instPath%\32\
copy /y %~dp0..\Sandboxie\Bin\Win32\SbieRelease\SbieSvc.exe %instPath%\32\
copy /y %~dp0..\Sandboxie\Bin\Win32\SbieRelease\SbieDll.dll %instPath%\32\
mkdir %instPath%\64\
copy /y %~dp0..\Sandboxie\Bin\ARM64EC\SbieRelease\SbieDll.dll %instPath%\64\
copy /y %~dp0..\SandboxiePlus\ARM64\Release\SbieShellExt.dll %instPath%\
copy /y %~dp0..\SandboxiePlus\ARM64\Release\SbieShellPkg.msix %instPath%\
)
copy /y %~dp0..\Sandboxie\install\Templates.ini %instPath%\ copy /y %~dp0..\Sandboxie\install\Templates.ini %instPath%\
@ -132,4 +158,3 @@ copy /y %~dp0..\Sandboxie\install\Manifest1.txt %instPath%\
copy /y %~dp0..\Sandboxie\install\Manifest2.txt %instPath%\ copy /y %~dp0..\Sandboxie\install\Manifest2.txt %instPath%\

View File

@ -0,0 +1,8 @@
mkdir %~dp0qttranslations
mkdir %~dp0qttranslations\ts
mkdir %~dp0qttranslations\qm
set fileName=qttranslations-everywhere-src-6.2.3.zip
set downloadUrl=https://download.qt.io/archive/qt/6.2/6.2.3/submodules/%filename%
curl -LsSO --output-dir %~dp0qttranslations\ %downloadUrl%
"C:\Program Files\7-Zip\7z.exe" e -i!*\translations\qt_*.ts -i!*\translations\qtbase_*.ts -i!*\translations\qtmultimedia_*.ts %~dp0qttranslations\%filename% -bd -o%~dp0qttranslations\ts\
for %%a in (%~dp0qttranslations\ts\*.ts) do (lrelease.exe -silent %%a -qm %~dp0qttranslations\qm\%%~na.qm)

View File

@ -0,0 +1,2 @@
curl --ssl-no-revoke -L https://github.com/DavidXanatos/qtbase/releases/download/v6.3.1-w7/Qt6.3.1-w7.zip -o %~dp0..\..\Qt6.3.1-w7.zip
"C:\Program Files\7-Zip\7z.exe" x -o%~dp0..\..\Qt\6.3.1\msvc2019_64\ %~dp0..\..\Qt6.3.1-w7.zip -y

4
Installer/get_7zip.cmd Normal file
View File

@ -0,0 +1,4 @@
mkdir %~dp0\7-Zip
curl -L --url https://github.com/DavidXanatos/7z/releases/download/22.00/7z2201.zip -o %~dp0\7-Zip\7z2201.zip --ssl-no-revoke
"C:\Program Files\7-Zip\7z.exe" x -bd -o%~dp0\7-Zip\ %~dp0\7-Zip\7z2201.zip

View File

@ -1,8 +1,6 @@
set version=1.1.1q set version=1_1_1p
mkdir %~dp0\OpenSSL mkdir %~dp0\OpenSSL
curl -LsSO --output-dir %~dp0\OpenSSL\ http://wiki.overbyte.eu/arch/openssl-%version%-win64.zip curl -L --url https://github.com/DavidXanatos/openssl/releases/download/OpenSSL_%version%/OpenSSL-%version%.zip -o %~dp0\OpenSSL\OpenSSL-%version%.zip --ssl-no-revoke
"C:\Program Files\7-Zip\7z.exe" x -bd -o%~dp0\OpenSSL\x64\ %~dp0\OpenSSL\openssl-%version%-win64.zip "C:\Program Files\7-Zip\7z.exe" x -bd -o%~dp0\OpenSSL\ %~dp0\OpenSSL\OpenSSL-%version%.zip
curl -LsSO --output-dir %~dp0\OpenSSL\ http://wiki.overbyte.eu/arch/openssl-%version%-win32.zip
"C:\Program Files\7-Zip\7z.exe" x -bd -o%~dp0\OpenSSL\Win32\ %~dp0\OpenSSL\openssl-%version%-win32.zip

View File

@ -4,9 +4,11 @@ call %~dp0get_openssl.cmd
call %~dp0get_qttranslations.cmd call %~dp0get_qttranslations.cmd
call %~dp0copy_build.cmd x64 cmd.exe /c %~dp0copy_build.cmd x64
call %~dp0copy_build.cmd x86 cmd.exe /c %~dp0copy_build.cmd ARM64
cmd.exe /c %~dp0copy_build.cmd x86
REM mkdir %rootPath%\SbiePlus64\LogAPI REM mkdir %rootPath%\SbiePlus64\LogAPI

View File

@ -32,7 +32,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SandboxBITS", "apps\com\BIT
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SboxDll", "core\dll\SboxDll.vcxproj", "{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SboxDll", "core\dll\SboxDll.vcxproj", "{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D} = {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3} = {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3} {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3} = {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}
{255002EC-9FC7-422E-B497-BE2CC5012B2D} = {255002EC-9FC7-422E-B497-BE2CC5012B2D} {255002EC-9FC7-422E-B497-BE2CC5012B2D} = {255002EC-9FC7-422E-B497-BE2CC5012B2D}
EndProjectSection EndProjectSection
@ -110,142 +109,252 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "apps", "apps", "{0301861F-9
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
SbieDebug|ARM64 = SbieDebug|ARM64
SbieDebug|ARM64EC = SbieDebug|ARM64EC
SbieDebug|Win32 = SbieDebug|Win32 SbieDebug|Win32 = SbieDebug|Win32
SbieDebug|x64 = SbieDebug|x64 SbieDebug|x64 = SbieDebug|x64
SbieRelease|ARM64 = SbieRelease|ARM64
SbieRelease|ARM64EC = SbieRelease|ARM64EC
SbieRelease|Win32 = SbieRelease|Win32 SbieRelease|Win32 = SbieRelease|Win32
SbieRelease|x64 = SbieRelease|x64 SbieRelease|x64 = SbieRelease|x64
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|ARM64EC
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|ARM64EC.Build.0 = SbieDebug|ARM64EC
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|x64.Build.0 = SbieDebug|x64 {2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieDebug|x64.Build.0 = SbieDebug|x64
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|ARM64EC
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|ARM64EC.Build.0 = SbieRelease|ARM64EC
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|x64.Build.0 = SbieRelease|x64 {2D3DBCAE-883E-54A6-F8F6-11228D989033}.SbieRelease|x64.Build.0 = SbieRelease|x64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|x64.Build.0 = SbieDebug|x64 {8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieDebug|x64.Build.0 = SbieDebug|x64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|x64.Build.0 = SbieRelease|x64 {8B9E1B9D-FB3C-3009-9196-4315871BCD73}.SbieRelease|x64.Build.0 = SbieRelease|x64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|x64.Build.0 = SbieDebug|x64 {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieDebug|x64.Build.0 = SbieDebug|x64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|x64.Build.0 = SbieRelease|x64 {67579365-ED6A-C1E4-E0A3-4A7C9F14072D}.SbieRelease|x64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|ARM64.ActiveCfg = SbieRelease|ARM64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|ARM64.Build.0 = SbieRelease|ARM64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|ARM64EC.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|Win32.Build.0 = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|Win32.Build.0 = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|x64.ActiveCfg = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|x64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|x64.Build.0 = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|x64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|x64.Build.0 = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|x64.Build.0 = SbieRelease|x64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|x64.Build.0 = SbieDebug|x64 {E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieDebug|x64.Build.0 = SbieDebug|x64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|x64.Build.0 = SbieRelease|x64 {E40CC819-6990-DA28-3E1F-6708BC98E37B}.SbieRelease|x64.Build.0 = SbieRelease|x64
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|ARM64EC
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|ARM64EC.Build.0 = SbieDebug|ARM64EC
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|x64.Build.0 = SbieDebug|x64 {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieDebug|x64.Build.0 = SbieDebug|x64
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|ARM64EC
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|ARM64EC.Build.0 = SbieRelease|ARM64EC
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|x64.Build.0 = SbieRelease|x64 {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}.SbieRelease|x64.Build.0 = SbieRelease|x64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|x64.Build.0 = SbieDebug|x64 {41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieDebug|x64.Build.0 = SbieDebug|x64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|x64.Build.0 = SbieRelease|x64 {41453A79-CA9B-ABCA-981C-5242AFC72DDF}.SbieRelease|x64.Build.0 = SbieRelease|x64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|x64.Build.0 = SbieDebug|x64 {5410C534-4858-C748-86AD-0567A2451FDE}.SbieDebug|x64.Build.0 = SbieDebug|x64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|x64.Build.0 = SbieRelease|x64 {5410C534-4858-C748-86AD-0567A2451FDE}.SbieRelease|x64.Build.0 = SbieRelease|x64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|x64.Build.0 = SbieDebug|x64 {8055A629-631E-84F5-8F3C-1908F264C81D}.SbieDebug|x64.Build.0 = SbieDebug|x64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|x64.Build.0 = SbieRelease|x64 {8055A629-631E-84F5-8F3C-1908F264C81D}.SbieRelease|x64.Build.0 = SbieRelease|x64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|x64.Build.0 = SbieDebug|x64 {42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieDebug|x64.Build.0 = SbieDebug|x64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|x64.Build.0 = SbieRelease|x64 {42DB5510-0268-4655-B483-B9D6E4E48D62}.SbieRelease|x64.Build.0 = SbieRelease|x64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|ARM64.ActiveCfg = SbieRelease|ARM64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|ARM64.Build.0 = SbieRelease|ARM64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|ARM64EC.ActiveCfg = SbieRelease|ARM64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|ARM64EC.Build.0 = SbieRelease|ARM64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32 {255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|Win32.Build.0 = SbieRelease|Win32 {255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|Win32.Build.0 = SbieRelease|Win32
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|x64.ActiveCfg = SbieRelease|x64 {255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|x64.ActiveCfg = SbieRelease|x64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|x64.Build.0 = SbieRelease|x64 {255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieDebug|x64.Build.0 = SbieRelease|x64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|ARM64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|ARM64EC.Build.0 = SbieRelease|ARM64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|x64.Build.0 = SbieRelease|x64 {255002EC-9FC7-422E-B497-BE2CC5012B2D}.SbieRelease|x64.Build.0 = SbieRelease|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|x64.Build.0 = SbieRelease|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|x64.Build.0 = SbieRelease|x64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|x64.Build.0 = SbieDebug|x64 {D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieDebug|x64.Build.0 = SbieDebug|x64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|x64.Build.0 = SbieRelease|x64 {D16E291A-1F8A-4B19-AE07-0AF8CB7CCBD0}.SbieRelease|x64.Build.0 = SbieRelease|x64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|x64.Build.0 = SbieDebug|x64 {0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieDebug|x64.Build.0 = SbieDebug|x64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|x64.Build.0 = SbieRelease|x64 {0BF4988E-2325-4426-8CDC-BD221E4FB68C}.SbieRelease|x64.Build.0 = SbieRelease|x64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|x64.Build.0 = SbieDebug|x64 {B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieDebug|x64.Build.0 = SbieDebug|x64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|x64.Build.0 = SbieRelease|x64 {B8D7002B-0468-44E7-93A7-94327A5D7C7A}.SbieRelease|x64.Build.0 = SbieRelease|x64
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|ARM64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|ARM64.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|ARM64EC.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|Win32.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|Win32.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|x64.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|x64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|ARM64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|x64.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|x64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|x64.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|x64.Build.0 = SbieRelease|Win32
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|ARM64EC.ActiveCfg = SbieDebug|x64
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|x64.Build.0 = SbieDebug|x64 {3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieDebug|x64.Build.0 = SbieDebug|x64
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|ARM64EC.ActiveCfg = SbieRelease|x64
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {3A42A9F3-E0C7-4633-9570-381802D6647D}.SbieRelease|x64.ActiveCfg = SbieRelease|x64

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<WDKPATH>\WinDDK\7600.16385.1</WDKPATH>
</PropertyGroup>
<PropertyGroup>
<IncludePath>..\;..\..\;..\..\..\;$(VCInstallDir)include;$(WindowsSDK_IncludePath);$(VCInstallDir)atlmfc\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup>
<LibraryPath>$(VCInstallDir)lib\arm64;$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\;$(WindowsSdkDir)lib\arm64;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;VISUAL_STUDIO_BUILD;_WIN64;_ARM64_;UNICODE;WINVER=0x0502;_WIN32_WINNT=0x0502;WIN32=100;_WIN32_IE=0x0603;WIN32_LEAN_AND_MEAN=1;WINNT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<CallingConvention>StdCall</CallingConvention>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<DisableSpecificWarnings>4267;4312;4996;4133;4577;4091;4200</DisableSpecificWarnings>
<TreatWarningAsError>true</TreatWarningAsError>
<UndefinePreprocessorDefinitions>
</UndefinePreprocessorDefinitions>
<ExceptionHandling>false</ExceptionHandling>
<WarningLevel>Level3</WarningLevel>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions></PreprocessorDefinitions>
</ResourceCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<BuildMacro Include="WDKPATH">
<Value>$(WDKPATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<WDKPATH>\WinDDK\7600.16385.1</WDKPATH>
</PropertyGroup>
<PropertyGroup>
<IncludePath>..\;..\..\;..\..\..\;$(VCInstallDir)include;$(WindowsSDK_IncludePath);$(VCInstallDir)atlmfc\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup>
<LibraryPath>$(VCInstallDir)lib\arm64;$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\;$(WindowsSdkDir)lib\arm64;$(LibraryPath)</LibraryPath>
<OutDir>$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;VISUAL_STUDIO_BUILD;_WIN64;_AMD64_;_ARM64EC_;UNICODE;WINVER=0x0502;_WIN32_WINNT=0x0502;WIN32=100;_WIN32_IE=0x0603;WIN32_LEAN_AND_MEAN=1;WINNT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<CallingConvention>StdCall</CallingConvention>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<DisableSpecificWarnings>4267;4312;4996;4133;4577;4091;4200</DisableSpecificWarnings>
<TreatWarningAsError>true</TreatWarningAsError>
<UndefinePreprocessorDefinitions>
</UndefinePreprocessorDefinitions>
<ExceptionHandling>false</ExceptionHandling>
<WarningLevel>Level3</WarningLevel>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions></PreprocessorDefinitions>
</ResourceCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<BuildMacro Include="WDKPATH">
<Value>$(WDKPATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>

View File

@ -17,60 +17,88 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Parse", "msgs\Parse.vcxproj
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Release|ARM64 = Release|ARM64
Release|Win32 = Release|Win32 Release|Win32 = Release|Win32
Release|x64 = Release|x64 Release|x64 = Release|x64
SbieDebug|ARM64 = SbieDebug|ARM64
SbieDebug|Win32 = SbieDebug|Win32 SbieDebug|Win32 = SbieDebug|Win32
SbieDebug|x64 = SbieDebug|x64 SbieDebug|x64 = SbieDebug|x64
SbieRelease|ARM64 = SbieRelease|ARM64
SbieRelease|Win32 = SbieRelease|Win32 SbieRelease|Win32 = SbieRelease|Win32
SbieRelease|x64 = SbieRelease|x64 SbieRelease|x64 = SbieRelease|x64
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|ARM64.ActiveCfg = SbieDebug|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|ARM64.Build.0 = SbieDebug|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|Win32.ActiveCfg = SbieDebug|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|Win32.ActiveCfg = SbieDebug|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|Win32.Build.0 = SbieDebug|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|Win32.Build.0 = SbieDebug|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|x64.ActiveCfg = SbieDebug|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|x64.ActiveCfg = SbieDebug|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|x64.Build.0 = SbieDebug|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Debug|x64.Build.0 = SbieDebug|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|ARM64.ActiveCfg = SbieRelease|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|ARM64.Build.0 = SbieRelease|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|Win32.ActiveCfg = SbieRelease|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|Win32.ActiveCfg = SbieRelease|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|Win32.Build.0 = SbieRelease|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|Win32.Build.0 = SbieRelease|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|x64.ActiveCfg = SbieRelease|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|x64.ActiveCfg = SbieRelease|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|x64.Build.0 = SbieRelease|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.Release|x64.Build.0 = SbieRelease|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|ARM64.ActiveCfg = SbieDebug|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|ARM64.Build.0 = SbieDebug|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|Win32.ActiveCfg = SbieDebug|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|Win32.Build.0 = SbieDebug|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|Win32.Build.0 = SbieDebug|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|x64.ActiveCfg = SbieDebug|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|x64.ActiveCfg = SbieDebug|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|x64.Build.0 = SbieDebug|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieDebug|x64.Build.0 = SbieDebug|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|ARM64.ActiveCfg = SbieRelease|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|ARM64.Build.0 = SbieRelease|ARM64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|x64.Build.0 = SbieRelease|x64 {4019C5EB-8D1E-40E4-B7D1-5601B4B27288}.SbieRelease|x64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|ARM64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|ARM64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|Win32.ActiveCfg = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|Win32.ActiveCfg = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|Win32.Build.0 = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|Win32.Build.0 = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|x64.ActiveCfg = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|x64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|x64.Build.0 = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Debug|x64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|ARM64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|ARM64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|Win32.ActiveCfg = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|Win32.ActiveCfg = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|Win32.Build.0 = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|Win32.Build.0 = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|x64.ActiveCfg = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|x64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|x64.Build.0 = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.Release|x64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|ARM64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|ARM64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|Win32.Build.0 = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|Win32.Build.0 = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|x64.ActiveCfg = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|x64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|x64.Build.0 = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieDebug|x64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|ARM64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|ARM64.Build.0 = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|x64.ActiveCfg = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|x64.ActiveCfg = SbieRelease|x64
{63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|x64.Build.0 = SbieRelease|x64 {63B0DDD2-5E3B-EF38-F711-9652D2EB73B3}.SbieRelease|x64.Build.0 = SbieRelease|x64
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|ARM64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|ARM64.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|Win32.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|Win32.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|Win32.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|Win32.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|x64.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|x64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|x64.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Debug|x64.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|ARM64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|ARM64.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|Win32.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|Win32.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|Win32.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|Win32.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|x64.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|x64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|x64.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.Release|x64.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|ARM64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|ARM64.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|Win32.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|Win32.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|Win32.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|x64.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|x64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|x64.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieDebug|x64.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|ARM64.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|ARM64.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|Win32.ActiveCfg = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|Win32.Build.0 = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|Win32.Build.0 = SbieRelease|Win32
{7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|x64.ActiveCfg = SbieRelease|Win32 {7BA01954-12F1-4CEE-BA97-FAD3250D9776}.SbieRelease|x64.ActiveCfg = SbieRelease|Win32

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -37,6 +45,12 @@
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -51,6 +65,13 @@
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -62,6 +83,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Sandbox64.props" /> <Import Project="..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Sandbox32.props" /> <Import Project="..\Sandbox32.props" />
@ -70,9 +95,14 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Sandbox64.props" /> <Import Project="..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
@ -101,6 +131,20 @@
</ShowProgress> </ShowProgress>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>Disabled</Optimization>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>SbieDll.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>
</ShowProgress>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
@ -134,6 +178,24 @@
<IgnoreSpecificDefaultLibraries>msvcprt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>msvcprt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<FunctionLevelLinking>
</FunctionLevelLinking>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>SbieDll.lib;psapi.lib</AdditionalDependencies>
<ShowProgress>
</ShowProgress>
<IgnoreSpecificDefaultLibraries>msvcprt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="SboxHostDll.h" /> <ClInclude Include="SboxHostDll.h" />
@ -147,8 +209,10 @@
<ClCompile Include="stdafx.cpp"> <ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Create</PrecompiledHeader>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -34,6 +42,11 @@
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -44,6 +57,11 @@
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -53,12 +71,18 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox32.props" /> <Import Project="..\..\..\Sandbox32.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<TargetName>SandboxieBITS</TargetName> <TargetName>SandboxieBITS</TargetName>
@ -66,12 +90,18 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">
<TargetName>SandboxieBITS</TargetName> <TargetName>SandboxieBITS</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<TargetName>SandboxieBITS</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetName>SandboxieBITS</TargetName> <TargetName>SandboxieBITS</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<TargetName>SandboxieBITS</TargetName> <TargetName>SandboxieBITS</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetName>SandboxieBITS</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -90,6 +120,16 @@
<AdditionalDependencies>advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib;ole32.lib;wtsapi32.lib;SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib;ole32.lib;wtsapi32.lib;SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib;ole32.lib;wtsapi32.lib;SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile /> <ClCompile />
<Link> <Link>
@ -108,6 +148,16 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile />
<Link>
<AdditionalDependencies>advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib;ole32.lib;wtsapi32.lib;SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<ClCompile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="bits.c" /> <ClCompile Include="bits.c" />
</ItemGroup> </ItemGroup>

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -34,6 +42,11 @@
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -44,6 +57,11 @@
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -53,12 +71,18 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox32.props" /> <Import Project="..\..\..\Sandbox32.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
@ -69,6 +93,10 @@
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<TargetName>SandboxieCrypto</TargetName> <TargetName>SandboxieCrypto</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<LinkIncremental>true</LinkIncremental>
<TargetName>SandboxieCrypto</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetName>SandboxieCrypto</TargetName> <TargetName>SandboxieCrypto</TargetName>
<LibraryPath>$(WDKPATH)\lib\wnet\i386;$(LibraryPath)</LibraryPath> <LibraryPath>$(WDKPATH)\lib\wnet\i386;$(LibraryPath)</LibraryPath>
@ -76,6 +104,9 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<TargetName>SandboxieCrypto</TargetName> <TargetName>SandboxieCrypto</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetName>SandboxieCrypto</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -94,6 +125,16 @@
<AdditionalDependencies>SbieDll.lib;ntdll.lib;kernel32.lib;secur32.lib;advapi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;ntdll.lib;kernel32.lib;secur32.lib;advapi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>SbieDll.lib;ntdll.lib;kernel32.lib;secur32.lib;advapi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile /> <ClCompile />
<Link> <Link>
@ -112,6 +153,16 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile />
<Link>
<AdditionalDependencies>SbieDll.lib;ntdll.lib;kernel32.lib;secur32.lib;advapi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<ClCompile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="crypto.c" /> <ClCompile Include="crypto.c" />
</ItemGroup> </ItemGroup>

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -34,6 +42,11 @@
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -44,6 +57,11 @@
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -53,12 +71,18 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox32.props" /> <Import Project="..\..\..\Sandbox32.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
@ -68,12 +92,19 @@
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<TargetName>SandboxieDcomLaunch</TargetName> <TargetName>SandboxieDcomLaunch</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<LinkIncremental>true</LinkIncremental>
<TargetName>SandboxieDcomLaunch</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetName>SandboxieDcomLaunch</TargetName> <TargetName>SandboxieDcomLaunch</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<TargetName>SandboxieDcomLaunch</TargetName> <TargetName>SandboxieDcomLaunch</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetName>SandboxieDcomLaunch</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -94,6 +125,18 @@
<AdditionalDependencies>SbieDll.lib;kernel32.lib;secur32.lib;Advapi32.lib;Ntdll.lib;User32.lib</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;kernel32.lib;secur32.lib;Advapi32.lib;Ntdll.lib;User32.lib</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<MinimalRebuild>
</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>SbieDll.lib;kernel32.lib;secur32.lib;Advapi32.lib;Ntdll.lib;User32.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile> <ClCompile>
<MinimalRebuild /> <MinimalRebuild />
@ -112,6 +155,17 @@
<AdditionalDependencies>SbieDll.lib;kernel32.lib;secur32.lib;Advapi32.lib;Ntdll.lib;User32.lib</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;kernel32.lib;secur32.lib;Advapi32.lib;Ntdll.lib;User32.lib</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<MinimalRebuild>
</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>SbieDll.lib;kernel32.lib;secur32.lib;Advapi32.lib;Ntdll.lib;User32.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="dcomlaunch.c" /> <ClCompile Include="dcomlaunch.c" />
</ItemGroup> </ItemGroup>

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -34,6 +42,11 @@
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -44,6 +57,11 @@
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -53,12 +71,18 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox32.props" /> <Import Project="..\..\..\Sandbox32.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
@ -69,12 +93,19 @@
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<TargetName>SandboxieRpcSs</TargetName> <TargetName>SandboxieRpcSs</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<LinkIncremental>true</LinkIncremental>
<TargetName>SandboxieRpcSs</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetName>SandboxieRpcSs</TargetName> <TargetName>SandboxieRpcSs</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<TargetName>SandboxieRpcSs</TargetName> <TargetName>SandboxieRpcSs</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetName>SandboxieRpcSs</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -96,6 +127,18 @@
<AdditionalDependencies>SbieDll.lib;ws2_32.lib;advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;ws2_32.lib;advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<MinimalRebuild>
</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>SbieDll.lib;ws2_32.lib;advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile> <ClCompile>
<MinimalRebuild /> <MinimalRebuild />
@ -114,6 +157,17 @@
<AdditionalDependencies>SbieDll.lib;ws2_32.lib;advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;ws2_32.lib;advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<MinimalRebuild>
</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>SbieDll.lib;ws2_32.lib;advapi32.lib;kernel32.lib;ntdll.lib;gdi32.lib;user32.lib;secur32.lib;psapi.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="dde.c" /> <ClCompile Include="dde.c" />
<ClCompile Include="linger.c" /> <ClCompile Include="linger.c" />

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -36,6 +44,12 @@
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -50,6 +64,13 @@
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -59,12 +80,18 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox32.props" /> <Import Project="..\..\..\Sandbox32.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64.props" /> <Import Project="..\..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="..\..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<TargetName>SandboxieWUAU</TargetName> <TargetName>SandboxieWUAU</TargetName>
@ -76,9 +103,15 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">
<TargetName>SandboxieWUAU</TargetName> <TargetName>SandboxieWUAU</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<TargetName>SandboxieWUAU</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<TargetName>SandboxieWUAU</TargetName> <TargetName>SandboxieWUAU</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetName>SandboxieWUAU</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -100,6 +133,18 @@
<AdditionalDependencies>SbieDll.lib;secur32.lib;ntdll.lib;psapi.lib;AdvApi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;secur32.lib;ntdll.lib;psapi.lib;AdvApi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<MinimalRebuild>
</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>SbieDll.lib;secur32.lib;ntdll.lib;psapi.lib;AdvApi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile> <ClCompile>
<FunctionLevelLinking> <FunctionLevelLinking>
@ -122,6 +167,19 @@
<AdditionalDependencies>SbieDll.lib;secur32.lib;ntdll.lib;psapi.lib;AdvApi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;secur32.lib;ntdll.lib;psapi.lib;AdvApi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<FunctionLevelLinking>
</FunctionLevelLinking>
<MinimalRebuild>
</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>SbieDll.lib;secur32.lib;ntdll.lib;psapi.lib;AdvApi32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="wuau.c" /> <ClCompile Include="wuau.c" />
</ItemGroup> </ItemGroup>

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -33,6 +41,11 @@
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -43,6 +56,11 @@
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -54,6 +72,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox32.props" /> <Import Project="..\..\Sandbox32.props" />
@ -62,6 +84,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup /> <PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
@ -91,6 +117,16 @@
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries> <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
</Lib> </Lib>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Lib>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<ClCompile> <ClCompile>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
@ -100,6 +136,16 @@
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries> <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
</Lib> </Lib>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Lib>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
</Lib>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -110,6 +156,7 @@
<ClCompile Include="MyMsgBox.c" /> <ClCompile Include="MyMsgBox.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\msgs\SbieRelease\msgs.h" />
<ClInclude Include="BoxOrder.h" /> <ClInclude Include="BoxOrder.h" />
<ClInclude Include="CommonUtils.h" /> <ClInclude Include="CommonUtils.h" />
<ClInclude Include="MyGdi.h" /> <ClInclude Include="MyGdi.h" />

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -43,6 +51,15 @@
<WholeProgramOptimization>false</WholeProgramOptimization> <WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Static</UseOfMfc>
<UseOfAtl>false</UseOfAtl>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -61,6 +78,15 @@
<UseOfAtl>false</UseOfAtl> <UseOfAtl>false</UseOfAtl>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Static</UseOfMfc>
<UseOfAtl>false</UseOfAtl>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -72,6 +98,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox32.props" /> <Import Project="..\..\Sandbox32.props" />
@ -80,6 +110,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<TargetName>SbieCtrl</TargetName> <TargetName>SbieCtrl</TargetName>
@ -89,6 +123,10 @@
<TargetName>SbieCtrl</TargetName> <TargetName>SbieCtrl</TargetName>
<EmbedManifest>false</EmbedManifest> <EmbedManifest>false</EmbedManifest>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<TargetName>SbieCtrl</TargetName>
<EmbedManifest>false</EmbedManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetName>SbieCtrl</TargetName> <TargetName>SbieCtrl</TargetName>
<EmbedManifest>false</EmbedManifest> <EmbedManifest>false</EmbedManifest>
@ -97,6 +135,10 @@
<TargetName>SbieCtrl</TargetName> <TargetName>SbieCtrl</TargetName>
<EmbedManifest>false</EmbedManifest> <EmbedManifest>false</EmbedManifest>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetName>SbieCtrl</TargetName>
<EmbedManifest>false</EmbedManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -136,6 +178,27 @@
</IgnoreAllDefaultLibraries> </IgnoreAllDefaultLibraries>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<FunctionLevelLinking>
</FunctionLevelLinking>
<ExceptionHandling>Sync</ExceptionHandling>
<MinimalRebuild>
</MinimalRebuild>
<PrecompiledHeader>Use</PrecompiledHeader>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>uafxcw.lib;common.lib;SbieDll.lib;ntdll.lib;psapi.lib;wininet.lib;winhttp.lib</AdditionalDependencies>
<EntryPointSymbol>
</EntryPointSymbol>
<IgnoreSpecificDefaultLibraries>uafxcw.lib</IgnoreSpecificDefaultLibraries>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile> <ClCompile>
<FunctionLevelLinking> <FunctionLevelLinking>
@ -170,18 +233,42 @@
</IgnoreAllDefaultLibraries> </IgnoreAllDefaultLibraries>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<FunctionLevelLinking>
</FunctionLevelLinking>
<ExceptionHandling>Sync</ExceptionHandling>
<MinimalRebuild>
</MinimalRebuild>
<PrecompiledHeader>Use</PrecompiledHeader>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>uafxcw.lib;common.lib;SbieDll.lib;ntdll.lib;psapi.lib;wininet.lib;winhttp.lib</AdditionalDependencies>
<EntryPointSymbol>
</EntryPointSymbol>
<IgnoreSpecificDefaultLibraries>uafxcw.lib</IgnoreSpecificDefaultLibraries>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\common\json\JSON.cpp"> <ClCompile Include="..\..\common\json\JSON.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\json\JSONValue.cpp"> <ClCompile Include="..\..\common\json\JSONValue.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\common\FontStore.cpp" /> <ClCompile Include="..\common\FontStore.cpp" />
<ClCompile Include="..\common\Layout.cpp" /> <ClCompile Include="..\common\Layout.cpp" />
@ -189,23 +276,31 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\common\RunBrowser.cpp"> <ClCompile Include="..\common\RunBrowser.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\common\RunStartExe.cpp"> <ClCompile Include="..\common\RunStartExe.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\common\WebView.c"> <ClCompile Include="..\common\WebView.c">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
@ -223,19 +318,25 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="BoxProc.cpp"> <ClCompile Include="BoxProc.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="CreateDialog.cpp"> <ClCompile Include="CreateDialog.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="DeleteDialog.cpp" /> <ClCompile Include="DeleteDialog.cpp" />
<ClCompile Include="DisableForceDialog.cpp" /> <ClCompile Include="DisableForceDialog.cpp" />
@ -245,7 +346,9 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="FlashingButton.cpp" /> <ClCompile Include="FlashingButton.cpp" />
<ClCompile Include="GettingStartedWizard.cpp" /> <ClCompile Include="GettingStartedWizard.cpp" />
@ -274,7 +377,9 @@
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Create</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="TabbingComboBox.cpp" /> <ClCompile Include="TabbingComboBox.cpp" />
<ClCompile Include="TemplateListBox.cpp" /> <ClCompile Include="TemplateListBox.cpp" />

View File

@ -73,15 +73,17 @@ CInitWait::CInitWait(CWinApp *myApp)
m_pMenu = NULL; m_pMenu = NULL;
m_app_ver.Format(L"%S", MY_VERSION_COMPAT); m_app_ver.Format(L"%S", MY_VERSION_STRING);
m_svc_ver = L"?"; m_svc_ver = L"?";
m_svc_abi = 0;
m_drv_ver = L"?"; m_drv_ver = L"?";
m_drv_abi = 0;
m_try_elevate = CMyApp::m_WindowsVista; m_try_elevate = CMyApp::m_WindowsVista;
GetVersions(); GetVersions();
if (m_app_ver == m_svc_ver && m_app_ver == m_drv_ver) if (m_svc_abi == MY_ABI_VERSION && m_drv_abi == MY_ABI_VERSION)
return; return;
// //
@ -132,7 +134,7 @@ CInitWait::CInitWait(CWinApp *myApp)
::DispatchMessage(&msg); ::DispatchMessage(&msg);
} }
if (m_app_ver != m_svc_ver || m_app_ver != m_drv_ver) if (m_svc_abi != MY_ABI_VERSION|| m_drv_abi != MY_ABI_VERSION)
exit(0); exit(0);
KillTimer(ID_TIMER); KillTimer(ID_TIMER);
@ -187,7 +189,8 @@ void CInitWait::GetVersions()
if (rpl) { if (rpl) {
if (rpl->h.status == 0 && rpl->version[0]) { if (rpl->h.status == 0 && rpl->version[0]) {
m_svc_ver = rpl->version; m_svc_ver = rpl->version;
if (m_svc_ver != m_app_ver) m_svc_abi = rpl->abi_ver;
if (m_svc_abi != MY_ABI_VERSION)
fail = TRUE; fail = TRUE;
} }
SbieDll_FreeMem(rpl); SbieDll_FreeMem(rpl);
@ -196,10 +199,10 @@ void CInitWait::GetVersions()
if (m_drv_ver.GetAt(0) == L'?') { if (m_drv_ver.GetAt(0) == L'?') {
SbieApi_GetVersion(drv_ver); SbieApi_GetVersionEx(drv_ver, &m_drv_abi);
if (drv_ver[0] && _wcsicmp(drv_ver, L"unknown") != 0) { if (drv_ver[0] && _wcsicmp(drv_ver, L"unknown") != 0) {
m_drv_ver = drv_ver; m_drv_ver = drv_ver;
if (m_drv_ver != m_app_ver) if (m_drv_abi != MY_ABI_VERSION)
fail = TRUE; fail = TRUE;
} }
} }
@ -243,7 +246,7 @@ void CInitWait::OnTimer(UINT_PTR nIDEvent)
CMyApp::ChangeTrayIcon(m_hIconPtr, CString()); CMyApp::ChangeTrayIcon(m_hIconPtr, CString());
GetVersions(); GetVersions();
if (m_app_ver == m_svc_ver && m_app_ver == m_drv_ver) if (m_svc_abi == MY_ABI_VERSION && m_drv_abi == MY_ABI_VERSION)
m_hIconPtr = NULL; m_hIconPtr = NULL;
else if (m_try_elevate) { else if (m_try_elevate) {

View File

@ -33,7 +33,9 @@ class CInitWait : public CWnd
CString m_app_ver; CString m_app_ver;
CString m_svc_ver; CString m_svc_ver;
ULONG m_svc_abi;
CString m_drv_ver; CString m_drv_ver;
ULONG m_drv_abi;
HICON m_hIcon1; HICON m_hIcon1;
HICON m_hIcon2; HICON m_hIcon2;

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -49,6 +57,12 @@
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -63,6 +77,13 @@
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -74,6 +95,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox32.props" /> <Import Project="..\..\Sandbox32.props" />
@ -82,6 +107,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<TargetName>SbieIni</TargetName> <TargetName>SbieIni</TargetName>
@ -89,12 +118,18 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">
<TargetName>SbieIni</TargetName> <TargetName>SbieIni</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<TargetName>SbieIni</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetName>SbieIni</TargetName> <TargetName>SbieIni</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<TargetName>SbieIni</TargetName> <TargetName>SbieIni</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetName>SbieIni</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader> <PrecompiledHeader>
@ -121,6 +156,21 @@
<AdditionalDependencies>SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>Disabled</Optimization>
<MinimalRebuild>
</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalDependencies>SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader> <PrecompiledHeader>
@ -149,6 +199,22 @@
<AdditionalDependencies>SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<FunctionLevelLinking>
</FunctionLevelLinking>
<MinimalRebuild>
</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalDependencies>SbieDll.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -36,6 +44,12 @@
<UseOfMfc>Static</UseOfMfc> <UseOfMfc>Static</UseOfMfc>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<UseOfMfc>Static</UseOfMfc>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -48,6 +62,12 @@
<UseOfMfc>Static</UseOfMfc> <UseOfMfc>Static</UseOfMfc>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<UseOfMfc>Static</UseOfMfc>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -57,12 +77,18 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets">
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="..\..\Sandbox32.props" /> <Import Project="..\..\Sandbox32.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets">
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<EmbedManifest>false</EmbedManifest> <EmbedManifest>false</EmbedManifest>
@ -70,12 +96,18 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">
<EmbedManifest>false</EmbedManifest> <EmbedManifest>false</EmbedManifest>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<EmbedManifest>false</EmbedManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<EmbedManifest>false</EmbedManifest> <EmbedManifest>false</EmbedManifest>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<EmbedManifest>false</EmbedManifest> <EmbedManifest>false</EmbedManifest>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<EmbedManifest>false</EmbedManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
@ -106,6 +138,22 @@
<OutputManifestFile>$(IntDir)$(TargetName)$(TargetExt).embed.manifest</OutputManifestFile> <OutputManifestFile>$(IntDir)$(TargetName)$(TargetExt).embed.manifest</OutputManifestFile>
</Manifest> </Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>libvcruntime.lib;libucrt.lib;ntdll.lib;User32.lib;Shell32.lib;Shlwapi.lib;Kernel32.lib;Gdi32.lib;SbieDll.lib;Ole32.lib;Common.lib;Advapi32.lib;Comctl32.lib;Comdlg32.lib;uuid.lib;Gdiplus.lib</AdditionalDependencies>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_MSC_VER=1200;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Manifest>
<OutputManifestFile>$(IntDir)$(TargetName)$(TargetExt).embed.manifest</OutputManifestFile>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile /> <ClCompile />
<Link> <Link>
@ -139,57 +187,92 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile />
<Link>
<AdditionalDependencies>libvcruntime.lib;libucrt.lib;ntdll.lib;User32.lib;Shell32.lib;Shlwapi.lib;Kernel32.lib;Gdi32.lib;SbieDll.lib;Ole32.lib;Common.lib;Advapi32.lib;Comctl32.lib;Comdlg32.lib;uuid.lib;Gdiplus.lib</AdditionalDependencies>
<FullProgramDatabaseFile>true</FullProgramDatabaseFile>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_MSC_VER=1200;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Manifest>
<OutputManifestFile>$(IntDir)$(TargetName)$(TargetExt).embed.manifest</OutputManifestFile>
</Manifest>
<ClCompile>
<ExceptionHandling>Sync</ExceptionHandling>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="aboutdlg.cpp" /> <ClCompile Include="aboutdlg.cpp" />
<ClCompile Include="boxdlg.cpp"> <ClCompile Include="boxdlg.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Use</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="delete.cpp"> <ClCompile Include="delete.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Use</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="env.cpp"> <ClCompile Include="env.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Use</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="links.cpp"> <ClCompile Include="links.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Use</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="menu.cpp"> <ClCompile Include="menu.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Use</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="rundlg.cpp"> <ClCompile Include="rundlg.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Use</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="start.cpp"> <ClCompile Include="start.cpp">
<ExceptionHandling Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Sync</ExceptionHandling> <ExceptionHandling Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Sync</ExceptionHandling>
<ExceptionHandling Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Sync</ExceptionHandling> <ExceptionHandling Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Sync</ExceptionHandling>
<ExceptionHandling Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Sync</ExceptionHandling>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Use</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Use</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="stdafx.cpp"> <ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">Create</PrecompiledHeader>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -201,6 +284,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Image Include="..\res\bigex.ico" /> <Image Include="..\res\bigex.ico" />
<Image Include="..\res\MastheadLogo.jpg" />
<Image Include="..\res\start-icon.ico" /> <Image Include="..\res\start-icon.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -0,0 +1,117 @@
##############################################################################
##
## Makefile for Detours.
##
## Microsoft Research Detours Package, Version 4.0.1
##
## Copyright (c) Microsoft Corporation. All rights reserved.
##
ROOT = ..
!include "$(ROOT)\system.mak"
!IF "$(DETOURS_SOURCE_BROWSING)" == ""
DETOURS_SOURCE_BROWSING = 0
!ENDIF
#######################/#######################################################
##
CFLAGS=/W4 /WX /Zi /MT /Gy /Gm- /Zl /Od
!IF $(DETOURS_SOURCE_BROWSING)==1
CFLAGS=$(CFLAGS) /FR
!ELSE
CFLAGS=$(CFLAGS) /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x501
!ENDIF
!IF "$(DETOURS_TARGET_PROCESSOR)" == "IA64"
CFLAGS=$(CFLAGS) /wd4163 # intrinsic rdtebex not available; using newer Windows headers with older compiler
!ENDIF
!if defined(DETOURS_WIN_7) && defined(DETOURS_CL_17_OR_NEWER)
CFLAGS=$(CFLAGS) /D_USING_V110_SDK71_
!elseif defined(DETOURS_ANALYZE)
CFLAGS=$(CFLAGS) /analyze
!endif
OBJS = \
$(OBJD)\detours.obj \
$(OBJD)\modules.obj \
$(OBJD)\disasm.obj \
$(OBJD)\image.obj \
$(OBJD)\creatwth.obj \
$(OBJD)\disolx86.obj \
$(OBJD)\disolx64.obj \
$(OBJD)\disolia64.obj \
$(OBJD)\disolarm.obj \
$(OBJD)\disolarm64.obj \
##############################################################################
##
.SUFFIXES: .cpp .h .obj
!ifdef DETOURS_ANALYZE
.cpp{$(OBJD)}.obj:
$(CC) $(CFLAGS) /Fd$(LIBD)\detours.pdb /Fo$(OBJD)\ /c $<
!else
.cpp{$(OBJD)}.obj::
$(CC) $(CFLAGS) /Fd$(LIBD)\detours.pdb /Fo$(OBJD)\ /c $<
!endif
##############################################################################
all: dirs \
$(LIBD)\detours.lib \
$(INCD)\detours.h \
$(INCD)\detver.h \
!IF $(DETOURS_SOURCE_BROWSING)==1
$(OBJD)\detours.bsc \
!endif
##############################################################################
clean:
-del *~ 2>nul
-del $(LIBD)\detours.pdb $(LIBD)\detours.lib 2>nul
-rmdir /q /s $(OBJD) 2>nul
realclean: clean
-rmdir /q /s $(OBJDS) 2>nul
##############################################################################
dirs:
@if not exist "$(INCD)" mkdir "$(INCD)" && echo. Created $(INCD)
@if not exist "$(LIBD)" mkdir "$(LIBD)" && echo. Created $(LIBD)
@if not exist "$(BIND)" mkdir "$(BIND)" && echo. Created $(BIND)
@if not exist "$(OBJD)" mkdir "$(OBJD)" && echo. Created $(OBJD)
$(OBJD)\detours.bsc : $(OBJS)
bscmake /v /n /o $@ $(OBJS:.obj=.sbr)
$(LIBD)\detours.lib : $(OBJS)
link /lib /out:$@ $(OBJS)
$(INCD)\detours.h : detours.h
copy detours.h $@
$(INCD)\detver.h : detver.h
copy detver.h $@
$(OBJD)\detours.obj : detours.cpp detours.h
$(OBJD)\modules.obj : modules.cpp detours.h
$(OBJD)\disasm.obj : disasm.cpp detours.h
$(OBJD)\image.obj : image.cpp detours.h
$(OBJD)\creatwth.obj : creatwth.cpp uimports.cpp detours.h
$(OBJD)\disolx86.obj: disasm.cpp detours.h
$(OBJD)\disolx64.obj: disasm.cpp detours.h
$(OBJD)\disolia64.obj: disasm.cpp detours.h
$(OBJD)\disolarm.obj: disasm.cpp detours.h
$(OBJD)\disolarm64.obj: disasm.cpp detours.h
test: all
cd $(MAKEDIR)\..\samples\slept
nmake /nologo test
cd $(MAKEDIR)
################################################################# End of File.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,27 @@
//////////////////////////////////////////////////////////////////////////////
//
// Common version parameters.
//
// Microsoft Research Detours Package, Version 4.0.1
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
#define _USING_V110_SDK71_ 1
#include "winver.h"
#if 0
#include <windows.h>
#include <detours.h>
#else
#ifndef DETOURS_STRINGIFY
#define DETOURS_STRINGIFY(x) DETOURS_STRINGIFY_(x)
#define DETOURS_STRINGIFY_(x) #x
#endif
#define VER_FILEFLAGSMASK 0x3fL
#define VER_FILEFLAGS 0x0L
#define VER_FILEOS 0x00040004L
#define VER_FILETYPE 0x00000002L
#define VER_FILESUBTYPE 0x00000000L
#endif
#define VER_DETOURS_BITS DETOUR_STRINGIFY(DETOURS_BITS)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
#define DETOURS_ARM_OFFLINE_LIBRARY
#include "disasm.cpp"

View File

@ -0,0 +1,2 @@
#define DETOURS_ARM64_OFFLINE_LIBRARY
#include "disasm.cpp"

View File

@ -0,0 +1,2 @@
#define DETOURS_IA64_OFFLINE_LIBRARY
#include "disasm.cpp"

View File

@ -0,0 +1,2 @@
#define DETOURS_X64_OFFLINE_LIBRARY
#include "disasm.cpp"

View File

@ -0,0 +1,2 @@
#define DETOURS_X86_OFFLINE_LIBRARY
#include "disasm.cpp"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,929 @@
//////////////////////////////////////////////////////////////////////////////
//
// Module Enumeration Functions (modules.cpp of detours.lib)
//
// Microsoft Research Detours Package, Version 4.0.1
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Module enumeration functions.
//
#define _CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS 1
#pragma warning(disable:4068) // unknown pragma (suppress)
#if _MSC_VER >= 1900
#pragma warning(push)
#pragma warning(disable:4091) // empty typedef
#endif
#define _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE 1
#include <windows.h>
#if (_MSC_VER < 1310)
#else
#pragma warning(push)
#if _MSC_VER > 1400
#pragma warning(disable:6102 6103) // /analyze warnings
#endif
#include <strsafe.h>
#pragma warning(pop)
#endif
// #define DETOUR_DEBUG 1
#define DETOURS_INTERNAL
#include "detours.h"
#if DETOURS_VERSION != 0x4c0c1 // 0xMAJORcMINORcPATCH
#error detours.h version mismatch
#endif
#if _MSC_VER >= 1900
#pragma warning(pop)
#endif
#define CLR_DIRECTORY OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]
#define IAT_DIRECTORY OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT]
//////////////////////////////////////////////////////////////////////////////
//
const GUID DETOUR_EXE_RESTORE_GUID = {
0x2ed7a3ff, 0x3339, 0x4a8d,
{ 0x80, 0x5c, 0xd4, 0x98, 0x15, 0x3f, 0xc2, 0x8f }};
//////////////////////////////////////////////////////////////////////////////
//
PDETOUR_SYM_INFO DetourLoadImageHlp(VOID)
{
static DETOUR_SYM_INFO symInfo;
static PDETOUR_SYM_INFO pSymInfo = NULL;
static BOOL failed = false;
if (failed) {
return NULL;
}
if (pSymInfo != NULL) {
return pSymInfo;
}
ZeroMemory(&symInfo, sizeof(symInfo));
// Create a real handle to the process.
#if 0
DuplicateHandle(GetCurrentProcess(),
GetCurrentProcess(),
GetCurrentProcess(),
&symInfo.hProcess,
0,
FALSE,
DUPLICATE_SAME_ACCESS);
#else
symInfo.hProcess = GetCurrentProcess();
#endif
symInfo.hDbgHelp = LoadLibraryExW(L"dbghelp.dll", NULL, 0);
if (symInfo.hDbgHelp == NULL) {
abort:
failed = true;
if (symInfo.hDbgHelp != NULL) {
FreeLibrary(symInfo.hDbgHelp);
}
symInfo.pfImagehlpApiVersionEx = NULL;
symInfo.pfSymInitialize = NULL;
symInfo.pfSymSetOptions = NULL;
symInfo.pfSymGetOptions = NULL;
symInfo.pfSymLoadModule64 = NULL;
symInfo.pfSymGetModuleInfo64 = NULL;
symInfo.pfSymFromName = NULL;
return NULL;
}
symInfo.pfImagehlpApiVersionEx
= (PF_ImagehlpApiVersionEx)GetProcAddress(symInfo.hDbgHelp,
"ImagehlpApiVersionEx");
symInfo.pfSymInitialize
= (PF_SymInitialize)GetProcAddress(symInfo.hDbgHelp, "SymInitialize");
symInfo.pfSymSetOptions
= (PF_SymSetOptions)GetProcAddress(symInfo.hDbgHelp, "SymSetOptions");
symInfo.pfSymGetOptions
= (PF_SymGetOptions)GetProcAddress(symInfo.hDbgHelp, "SymGetOptions");
symInfo.pfSymLoadModule64
= (PF_SymLoadModule64)GetProcAddress(symInfo.hDbgHelp, "SymLoadModule64");
symInfo.pfSymGetModuleInfo64
= (PF_SymGetModuleInfo64)GetProcAddress(symInfo.hDbgHelp, "SymGetModuleInfo64");
symInfo.pfSymFromName
= (PF_SymFromName)GetProcAddress(symInfo.hDbgHelp, "SymFromName");
API_VERSION av;
ZeroMemory(&av, sizeof(av));
av.MajorVersion = API_VERSION_NUMBER;
if (symInfo.pfImagehlpApiVersionEx == NULL ||
symInfo.pfSymInitialize == NULL ||
symInfo.pfSymLoadModule64 == NULL ||
symInfo.pfSymGetModuleInfo64 == NULL ||
symInfo.pfSymFromName == NULL) {
goto abort;
}
symInfo.pfImagehlpApiVersionEx(&av);
if (av.MajorVersion < API_VERSION_NUMBER) {
goto abort;
}
if (!symInfo.pfSymInitialize(symInfo.hProcess, NULL, FALSE)) {
// We won't retry the initialize if it fails.
goto abort;
}
if (symInfo.pfSymGetOptions != NULL && symInfo.pfSymSetOptions != NULL) {
DWORD dw = symInfo.pfSymGetOptions();
dw &= ~(SYMOPT_CASE_INSENSITIVE |
SYMOPT_UNDNAME |
SYMOPT_DEFERRED_LOADS |
0);
dw |= (
#if defined(SYMOPT_EXACT_SYMBOLS)
SYMOPT_EXACT_SYMBOLS |
#endif
#if defined(SYMOPT_NO_UNQUALIFIED_LOADS)
SYMOPT_NO_UNQUALIFIED_LOADS |
#endif
SYMOPT_DEFERRED_LOADS |
#if defined(SYMOPT_FAIL_CRITICAL_ERRORS)
SYMOPT_FAIL_CRITICAL_ERRORS |
#endif
#if defined(SYMOPT_INCLUDE_32BIT_MODULES)
SYMOPT_INCLUDE_32BIT_MODULES |
#endif
0);
symInfo.pfSymSetOptions(dw);
}
pSymInfo = &symInfo;
return pSymInfo;
}
PVOID WINAPI DetourFindFunction(_In_ PCSTR pszModule,
_In_ PCSTR pszFunction)
{
/////////////////////////////////////////////// First, try GetProcAddress.
//
#pragma prefast(suppress:28752, "We don't do the unicode conversion for LoadLibraryExA.")
HMODULE hModule = LoadLibraryExA(pszModule, NULL, 0);
if (hModule == NULL) {
return NULL;
}
PBYTE pbCode = (PBYTE)GetProcAddress(hModule, pszFunction);
if (pbCode) {
return pbCode;
}
////////////////////////////////////////////////////// Then try ImageHelp.
//
DETOUR_TRACE(("DetourFindFunction(%hs, %hs)\n", pszModule, pszFunction));
PDETOUR_SYM_INFO pSymInfo = DetourLoadImageHlp();
if (pSymInfo == NULL) {
DETOUR_TRACE(("DetourLoadImageHlp failed: %d\n",
GetLastError()));
return NULL;
}
if (pSymInfo->pfSymLoadModule64(pSymInfo->hProcess, NULL,
(PCHAR)pszModule, NULL,
(DWORD64)hModule, 0) == 0) {
if (ERROR_SUCCESS != GetLastError()) {
DETOUR_TRACE(("SymLoadModule64(%p) failed: %d\n",
pSymInfo->hProcess, GetLastError()));
return NULL;
}
}
HRESULT hrRet;
CHAR szFullName[512];
IMAGEHLP_MODULE64 modinfo;
ZeroMemory(&modinfo, sizeof(modinfo));
modinfo.SizeOfStruct = sizeof(modinfo);
if (!pSymInfo->pfSymGetModuleInfo64(pSymInfo->hProcess, (DWORD64)hModule, &modinfo)) {
DETOUR_TRACE(("SymGetModuleInfo64(%p, %p) failed: %d\n",
pSymInfo->hProcess, hModule, GetLastError()));
return NULL;
}
hrRet = StringCchCopyA(szFullName, sizeof(szFullName)/sizeof(CHAR), modinfo.ModuleName);
if (FAILED(hrRet)) {
DETOUR_TRACE(("StringCchCopyA failed: %08x\n", hrRet));
return NULL;
}
hrRet = StringCchCatA(szFullName, sizeof(szFullName)/sizeof(CHAR), "!");
if (FAILED(hrRet)) {
DETOUR_TRACE(("StringCchCatA failed: %08x\n", hrRet));
return NULL;
}
hrRet = StringCchCatA(szFullName, sizeof(szFullName)/sizeof(CHAR), pszFunction);
if (FAILED(hrRet)) {
DETOUR_TRACE(("StringCchCatA failed: %08x\n", hrRet));
return NULL;
}
struct CFullSymbol : SYMBOL_INFO {
CHAR szRestOfName[512];
} symbol;
ZeroMemory(&symbol, sizeof(symbol));
//symbol.ModBase = (ULONG64)hModule;
symbol.SizeOfStruct = sizeof(SYMBOL_INFO);
#ifdef DBHLPAPI
symbol.MaxNameLen = sizeof(symbol.szRestOfName)/sizeof(symbol.szRestOfName[0]);
#else
symbol.MaxNameLength = sizeof(symbol.szRestOfName)/sizeof(symbol.szRestOfName[0]);
#endif
if (!pSymInfo->pfSymFromName(pSymInfo->hProcess, szFullName, &symbol)) {
DETOUR_TRACE(("SymFromName(%hs) failed: %d\n", szFullName, GetLastError()));
return NULL;
}
#if defined(DETOURS_IA64)
// On the IA64, we get a raw code pointer from the symbol engine
// and have to convert it to a wrapped [code pointer, global pointer].
//
PPLABEL_DESCRIPTOR pldEntry = (PPLABEL_DESCRIPTOR)DetourGetEntryPoint(hModule);
PPLABEL_DESCRIPTOR pldSymbol = new PLABEL_DESCRIPTOR;
pldSymbol->EntryPoint = symbol.Address;
pldSymbol->GlobalPointer = pldEntry->GlobalPointer;
return (PBYTE)pldSymbol;
#elif defined(DETOURS_ARM)
// On the ARM, we get a raw code pointer, which we must convert into a
// valied Thumb2 function pointer.
return DETOURS_PBYTE_TO_PFUNC(symbol.Address);
#else
return (PBYTE)symbol.Address;
#endif
}
//////////////////////////////////////////////////// Module Image Functions.
//
HMODULE WINAPI DetourEnumerateModules(_In_opt_ HMODULE hModuleLast)
{
PBYTE pbLast = (PBYTE)hModuleLast + MM_ALLOCATION_GRANULARITY;
MEMORY_BASIC_INFORMATION mbi;
ZeroMemory(&mbi, sizeof(mbi));
// Find the next memory region that contains a mapped PE image.
//
for (;; pbLast = (PBYTE)mbi.BaseAddress + mbi.RegionSize) {
if (VirtualQuery(pbLast, &mbi, sizeof(mbi)) <= 0) {
break;
}
// Skip uncommitted regions and guard pages.
//
if ((mbi.State != MEM_COMMIT) ||
((mbi.Protect & 0xff) == PAGE_NOACCESS) ||
(mbi.Protect & PAGE_GUARD)) {
continue;
}
__try {
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)pbLast;
if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE ||
(DWORD)pDosHeader->e_lfanew > mbi.RegionSize ||
(DWORD)pDosHeader->e_lfanew < sizeof(*pDosHeader)) {
continue;
}
PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
pDosHeader->e_lfanew);
if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
continue;
}
return (HMODULE)pDosHeader;
}
#pragma prefast(suppress:28940, "A bad pointer means this probably isn't a PE header.")
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
continue;
}
}
return NULL;
}
PVOID WINAPI DetourGetEntryPoint(_In_opt_ HMODULE hModule)
{
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hModule;
if (hModule == NULL) {
pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandleW(NULL);
}
__try {
#pragma warning(suppress:6011) // GetModuleHandleW(NULL) never returns NULL.
if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return NULL;
}
PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
pDosHeader->e_lfanew);
if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
SetLastError(ERROR_INVALID_EXE_SIGNATURE);
return NULL;
}
if (pNtHeader->FileHeader.SizeOfOptionalHeader == 0) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
PDETOUR_CLR_HEADER pClrHeader = NULL;
if (pNtHeader->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
if (((PIMAGE_NT_HEADERS32)pNtHeader)->CLR_DIRECTORY.VirtualAddress != 0 &&
((PIMAGE_NT_HEADERS32)pNtHeader)->CLR_DIRECTORY.Size != 0) {
pClrHeader = (PDETOUR_CLR_HEADER)
(((PBYTE)pDosHeader)
+ ((PIMAGE_NT_HEADERS32)pNtHeader)->CLR_DIRECTORY.VirtualAddress);
}
}
else if (pNtHeader->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
if (((PIMAGE_NT_HEADERS64)pNtHeader)->CLR_DIRECTORY.VirtualAddress != 0 &&
((PIMAGE_NT_HEADERS64)pNtHeader)->CLR_DIRECTORY.Size != 0) {
pClrHeader = (PDETOUR_CLR_HEADER)
(((PBYTE)pDosHeader)
+ ((PIMAGE_NT_HEADERS64)pNtHeader)->CLR_DIRECTORY.VirtualAddress);
}
}
if (pClrHeader != NULL) {
// For MSIL assemblies, we want to use the _Cor entry points.
HMODULE hClr = GetModuleHandleW(L"MSCOREE.DLL");
if (hClr == NULL) {
return NULL;
}
SetLastError(NO_ERROR);
return GetProcAddress(hClr, "_CorExeMain");
}
SetLastError(NO_ERROR);
// Pure resource DLLs have neither an entry point nor CLR information
// so handle them by returning NULL (LastError is NO_ERROR)
if (pNtHeader->OptionalHeader.AddressOfEntryPoint == 0) {
return NULL;
}
return ((PBYTE)pDosHeader) +
pNtHeader->OptionalHeader.AddressOfEntryPoint;
}
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
}
ULONG WINAPI DetourGetModuleSize(_In_opt_ HMODULE hModule)
{
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hModule;
if (hModule == NULL) {
pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandleW(NULL);
}
__try {
#pragma warning(suppress:6011) // GetModuleHandleW(NULL) never returns NULL.
if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return NULL;
}
PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
pDosHeader->e_lfanew);
if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
SetLastError(ERROR_INVALID_EXE_SIGNATURE);
return NULL;
}
if (pNtHeader->FileHeader.SizeOfOptionalHeader == 0) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
SetLastError(NO_ERROR);
return (pNtHeader->OptionalHeader.SizeOfImage);
}
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
}
HMODULE WINAPI DetourGetContainingModule(_In_ PVOID pvAddr)
{
MEMORY_BASIC_INFORMATION mbi;
ZeroMemory(&mbi, sizeof(mbi));
__try {
if (VirtualQuery(pvAddr, &mbi, sizeof(mbi)) <= 0) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return NULL;
}
// Skip uncommitted regions and guard pages.
//
if ((mbi.State != MEM_COMMIT) ||
((mbi.Protect & 0xff) == PAGE_NOACCESS) ||
(mbi.Protect & PAGE_GUARD)) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return NULL;
}
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)mbi.AllocationBase;
if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return NULL;
}
PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
pDosHeader->e_lfanew);
if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
SetLastError(ERROR_INVALID_EXE_SIGNATURE);
return NULL;
}
if (pNtHeader->FileHeader.SizeOfOptionalHeader == 0) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
SetLastError(NO_ERROR);
return (HMODULE)pDosHeader;
}
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
SetLastError(ERROR_INVALID_EXE_SIGNATURE);
return NULL;
}
}
static inline PBYTE RvaAdjust(_Pre_notnull_ PIMAGE_DOS_HEADER pDosHeader, _In_ DWORD raddr)
{
if (raddr != NULL) {
return ((PBYTE)pDosHeader) + raddr;
}
return NULL;
}
BOOL WINAPI DetourEnumerateExports(_In_ HMODULE hModule,
_In_opt_ PVOID pContext,
_In_ PF_DETOUR_ENUMERATE_EXPORT_CALLBACK pfExport)
{
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hModule;
if (hModule == NULL) {
pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandleW(NULL);
}
__try {
#pragma warning(suppress:6011) // GetModuleHandleW(NULL) never returns NULL.
if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return NULL;
}
PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
pDosHeader->e_lfanew);
if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
SetLastError(ERROR_INVALID_EXE_SIGNATURE);
return FALSE;
}
if (pNtHeader->FileHeader.SizeOfOptionalHeader == 0) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return FALSE;
}
PIMAGE_EXPORT_DIRECTORY pExportDir
= (PIMAGE_EXPORT_DIRECTORY)
RvaAdjust(pDosHeader,
pNtHeader->OptionalHeader
.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
if (pExportDir == NULL) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return FALSE;
}
PBYTE pExportDirEnd = (PBYTE)pExportDir + pNtHeader->OptionalHeader
.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size;
PDWORD pdwFunctions = (PDWORD)RvaAdjust(pDosHeader, pExportDir->AddressOfFunctions);
PDWORD pdwNames = (PDWORD)RvaAdjust(pDosHeader, pExportDir->AddressOfNames);
PWORD pwOrdinals = (PWORD)RvaAdjust(pDosHeader, pExportDir->AddressOfNameOrdinals);
for (DWORD nFunc = 0; nFunc < pExportDir->NumberOfFunctions; nFunc++) {
PBYTE pbCode = (pdwFunctions != NULL)
? (PBYTE)RvaAdjust(pDosHeader, pdwFunctions[nFunc]) : NULL;
PCHAR pszName = NULL;
// if the pointer is in the export region, then it is a forwarder.
if (pbCode > (PBYTE)pExportDir && pbCode < pExportDirEnd) {
pbCode = NULL;
}
for (DWORD n = 0; n < pExportDir->NumberOfNames; n++) {
if (pwOrdinals[n] == nFunc) {
pszName = (pdwNames != NULL)
? (PCHAR)RvaAdjust(pDosHeader, pdwNames[n]) : NULL;
break;
}
}
ULONG nOrdinal = pExportDir->Base + nFunc;
if (!pfExport(pContext, nOrdinal, pszName, pbCode)) {
break;
}
}
SetLastError(NO_ERROR);
return TRUE;
}
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
}
BOOL WINAPI DetourEnumerateImportsEx(_In_opt_ HMODULE hModule,
_In_opt_ PVOID pContext,
_In_opt_ PF_DETOUR_IMPORT_FILE_CALLBACK pfImportFile,
_In_opt_ PF_DETOUR_IMPORT_FUNC_CALLBACK_EX pfImportFunc)
{
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hModule;
if (hModule == NULL) {
pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandleW(NULL);
}
__try {
#pragma warning(suppress:6011) // GetModuleHandleW(NULL) never returns NULL.
if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return FALSE;
}
PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
pDosHeader->e_lfanew);
if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
SetLastError(ERROR_INVALID_EXE_SIGNATURE);
return FALSE;
}
if (pNtHeader->FileHeader.SizeOfOptionalHeader == 0) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return FALSE;
}
PIMAGE_IMPORT_DESCRIPTOR iidp
= (PIMAGE_IMPORT_DESCRIPTOR)
RvaAdjust(pDosHeader,
pNtHeader->OptionalHeader
.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
if (iidp == NULL) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return FALSE;
}
for (; iidp->OriginalFirstThunk != 0; iidp++) {
PCSTR pszName = (PCHAR)RvaAdjust(pDosHeader, iidp->Name);
if (pszName == NULL) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return FALSE;
}
PIMAGE_THUNK_DATA pThunks = (PIMAGE_THUNK_DATA)
RvaAdjust(pDosHeader, iidp->OriginalFirstThunk);
PVOID * pAddrs = (PVOID *)
RvaAdjust(pDosHeader, iidp->FirstThunk);
HMODULE hFile = DetourGetContainingModule(pAddrs[0]);
if (pfImportFile != NULL) {
if (!pfImportFile(pContext, hFile, pszName)) {
break;
}
}
DWORD nNames = 0;
if (pThunks) {
for (; pThunks[nNames].u1.Ordinal; nNames++) {
DWORD nOrdinal = 0;
PCSTR pszFunc = NULL;
if (IMAGE_SNAP_BY_ORDINAL(pThunks[nNames].u1.Ordinal)) {
nOrdinal = (DWORD)IMAGE_ORDINAL(pThunks[nNames].u1.Ordinal);
}
else {
pszFunc = (PCSTR)RvaAdjust(pDosHeader,
(DWORD)pThunks[nNames].u1.AddressOfData + 2);
}
if (pfImportFunc != NULL) {
if (!pfImportFunc(pContext,
nOrdinal,
pszFunc,
&pAddrs[nNames])) {
break;
}
}
}
if (pfImportFunc != NULL) {
pfImportFunc(pContext, 0, NULL, NULL);
}
}
}
if (pfImportFile != NULL) {
pfImportFile(pContext, NULL, NULL);
}
SetLastError(NO_ERROR);
return TRUE;
}
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return FALSE;
}
}
// Context for DetourEnumerateImportsThunk, which adapts "regular" callbacks for use with "Ex".
struct _DETOUR_ENUMERATE_IMPORTS_THUNK_CONTEXT
{
PVOID pContext;
PF_DETOUR_IMPORT_FUNC_CALLBACK pfImportFunc;
};
// Callback for DetourEnumerateImportsEx that adapts DetourEnumerateImportsEx
// for use with a DetourEnumerateImports callback -- derefence the IAT and pass the value on.
static
BOOL
CALLBACK
DetourEnumerateImportsThunk(_In_ PVOID VoidContext,
_In_ DWORD nOrdinal,
_In_opt_ PCSTR pszFunc,
_In_opt_ PVOID* ppvFunc)
{
_DETOUR_ENUMERATE_IMPORTS_THUNK_CONTEXT const * const
pContext = (_DETOUR_ENUMERATE_IMPORTS_THUNK_CONTEXT*)VoidContext;
return pContext->pfImportFunc(pContext->pContext, nOrdinal, pszFunc, ppvFunc ? *ppvFunc : NULL);
}
BOOL WINAPI DetourEnumerateImports(_In_opt_ HMODULE hModule,
_In_opt_ PVOID pContext,
_In_opt_ PF_DETOUR_IMPORT_FILE_CALLBACK pfImportFile,
_In_opt_ PF_DETOUR_IMPORT_FUNC_CALLBACK pfImportFunc)
{
_DETOUR_ENUMERATE_IMPORTS_THUNK_CONTEXT const context = { pContext, pfImportFunc };
return DetourEnumerateImportsEx(hModule,
(PVOID)&context,
pfImportFile,
&DetourEnumerateImportsThunk);
}
static PDETOUR_LOADED_BINARY WINAPI GetPayloadSectionFromModule(HMODULE hModule)
{
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hModule;
if (hModule == NULL) {
pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandleW(NULL);
}
__try {
#pragma warning(suppress:6011) // GetModuleHandleW(NULL) never returns NULL.
if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return NULL;
}
PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
pDosHeader->e_lfanew);
if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
SetLastError(ERROR_INVALID_EXE_SIGNATURE);
return NULL;
}
if (pNtHeader->FileHeader.SizeOfOptionalHeader == 0) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
PIMAGE_SECTION_HEADER pSectionHeaders
= (PIMAGE_SECTION_HEADER)((PBYTE)pNtHeader
+ sizeof(pNtHeader->Signature)
+ sizeof(pNtHeader->FileHeader)
+ pNtHeader->FileHeader.SizeOfOptionalHeader);
for (DWORD n = 0; n < pNtHeader->FileHeader.NumberOfSections; n++) {
if (strcmp((PCHAR)pSectionHeaders[n].Name, ".detour") == 0) {
if (pSectionHeaders[n].VirtualAddress == 0 ||
pSectionHeaders[n].SizeOfRawData == 0) {
break;
}
PBYTE pbData = (PBYTE)pDosHeader + pSectionHeaders[n].VirtualAddress;
DETOUR_SECTION_HEADER *pHeader = (DETOUR_SECTION_HEADER *)pbData;
if (pHeader->cbHeaderSize < sizeof(DETOUR_SECTION_HEADER) ||
pHeader->nSignature != DETOUR_SECTION_HEADER_SIGNATURE) {
break;
}
if (pHeader->nDataOffset == 0) {
pHeader->nDataOffset = pHeader->cbHeaderSize;
}
SetLastError(NO_ERROR);
return (PBYTE)pHeader;
}
}
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
SetLastError(ERROR_EXE_MARKED_INVALID);
return NULL;
}
}
DWORD WINAPI DetourGetSizeOfPayloads(_In_opt_ HMODULE hModule)
{
PDETOUR_LOADED_BINARY pBinary = GetPayloadSectionFromModule(hModule);
if (pBinary == NULL) {
// Error set by GetPayloadSectionFromModule.
return 0;
}
__try {
DETOUR_SECTION_HEADER *pHeader = (DETOUR_SECTION_HEADER *)pBinary;
if (pHeader->cbHeaderSize < sizeof(DETOUR_SECTION_HEADER) ||
pHeader->nSignature != DETOUR_SECTION_HEADER_SIGNATURE) {
SetLastError(ERROR_INVALID_HANDLE);
return 0;
}
SetLastError(NO_ERROR);
return pHeader->cbDataSize;
}
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
SetLastError(ERROR_INVALID_HANDLE);
return 0;
}
}
_Writable_bytes_(*pcbData)
_Readable_bytes_(*pcbData)
_Success_(return != NULL)
PVOID WINAPI DetourFindPayload(_In_opt_ HMODULE hModule,
_In_ REFGUID rguid,
_Out_ DWORD *pcbData)
{
PBYTE pbData = NULL;
if (pcbData) {
*pcbData = 0;
}
PDETOUR_LOADED_BINARY pBinary = GetPayloadSectionFromModule(hModule);
if (pBinary == NULL) {
// Error set by GetPayloadSectionFromModule.
return NULL;
}
__try {
DETOUR_SECTION_HEADER *pHeader = (DETOUR_SECTION_HEADER *)pBinary;
if (pHeader->cbHeaderSize < sizeof(DETOUR_SECTION_HEADER) ||
pHeader->nSignature != DETOUR_SECTION_HEADER_SIGNATURE) {
SetLastError(ERROR_INVALID_EXE_SIGNATURE);
return NULL;
}
PBYTE pbBeg = ((PBYTE)pHeader) + pHeader->nDataOffset;
PBYTE pbEnd = ((PBYTE)pHeader) + pHeader->cbDataSize;
for (pbData = pbBeg; pbData < pbEnd;) {
DETOUR_SECTION_RECORD *pSection = (DETOUR_SECTION_RECORD *)pbData;
if (pSection->guid.Data1 == rguid.Data1 &&
pSection->guid.Data2 == rguid.Data2 &&
pSection->guid.Data3 == rguid.Data3 &&
pSection->guid.Data4[0] == rguid.Data4[0] &&
pSection->guid.Data4[1] == rguid.Data4[1] &&
pSection->guid.Data4[2] == rguid.Data4[2] &&
pSection->guid.Data4[3] == rguid.Data4[3] &&
pSection->guid.Data4[4] == rguid.Data4[4] &&
pSection->guid.Data4[5] == rguid.Data4[5] &&
pSection->guid.Data4[6] == rguid.Data4[6] &&
pSection->guid.Data4[7] == rguid.Data4[7]) {
if (pcbData) {
*pcbData = pSection->cbBytes - sizeof(*pSection);
SetLastError(NO_ERROR);
return (PBYTE)(pSection + 1);
}
}
pbData = (PBYTE)pSection + pSection->cbBytes;
}
SetLastError(ERROR_INVALID_HANDLE);
return NULL;
}
__except(GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
SetLastError(ERROR_INVALID_HANDLE);
return NULL;
}
}
_Writable_bytes_(*pcbData)
_Readable_bytes_(*pcbData)
_Success_(return != NULL)
PVOID WINAPI DetourFindPayloadEx(_In_ REFGUID rguid,
_Out_ DWORD * pcbData)
{
for (HMODULE hMod = NULL; (hMod = DetourEnumerateModules(hMod)) != NULL;) {
PVOID pvData;
pvData = DetourFindPayload(hMod, rguid, pcbData);
if (pvData != NULL) {
return pvData;
}
}
SetLastError(ERROR_MOD_NOT_FOUND);
return NULL;
}
BOOL WINAPI DetourRestoreAfterWithEx(_In_reads_bytes_(cbData) PVOID pvData,
_In_ DWORD cbData)
{
PDETOUR_EXE_RESTORE pder = (PDETOUR_EXE_RESTORE)pvData;
if (pder->cb != sizeof(*pder) || pder->cb > cbData) {
SetLastError(ERROR_BAD_EXE_FORMAT);
return FALSE;
}
DWORD dwPermIdh = ~0u;
DWORD dwPermInh = ~0u;
DWORD dwPermClr = ~0u;
DWORD dwIgnore;
BOOL fSucceeded = FALSE;
BOOL fUpdated32To64 = FALSE;
if (pder->pclr != NULL && pder->clr.Flags != ((PDETOUR_CLR_HEADER)pder->pclr)->Flags) {
// If we had to promote the 32/64-bit agnostic IL to 64-bit, we can't restore
// that.
fUpdated32To64 = TRUE;
}
if (DetourVirtualProtectSameExecute(pder->pidh, pder->cbidh,
PAGE_EXECUTE_READWRITE, &dwPermIdh)) {
if (DetourVirtualProtectSameExecute(pder->pinh, pder->cbinh,
PAGE_EXECUTE_READWRITE, &dwPermInh)) {
CopyMemory(pder->pidh, &pder->idh, pder->cbidh);
CopyMemory(pder->pinh, &pder->inh, pder->cbinh);
if (pder->pclr != NULL && !fUpdated32To64) {
if (DetourVirtualProtectSameExecute(pder->pclr, pder->cbclr,
PAGE_EXECUTE_READWRITE, &dwPermClr)) {
CopyMemory(pder->pclr, &pder->clr, pder->cbclr);
VirtualProtect(pder->pclr, pder->cbclr, dwPermClr, &dwIgnore);
fSucceeded = TRUE;
}
}
else {
fSucceeded = TRUE;
}
VirtualProtect(pder->pinh, pder->cbinh, dwPermInh, &dwIgnore);
}
VirtualProtect(pder->pidh, pder->cbidh, dwPermIdh, &dwIgnore);
}
return fSucceeded;
}
BOOL WINAPI DetourRestoreAfterWith()
{
PVOID pvData;
DWORD cbData;
pvData = DetourFindPayloadEx(DETOUR_EXE_RESTORE_GUID, &cbData);
if (pvData != NULL && cbData != 0) {
return DetourRestoreAfterWithEx(pvData, cbData);
}
SetLastError(ERROR_MOD_NOT_FOUND);
return FALSE;
}
// End of File

View File

@ -0,0 +1,269 @@
//////////////////////////////////////////////////////////////////////////////
//
// Add DLLs to a module import table (uimports.cpp of detours.lib)
//
// Microsoft Research Detours Package, Version 4.0.1
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Note that this file is included into creatwth.cpp one or more times
// (once for each supported module format).
//
#if DETOURS_VERSION != 0x4c0c1 // 0xMAJORcMINORcPATCH
#error detours.h version mismatch
#endif
// UpdateImports32 aka UpdateImports64
static BOOL UPDATE_IMPORTS_XX(HANDLE hProcess,
HMODULE hModule,
__in_ecount(nDlls) LPCSTR *plpDlls,
DWORD nDlls)
{
BOOL fSucceeded = FALSE;
DWORD cbNew = 0;
BYTE * pbNew = NULL;
DWORD i;
SIZE_T cbRead;
DWORD n;
PBYTE pbModule = (PBYTE)hModule;
IMAGE_DOS_HEADER idh;
ZeroMemory(&idh, sizeof(idh));
if (!ReadProcessMemory(hProcess, pbModule, &idh, sizeof(idh), &cbRead)
|| cbRead < sizeof(idh)) {
DETOUR_TRACE(("ReadProcessMemory(idh@%p..%p) failed: %d\n",
pbModule, pbModule + sizeof(idh), GetLastError()));
finish:
if (pbNew != NULL) {
delete[] pbNew;
pbNew = NULL;
}
return fSucceeded;
}
IMAGE_NT_HEADERS_XX inh;
ZeroMemory(&inh, sizeof(inh));
if (!ReadProcessMemory(hProcess, pbModule + idh.e_lfanew, &inh, sizeof(inh), &cbRead)
|| cbRead < sizeof(inh)) {
DETOUR_TRACE(("ReadProcessMemory(inh@%p..%p) failed: %d\n",
pbModule + idh.e_lfanew,
pbModule + idh.e_lfanew + sizeof(inh),
GetLastError()));
goto finish;
}
if (inh.OptionalHeader.Magic != IMAGE_NT_OPTIONAL_HDR_MAGIC_XX) {
DETOUR_TRACE(("Wrong size image (%04x != %04x).\n",
inh.OptionalHeader.Magic, IMAGE_NT_OPTIONAL_HDR_MAGIC_XX));
SetLastError(ERROR_INVALID_BLOCK);
goto finish;
}
// Zero out the bound table so loader doesn't use it instead of our new table.
inh.BOUND_DIRECTORY.VirtualAddress = 0;
inh.BOUND_DIRECTORY.Size = 0;
// Find the size of the mapped file.
DWORD dwSec = idh.e_lfanew +
FIELD_OFFSET(IMAGE_NT_HEADERS_XX, OptionalHeader) +
inh.FileHeader.SizeOfOptionalHeader;
for (i = 0; i < inh.FileHeader.NumberOfSections; i++) {
IMAGE_SECTION_HEADER ish;
ZeroMemory(&ish, sizeof(ish));
if (!ReadProcessMemory(hProcess, pbModule + dwSec + sizeof(ish) * i, &ish,
sizeof(ish), &cbRead)
|| cbRead < sizeof(ish)) {
DETOUR_TRACE(("ReadProcessMemory(ish@%p..%p) failed: %d\n",
pbModule + dwSec + sizeof(ish) * i,
pbModule + dwSec + sizeof(ish) * (i + 1),
GetLastError()));
goto finish;
}
DETOUR_TRACE(("ish[%d] : va=%08x sr=%d\n", i, ish.VirtualAddress, ish.SizeOfRawData));
// If the file didn't have an IAT_DIRECTORY, we assign it...
if (inh.IAT_DIRECTORY.VirtualAddress == 0 &&
inh.IMPORT_DIRECTORY.VirtualAddress >= ish.VirtualAddress &&
inh.IMPORT_DIRECTORY.VirtualAddress < ish.VirtualAddress + ish.SizeOfRawData) {
inh.IAT_DIRECTORY.VirtualAddress = ish.VirtualAddress;
inh.IAT_DIRECTORY.Size = ish.SizeOfRawData;
}
}
DETOUR_TRACE((" Imports: %p..%p\n",
(DWORD_PTR)pbModule + inh.IMPORT_DIRECTORY.VirtualAddress,
(DWORD_PTR)pbModule + inh.IMPORT_DIRECTORY.VirtualAddress +
inh.IMPORT_DIRECTORY.Size));
DWORD nOldDlls = inh.IMPORT_DIRECTORY.Size / sizeof(IMAGE_IMPORT_DESCRIPTOR);
DWORD obRem = sizeof(IMAGE_IMPORT_DESCRIPTOR) * nDlls;
DWORD obOld = obRem + sizeof(IMAGE_IMPORT_DESCRIPTOR) * nOldDlls;
DWORD obTab = PadToDwordPtr(obOld);
DWORD obDll = obTab + sizeof(DWORD_XX) * 4 * nDlls;
DWORD obStr = obDll;
cbNew = obStr;
for (n = 0; n < nDlls; n++) {
cbNew += PadToDword((DWORD)strlen(plpDlls[n]) + 1);
}
_Analysis_assume_(cbNew >
sizeof(IMAGE_IMPORT_DESCRIPTOR) * (nDlls + nOldDlls)
+ sizeof(DWORD_XX) * 4 * nDlls);
pbNew = new BYTE [cbNew];
if (pbNew == NULL) {
DETOUR_TRACE(("new BYTE [cbNew] failed.\n"));
goto finish;
}
ZeroMemory(pbNew, cbNew);
PBYTE pbBase = pbModule;
PBYTE pbNext = pbBase
+ inh.OptionalHeader.BaseOfCode
+ inh.OptionalHeader.SizeOfCode
+ inh.OptionalHeader.SizeOfInitializedData
+ inh.OptionalHeader.SizeOfUninitializedData;
if (pbBase < pbNext) {
pbBase = pbNext;
}
DETOUR_TRACE(("pbBase = %p\n", pbBase));
PBYTE pbNewIid = FindAndAllocateNearBase(hProcess, pbModule, pbBase, cbNew);
if (pbNewIid == NULL) {
DETOUR_TRACE(("FindAndAllocateNearBase failed.\n"));
goto finish;
}
PIMAGE_IMPORT_DESCRIPTOR piid = (PIMAGE_IMPORT_DESCRIPTOR)pbNew;
DWORD_XX *pt;
DWORD obBase = (DWORD)(pbNewIid - pbModule);
DWORD dwProtect = 0;
if (inh.IMPORT_DIRECTORY.VirtualAddress != 0) {
// Read the old import directory if it exists.
DETOUR_TRACE(("IMPORT_DIRECTORY perms=%x\n", dwProtect));
if (!ReadProcessMemory(hProcess,
pbModule + inh.IMPORT_DIRECTORY.VirtualAddress,
&piid[nDlls],
nOldDlls * sizeof(IMAGE_IMPORT_DESCRIPTOR), &cbRead)
|| cbRead < nOldDlls * sizeof(IMAGE_IMPORT_DESCRIPTOR)) {
DETOUR_TRACE(("ReadProcessMemory(imports) failed: %d\n", GetLastError()));
goto finish;
}
}
for (n = 0; n < nDlls; n++) {
HRESULT hrRet = StringCchCopyA((char*)pbNew + obStr, cbNew - obStr, plpDlls[n]);
if (FAILED(hrRet)) {
DETOUR_TRACE(("StringCchCopyA failed: %d\n", GetLastError()));
goto finish;
}
// After copying the string, we patch up the size "??" bits if any.
hrRet = ReplaceOptionalSizeA((char*)pbNew + obStr,
cbNew - obStr,
DETOURS_STRINGIFY(DETOURS_BITS_XX));
if (FAILED(hrRet)) {
DETOUR_TRACE(("ReplaceOptionalSizeA failed: %d\n", GetLastError()));
goto finish;
}
DWORD nOffset = obTab + (sizeof(DWORD_XX) * (4 * n));
piid[n].OriginalFirstThunk = obBase + nOffset;
pt = ((DWORD_XX*)(pbNew + nOffset));
pt[0] = IMAGE_ORDINAL_FLAG_XX + 1;
pt[1] = 0;
nOffset = obTab + (sizeof(DWORD_XX) * ((4 * n) + 2));
piid[n].FirstThunk = obBase + nOffset;
pt = ((DWORD_XX*)(pbNew + nOffset));
pt[0] = IMAGE_ORDINAL_FLAG_XX + 1;
pt[1] = 0;
piid[n].TimeDateStamp = 0;
piid[n].ForwarderChain = 0;
piid[n].Name = obBase + obStr;
obStr += PadToDword((DWORD)strlen(plpDlls[n]) + 1);
}
_Analysis_assume_(obStr <= cbNew);
#if 0
for (i = 0; i < nDlls + nOldDlls; i++) {
DETOUR_TRACE(("%8d. Look=%08x Time=%08x Fore=%08x Name=%08x Addr=%08x\n",
i,
piid[i].OriginalFirstThunk,
piid[i].TimeDateStamp,
piid[i].ForwarderChain,
piid[i].Name,
piid[i].FirstThunk));
if (piid[i].OriginalFirstThunk == 0 && piid[i].FirstThunk == 0) {
break;
}
}
#endif
if (!WriteProcessMemory(hProcess, pbNewIid, pbNew, obStr, NULL)) {
DETOUR_TRACE(("WriteProcessMemory(iid) failed: %d\n", GetLastError()));
goto finish;
}
DETOUR_TRACE(("obBaseBef = %08x..%08x\n",
inh.IMPORT_DIRECTORY.VirtualAddress,
inh.IMPORT_DIRECTORY.VirtualAddress + inh.IMPORT_DIRECTORY.Size));
DETOUR_TRACE(("obBaseAft = %08x..%08x\n", obBase, obBase + obStr));
// If the file doesn't have an IAT_DIRECTORY, we create it...
if (inh.IAT_DIRECTORY.VirtualAddress == 0) {
inh.IAT_DIRECTORY.VirtualAddress = obBase;
inh.IAT_DIRECTORY.Size = cbNew;
}
inh.IMPORT_DIRECTORY.VirtualAddress = obBase;
inh.IMPORT_DIRECTORY.Size = cbNew;
/////////////////////// Update the NT header for the new import directory.
//
if (!DetourVirtualProtectSameExecuteEx(hProcess, pbModule, inh.OptionalHeader.SizeOfHeaders,
PAGE_EXECUTE_READWRITE, &dwProtect)) {
DETOUR_TRACE(("VirtualProtectEx(inh) write failed: %d\n", GetLastError()));
goto finish;
}
inh.OptionalHeader.CheckSum = 0;
if (!WriteProcessMemory(hProcess, pbModule, &idh, sizeof(idh), NULL)) {
DETOUR_TRACE(("WriteProcessMemory(idh) failed: %d\n", GetLastError()));
goto finish;
}
DETOUR_TRACE(("WriteProcessMemory(idh:%p..%p)\n", pbModule, pbModule + sizeof(idh)));
if (!WriteProcessMemory(hProcess, pbModule + idh.e_lfanew, &inh, sizeof(inh), NULL)) {
DETOUR_TRACE(("WriteProcessMemory(inh) failed: %d\n", GetLastError()));
goto finish;
}
DETOUR_TRACE(("WriteProcessMemory(inh:%p..%p)\n",
pbModule + idh.e_lfanew,
pbModule + idh.e_lfanew + sizeof(inh)));
if (!VirtualProtectEx(hProcess, pbModule, inh.OptionalHeader.SizeOfHeaders,
dwProtect, &dwProtect)) {
DETOUR_TRACE(("VirtualProtectEx(idh) restore failed: %d\n", GetLastError()));
goto finish;
}
fSucceeded = TRUE;
goto finish;
}

View File

@ -0,0 +1,154 @@
#ifndef ARM64_ASM_H
#define ARM64_ASM_H
typedef union {
ULONG OP;
struct {
ULONG
Rd : 5,
imm16 : 16,
hw : 2,
op1 : 6,
op2 : 2,
sf : 1;
};
} MOV;
#define IS_MOV(x) (x.hw == 0b00 && x.op1 == 0b100101 && x.op2 == 0b10 && x.sf == 0b1)
typedef union {
ULONG OP;
struct {
ULONG
imm26 : 26,
op1 : 5,
op2 : 1;
};
} B;
#define IS_B(x) (x.op1 == 0b00101 && x.op2 == 0b0)
typedef union {
ULONG OP;
struct {
ULONG
cond : 4,
zero1 : 1,
imm19 : 19,
zero2 : 1,
op : 7;
};
} B_COND;
#define IS_B_COND(x) (x.zero1 == 0b0 && x.zero2 == 0b0 && x.op == 0b0101010)
typedef union {
ULONG OP;
struct {
ULONG
imm26 : 26,
op1 : 5,
op2 : 1;
};
} BL;
#define IS_BL(x) (x.op1 == 0b00101 && x.op2 == 0b1)
typedef union {
ULONG OP;
struct {
ULONG
zero1 : 5,
rn : 5,
zero2 : 6,
one : 5,
op1 : 2,
zero3 : 2,
op2 : 7;
};
} BR;
#define IS_BR(x) (x.op2 == 0b1101011 && x.zero3 == 0b00 && x.op1 == 0b00 && x.one == 0b11111)
typedef union {
ULONG OP;
struct {
ULONG
Rd : 5,
immHi : 19,
op1 : 5,
immLo : 2,
op2 : 1;
};
} ADRP;
#define IS_ADRP(x) (x.op1 == 0b10000 && x.op2 == 0b1)
typedef union {
ULONG OP;
struct {
ULONG
Rt : 5,
Rn : 5,
imm12 : 12,
op1 : 2,
op2 : 2,
op3 : 1,
op4 : 3,
size : 2;
};
} LDR;
#define IS_LDR(x) (x.op4 == 0b111 && x.op3 == 0b0 && x.op2 == 0b01 && x.op1 == 0b01)
typedef union {
ULONG OP;
struct {
ULONG
Rt : 5,
Rn : 5,
zero : 2,
imm9 : 9,
op1: 1,
op2 : 2,
op3 : 2,
op4 : 1,
op5 : 3,
size : 2;
};
} LDUR;
#define IS_LDUR(x) (x.size = 0b11 && x.op5 == 0b111 && x.op4 == 0b0 && x.op3 == 0b01 && x.op2 == 0b01 && x.op1 == 0b0 && x.zero == 0b00)
typedef union {
ULONG OP;
struct {
ULONG
Rd : 5,
Rn : 5,
imm12 : 12,
shift : 2,
op1 : 5,
S : 1,
op2 : 1,
sf : 1;
};
} ADD;
#define IS_ADD(x) (x.sf == 0b1 && x.op2 == 0b0 && x.S == 0b0 && x.op1 == 0b10001 && x.shift == 0)
typedef union {
ULONG OP;
struct {
ULONG
op1 : 2,
zero1 : 3,
imm16 : 16,
zero2 : 3,
op2 : 8;
};
} SVC;
#define IS_SVC(x) (x.op1 == 0x01 && x.zero1 == 0b000 && x.zero2 == 0b000 && x.op2 == 0b11010100)
#endif /* ARM64_ASM_H */

View File

@ -20,15 +20,271 @@
// Variouse generic hooking helpers // Variouse generic hooking helpers
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#if defined(_M_ARM64) || defined(_M_ARM64EC)
#include "common/arm64_asm.h"
//---------------------------------------------------------------------------
// Hook_GetXipTarget
//---------------------------------------------------------------------------
_FX void* Hook_GetXipTarget(void* ptr, int mode)
{
void* addr = ptr;
ADRP adrp;
adrp.OP = ((ULONG*)ptr)[0];
if (!IS_ADRP(adrp) || adrp.Rd != 16) // adrp x16, #0x4c000
return ptr;
LONG delta = (adrp.immHi << 2 | adrp.immLo) << 12;
if (mode == 0) // default import jump mode
{
LDR ldr;
ldr.OP = ((ULONG*)ptr)[1];
if (!IS_LDR(ldr) || ldr.Rn != 16 || ldr.Rt != 16) // ldr x16, [x16, #0xa8]
return ptr;
delta += (ldr.imm12 << ldr.size);
addr = *((void**)(((UINT_PTR)ptr & ~0xFFF) + delta));
}
else if (mode == 1)
{
ADD add;
add.OP = ((ULONG*)ptr)[1];
if(!IS_ADD(add) || add.Rn != 16 || add.Rd != 16)
return ptr;
delta += (add.imm12 << add.shift);
addr = ((void*)(((UINT_PTR)ptr & ~0xFFF) + delta));
}
//else if (mode == 2)
//{
// LDUR ldur;
// ldur.OP = ((ULONG*)ptr)[1];
// if (!IS_LDUR(ldur) || ldur.Rn != 16 || ldur.Rt != 16) // ldur x16, [x16, #0xa9]
// return ptr;
//
// delta += (ldr.imm12 << ldr.size);
//
// addr = *((void**)(((UINT_PTR)ptr & ~0xFFF) + delta));
//}
BR br;
br.OP = ((ULONG*)ptr)[2];
if (!IS_BR(br) || br.rn != 16) // br x16
return ptr;
return addr;
}
//---------------------------------------------------------------------------
// Hook_GetFFSTarget
//---------------------------------------------------------------------------
_FX void* Hook_GetFFSTarget(UCHAR* SourceFunc)
{
//
// if we first have a jump to the FFS sequence, follow it
//
if (*(UCHAR *)SourceFunc == 0x48 && // rex.W
*(USHORT *)((UCHAR *)SourceFunc + 1) == 0x25FF) { // jmp QWORD PTR [rip+xx xx xx xx];
// 48 FF 25 is same as FF 25
SourceFunc = (UCHAR *)SourceFunc + 1;
}
if (*(USHORT *)SourceFunc == 0x25FF) { // jmp QWORD PTR [rip+xx xx xx xx];
LONG diff = *(LONG *)((ULONG_PTR)SourceFunc + 2);
ULONG_PTR target = (ULONG_PTR)SourceFunc + 6 + diff;
SourceFunc = (void *)*(ULONG_PTR *)target;
}
//
// check if the function is a FFS sequence and if so
// return the address of the target native function
//
//
// Standard FFS Sequence:
//
// 48 8B FF mov rdi,rdi
// 55 push rbp
// 48 8B EC mov rbp,rsp
// 5D pop rbp
// 90 nop
// E9 02481800 jmp #__GSHandlerCheck_SEH_AMD64+138h (07FFB572B8190h)
//
if (*(UCHAR *)SourceFunc == 0x48 && // mov rdi,rdi
*(USHORT *)((UCHAR *)SourceFunc + 1) == 0xFF8B)
SourceFunc = (UCHAR *)SourceFunc + 3;
if (*(UCHAR *)SourceFunc == 0x55) // push rbp
SourceFunc = (UCHAR *)SourceFunc + 1;
if (*(UCHAR *)SourceFunc == 0x48 && // mov rbp,rsp
*(USHORT *)((UCHAR *)SourceFunc + 1) == 0xEC8B)
SourceFunc = (UCHAR *)SourceFunc + 3;
if (*(UCHAR *)SourceFunc == 0x5D) // pop rbp
SourceFunc = (UCHAR *)SourceFunc + 1;
if (*(UCHAR *)SourceFunc == 0x90) // nop
SourceFunc = (UCHAR *)SourceFunc + 1;
if (*(UCHAR *)SourceFunc == 0xE9) { // jmp 07FFB572B8190h
LONG diff = *(LONG*)(SourceFunc + 1);
return (UCHAR*)SourceFunc + 5 + diff;
}
return NULL;
}
//---------------------------------------------------------------------------
// Hook_GetSysCallIndex
//---------------------------------------------------------------------------
_FX USHORT Hook_GetSysCallIndex(UCHAR* SourceFunc)
{
//
// Standard syscall fucntion
//
// 4C 8B D1 mov r10, rcx
// B8 19000000 mov eax, 0x19
// F6 04 25 0803FE7F 01 test byte [0x7ffe0308], 0x1
// 75 03 jne +5
//
// 0F 05 syscall
// C3 ret
//
// CD 2E int 0x2e
// C3 ret
//
USHORT index = -1;
if (*(UCHAR *)SourceFunc == 0x4C && // mov r10,rcx
*(USHORT *)((UCHAR *)SourceFunc + 1) == 0xD18B)
SourceFunc = (UCHAR *)SourceFunc + 3;
if (*(UCHAR *)SourceFunc == 0xB8) { // mov eax, 0x55
LONG value = *(LONG*)(SourceFunc + 1);
if((value & 0xFFFF0000) == 0)
index = (SHORT)value;
}
return index;
}
//---------------------------------------------------------------------------
// Hook_GetSysCallFunc
//---------------------------------------------------------------------------
_FX ULONG Hook_GetSysCallFunc(ULONG* aCode, void** pHandleStubHijack)
{
// 0: ff4300d1 sub sp, sp, #0x10
if (aCode[0] != 0xd10043ff)
return -1;
// 1: 10000090 adrp x16, #0xffffffffffffe000 ; data_180165740
// 2: 10021d91 add x16, x16, #0x740 ; data_180165740
// 3: f00300f9 str x16, [sp]
if (aCode[3] != 0xf90003f0)
return -1;
// 4: e10000d4 svc #0x07
SVC svc;
svc.OP = aCode[4];
if (!IS_SVC(svc))
return -1;
// 5: e90340f9 ldr x9, [sp]
if (aCode[5] != 0xf94003e9)
return -1;
// 6: 10000090 adrp x16, #0xffffffffffffe000 ; data_180165740
// 7: 10021d91 add x16, x16, #0x740 ; data_180165740
// 8: 100209eb subs x16, x16, x9
if (aCode[8] != 0xeb090210)
return -1;
// 9: ff430091 add sp, sp, #0x10
if (aCode[9] != 0x910043ff)
return -1;
// 10: c1eaff54 b.ne #0xffffffffffffe520 ; HandleStubHijack
B_COND b_cond;
b_cond.OP = aCode[10];
if (!IS_B_COND(b_cond) && b_cond.cond != 1)
return -1;
if (pHandleStubHijack) {
LONG offset = b_cond.imm19 << 2;
if (offset & (1 << 20)) // if this is negative
offset |= 0xFFF00000; // make it properly negative
*pHandleStubHijack = (void*)((UINT_PTR)(aCode + 10) + offset);
}
// 11: 090080d2 movz x9, #0
if (aCode[11] != 0xd2800009)
return -1;
// 12: c0035fd6 ret
if (aCode[12] != 0xd65f03c0)
return -1;
return svc.imm16;
}
#endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Hook_CheckChromeHook // Hook_CheckChromeHook
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifdef _WIN64 #ifdef _M_ARM64
#define MAX_FUNC_OPS (0x80/4)
ULONGLONG* findChromeTarget(unsigned char* addr)
{
int i, j;
ULONGLONG target;
ULONGLONG * ChromeTarget = NULL;
if (!addr) return NULL;
// look for ADRP to soem register followed (not imminetly) by an LDR for and with the same register
for (i = 0; i < MAX_FUNC_OPS && !ChromeTarget; i++) {
ADRP adrp;
adrp.OP = ((ULONG*)addr)[i];
if (IS_ADRP(adrp)) {
for (j = i + 1; j < MAX_FUNC_OPS && !ChromeTarget; j++) {
LDR ldr;
ldr.OP = ((ULONG*)addr)[j];
if (IS_LDR(ldr) && ldr.Rn == adrp.Rd) { // ldr.Rt can be different idealy x0 or its same as adrp.Rd
LONG delta = (adrp.immHi << 2 | adrp.immLo) << 12;
delta += (ldr.imm12 << ldr.size);
target = ((((UINT_PTR) & ((ULONG*)addr)[i]) & ~0xFFF) + delta);
ChromeTarget = *(ULONGLONG **)target;
}
}
}
}
return ChromeTarget;
}
#elif _WIN64
#define MAX_FUNC_SIZE 0x76 #define MAX_FUNC_SIZE 0x76
ULONGLONG * findChromeTarget(unsigned char* addr) ULONGLONG * findChromeTarget(unsigned char* addr)
{ {
@ -97,7 +353,20 @@ _FX void* Hook_CheckChromeHook(void *SourceFunc)
{ {
if (!SourceFunc) if (!SourceFunc)
return NULL; return NULL;
#ifdef _WIN64 #ifdef _M_ARM64
ULONG *func = (ULONG *)SourceFunc;
ULONGLONG *chrome64Target = NULL;
if (func[0] == 0x58000050 // ldr xip0,ZwCreateFile+8h (07FF99A6FF8C8h)
&& func[1] == 0xD61F0200) { // ldr br xip0
ULONGLONG *longlongs = *(ULONGLONG **)&func[2];
chrome64Target = findChromeTarget((unsigned char *)longlongs);
}
if (chrome64Target) {
SourceFunc = chrome64Target;
}
#elif _WIN64
UCHAR *func = (UCHAR *)SourceFunc; UCHAR *func = (UCHAR *)SourceFunc;
ULONGLONG *chrome64Target = NULL; ULONGLONG *chrome64Target = NULL;

View File

@ -21,9 +21,9 @@
#ifndef _MY_VERSION_H #ifndef _MY_VERSION_H
#define _MY_VERSION_H #define _MY_VERSION_H
#define MY_VERSION_BINARY 5,59,2 #define MY_VERSION_BINARY 5,60,0
#define MY_VERSION_STRING "5.59.2" #define MY_VERSION_STRING "5.60.0"
#define MY_VERSION_COMPAT "5.58.0" // this refers to the driver ABI compatibility #define MY_ABI_VERSION 0x56000
// These #defines are used by either Resource Compiler or NSIS installer // These #defines are used by either Resource Compiler or NSIS installer
#define SBIE_INSTALLER_PATH "..\\Bin\\" #define SBIE_INSTALLER_PATH "..\\Bin\\"

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2020-2021 DavidXanatos, xanasoft.com * Copyright 2020-2022 DavidXanatos, xanasoft.com
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -385,4 +385,34 @@ typedef struct _LDR_DATA_TABLE_ENTRY
__inline struct _PEB * NtCurrentPeb() { return NtCurrentTeb()->ProcessEnvironmentBlock; } __inline struct _PEB * NtCurrentPeb() { return NtCurrentTeb()->ProcessEnvironmentBlock; }
#endif #endif
#if 0
// Gets a pointer to the PEB for x86, x64, ARM, ARM64, IA64, Alpha AXP, MIPS, and PowerPC.
// This relies on MS-compiler intrinsics.
// It has only been tested on x86/x64/ARMv7.
inline PEB* NtCurrentPeb() {
#ifdef _M_X64
return (PEB*)(__readgsqword(0x60));
#elif _M_IX86
return (PEB*)(__readfsdword(0x30));
#elif _M_ARM
return *(PEB**)(_MoveFromCoprocessor(15, 0, 13, 0, 2) + 0x30);
#elif _M_ARM64
return *(PEB**)(__getReg(18) + 0x60); // TEB in x18
#elif _M_IA64
return *(PEB**)((size_t)_rdteb() + 0x60); // TEB in r13
#elif _M_ALPHA
return *(PEB**)((size_t)_rdteb() + 0x30); // TEB pointer returned from callpal 0xAB
#elif _M_MIPS
return *(PEB**)((*(size_t*)(0x7ffff030)) + 0x30); // TEB pointer located at 0x7ffff000 (PCR in user-mode) + 0x30
#elif _M_PPC
// winnt.h of the period uses __builtin_get_gpr13() or __gregister_get(13) depending on _MSC_VER
return *(PEB**)(__gregister_get(13) + 0x30); // TEB in r13
#else
#error "This architecture is currently unsupported"
#endif
}
#endif
#endif // _XEB_ #endif // _XEB_

View File

@ -49,7 +49,11 @@ static int NetFw_IpCmp(const void * l, const void * r)
NETFW_RULE* NetFw_AllocRule(POOL* pool, int MatchLevel) NETFW_RULE* NetFw_AllocRule(POOL* pool, int MatchLevel)
{ {
#ifdef KERNEL_MODE #ifdef KERNEL_MODE
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
NETFW_RULE* rule = ExAllocatePool2(POOL_FLAG_NON_PAGED, sizeof(NETFW_RULE), tzuk);
#else
NETFW_RULE* rule = ExAllocatePoolWithTag(NonPagedPool, sizeof(NETFW_RULE), tzuk); NETFW_RULE* rule = ExAllocatePoolWithTag(NonPagedPool, sizeof(NETFW_RULE), tzuk);
#endif
#else #else
NETFW_RULE* rule = Pool_Alloc(pool, sizeof(NETFW_RULE)); NETFW_RULE* rule = Pool_Alloc(pool, sizeof(NETFW_RULE));
#endif #endif
@ -95,7 +99,11 @@ typedef struct _NETFW_PORTS
void NetFw_RuleAddPortRange(rbtree_t* tree, USHORT PortBegin, USHORT PortEnd, POOL* pool) void NetFw_RuleAddPortRange(rbtree_t* tree, USHORT PortBegin, USHORT PortEnd, POOL* pool)
{ {
#ifdef KERNEL_MODE #ifdef KERNEL_MODE
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
NETFW_PORTS* node = ExAllocatePool2(POOL_FLAG_NON_PAGED, sizeof(NETFW_PORTS), tzuk);
#else
NETFW_PORTS* node = ExAllocatePoolWithTag(NonPagedPool, sizeof(NETFW_PORTS), tzuk); NETFW_PORTS* node = ExAllocatePoolWithTag(NonPagedPool, sizeof(NETFW_PORTS), tzuk);
#endif
#else #else
NETFW_PORTS* node = Pool_Alloc(pool, sizeof(NETFW_PORTS)); NETFW_PORTS* node = Pool_Alloc(pool, sizeof(NETFW_PORTS));
#endif #endif
@ -183,7 +191,11 @@ typedef struct _NETFW_IPS
void NetFw_RuleAddIpRange(rbtree_t* tree, IP_ADDRESS* IpBegin, IP_ADDRESS* IpEnd, POOL* pool) void NetFw_RuleAddIpRange(rbtree_t* tree, IP_ADDRESS* IpBegin, IP_ADDRESS* IpEnd, POOL* pool)
{ {
#ifdef KERNEL_MODE #ifdef KERNEL_MODE
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
NETFW_IPS* node = ExAllocatePool2(POOL_FLAG_NON_PAGED, sizeof(NETFW_IPS), tzuk);
#else
NETFW_IPS* node = ExAllocatePoolWithTag(NonPagedPool, sizeof(NETFW_IPS), tzuk); NETFW_IPS* node = ExAllocatePoolWithTag(NonPagedPool, sizeof(NETFW_IPS), tzuk);
#endif
#else #else
NETFW_IPS* node = Pool_Alloc(pool, sizeof(NETFW_IPS)); NETFW_IPS* node = Pool_Alloc(pool, sizeof(NETFW_IPS));
#endif #endif

View File

@ -993,6 +993,16 @@ typedef NTSTATUS (*P_NtProtectVirtualMemory)(
IN ULONG NewProtect, IN ULONG NewProtect,
OUT PULONG OldProtect); OUT PULONG OldProtect);
typedef NTSTATUS (*P_NtAllocateVirtualMemoryEx)(
_In_ HANDLE ProcessHandle,
_Inout_ _At_ (*BaseAddress, _Readable_bytes_ (*RegionSize) _Writable_bytes_ (*RegionSize) _Post_readable_byte_size_ (*RegionSize)) PVOID* BaseAddress,
_Inout_ PSIZE_T RegionSize,
_In_ ULONG AllocationType,
_In_ ULONG PageProtection,
_Inout_updates_opt_(ExtendedParameterCount) PMEM_EXTENDED_PARAMETER ExtendedParameters,
_In_ ULONG ExtendedParameterCount
);
typedef NTSTATUS (*P_NtWriteFile)( typedef NTSTATUS (*P_NtWriteFile)(
IN HANDLE FileHandle, IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL, IN HANDLE Event OPTIONAL,

View File

@ -25,6 +25,11 @@
#include "lock.h" #include "lock.h"
#include "defines.h" #include "defines.h"
#ifndef KERNEL_MODE
#ifdef _M_ARM64EC
P_NtAllocateVirtualMemoryEx __sys_NtAllocateVirtualMemoryEx = NULL;
#endif
#endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Parameters // Parameters
@ -380,10 +385,29 @@ ALIGNED void *Pool_Alloc_Mem(ULONG size, ULONG tag)
// size parameter will be a multiple of POOL_PAGE_SIZE, and this routine // size parameter will be a multiple of POOL_PAGE_SIZE, and this routine
// must return memory allocated with page-alignment // must return memory allocated with page-alignment
#ifdef KERNEL_MODE #ifdef KERNEL_MODE
ptr = ExAllocatePoolWithTag(PagedPool, size, tag); #if (NTDDI_VERSION >= NTDDI_WIN10_VB)
ptr = ExAllocatePool2(POOL_FLAG_PAGED, size, tag);
#else #else
//ptr = VirtualAlloc(0, size, MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN, ptr = ExAllocatePoolWithTag(PagedPool, size, tag);
ULONG_PTR RegionSize = size; #endif
#else
SIZE_T RegionSize = size;
#ifdef _M_ARM64EC
if ((UCHAR)tag == 0xEC) {
//
// this pool is designated for native ARM code in a EC process
//
MEM_EXTENDED_PARAMETER Parameter = { 0 };
Parameter.Type = MemExtendedParameterAttributeFlags;
Parameter.ULong64 = MEM_EXTENDED_PARAMETER_EC_CODE;
__sys_NtAllocateVirtualMemoryEx(NtCurrentProcess(), &ptr, &RegionSize, MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN,
PAGE_EXECUTE_READWRITE, &Parameter, 1);
}
else
#endif
NtAllocateVirtualMemory(NtCurrentProcess(), &ptr, 0, &RegionSize, MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN, NtAllocateVirtualMemory(NtCurrentProcess(), &ptr, 0, &RegionSize, MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN,
((UCHAR)tag == 0xFF ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE)); ((UCHAR)tag == 0xFF ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE));
#endif #endif
@ -513,8 +537,13 @@ ALIGNED POOL *Pool_CreateTagged(ULONG tag)
#elif defined(KERNEL_MODE) #elif defined(KERNEL_MODE)
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
pool->lock = ExAllocatePool2(
POOL_FLAG_NON_PAGED, sizeof(ERESOURCE), tag);
#else
pool->lock = ExAllocatePoolWithTag( pool->lock = ExAllocatePoolWithTag(
NonPagedPool, sizeof(ERESOURCE), tag); NonPagedPool, sizeof(ERESOURCE), tag);
#endif
if (! pool->lock) { if (! pool->lock) {
Pool_Free_Mem(page, tag); Pool_Free_Mem(page, tag);
return NULL; return NULL;

View File

@ -105,7 +105,11 @@ NTSTATUS Stream_Open(
*out_stream = NULL; *out_stream = NULL;
#if (NTDDI_VERSION >= NTDDI_WIN10_VB)
stream = ExAllocatePool2(POOL_FLAG_PAGED, PAGE_SIZE, tzuk);
#else
stream = ExAllocatePoolWithTag(PagedPool, PAGE_SIZE, tzuk); stream = ExAllocatePoolWithTag(PagedPool, PAGE_SIZE, tzuk);
#endif
if (! stream) if (! stream)
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;

View File

@ -2595,9 +2595,11 @@ __declspec(dllimport) NTSTATUS __stdcall NtRaiseHardError(
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifdef _WIN64 #ifdef _M_ARM64
#define NtCurrentPeb() (*((ULONG_PTR*)(__getReg(18) + 0x60)))
#elif _WIN64
#define NtCurrentPeb() ((ULONG_PTR)__readgsqword(0x60)) #define NtCurrentPeb() ((ULONG_PTR)__readgsqword(0x60))
#else ! _WIN64 #else // _M_X86
#define NtCurrentPeb() ((ULONG_PTR)__readfsdword(0x30)) #define NtCurrentPeb() ((ULONG_PTR)__readfsdword(0x30))
#endif _WIN64 #endif _WIN64

View File

@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|ARM64EC">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64EC</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +17,14 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64EC">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64EC</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -39,6 +55,20 @@
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -53,6 +83,20 @@
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -62,21 +106,45 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="PropertySheets">
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'" Label="PropertySheets">
<Import Project="..\..\Sandbox64ec.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="..\..\Sandbox32.props" /> <Import Project="..\..\Sandbox32.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="PropertySheets">
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'" Label="PropertySheets">
<Import Project="..\..\Sandbox64ec.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<TargetExt>.dll</TargetExt> <TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName> <TargetName>SbieDll</TargetName>
<LibraryPath>$(WindowsSDK_LibraryPath_x86)</LibraryPath> <LibraryPath>$(WindowsSDK_LibraryPath_x86)</LibraryPath>
<LinkIncremental />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">
<TargetExt>.dll</TargetExt> <TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName> <TargetName>SbieDll</TargetName>
<LibraryPath>$(WindowsSDK_LibraryPath_x64)</LibraryPath> <LibraryPath>$(WindowsSDK_LibraryPath_x64)</LibraryPath>
<LinkIncremental />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">
<TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName>
<LinkIncremental />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName>
<LinkIncremental />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetExt>.dll</TargetExt> <TargetExt>.dll</TargetExt>
@ -88,6 +156,14 @@
<TargetName>SbieDll</TargetName> <TargetName>SbieDll</TargetName>
<LibraryPath>$(WindowsSDK_LibraryPath_x64)</LibraryPath> <LibraryPath>$(WindowsSDK_LibraryPath_x64)</LibraryPath>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">
<TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -134,6 +210,55 @@
<PreprocessorDefinitions>BUILD_UTILITY_PASS2;MY_WIN64_FLAG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>BUILD_UTILITY_PASS2;MY_WIN64_FLAG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile> </ResourceCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">
<ClCompile>
<Optimization>Disabled</Optimization>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<TreatWarningAsError>false</TreatWarningAsError>
<PreprocessorDefinitions>WITH_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>ntdll.lib;uuid.lib;kernel32.lib</AdditionalDependencies>
<BaseAddress>
</BaseAddress>
<EntryPointSymbol>DllMain</EntryPointSymbol>
<ModuleDefinitionFile>SboxDll64.def</ModuleDefinitionFile>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<OptimizeReferences>false</OptimizeReferences>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>BUILD_UTILITY_PASS2;MY_ARM64_FLAG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<TreatWarningAsError>false</TreatWarningAsError>
<PreprocessorDefinitions>WITH_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>ntdll.lib;uuid.lib;kernel32.lib</AdditionalDependencies>
<BaseAddress>
</BaseAddress>
<EntryPointSymbol>DllMain</EntryPointSymbol>
<ModuleDefinitionFile>SboxDll64.def</ModuleDefinitionFile>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<OptimizeReferences>false</OptimizeReferences>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>BUILD_UTILITY_PASS2;MY_ARM64_FLAG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile> <ClCompile>
<RuntimeTypeInfo>false</RuntimeTypeInfo> <RuntimeTypeInfo>false</RuntimeTypeInfo>
@ -175,60 +300,188 @@
<PreprocessorDefinitions>BUILD_UTILITY_PASS2;MY_WIN64_FLAG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>BUILD_UTILITY_PASS2;MY_WIN64_FLAG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile> </ResourceCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">
<ClCompile>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>ntdll.lib;uuid.lib;kernel32.lib</AdditionalDependencies>
<BaseAddress>
</BaseAddress>
<EntryPointSymbol>DllMain</EntryPointSymbol>
<ModuleDefinitionFile>SboxDll64.def</ModuleDefinitionFile>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<OptimizeReferences>false</OptimizeReferences>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>BUILD_UTILITY_PASS2;MY_ARM64_FLAG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<AdditionalDependencies>ntdll.lib;uuid.lib;kernel32.lib</AdditionalDependencies>
<BaseAddress>
</BaseAddress>
<EntryPointSymbol>DllMain</EntryPointSymbol>
<ModuleDefinitionFile>SboxDll64.def</ModuleDefinitionFile>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<OptimizeReferences>false</OptimizeReferences>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>BUILD_UTILITY_PASS2;MY_ARM64_FLAG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\common\Detours\detours.cpp" />
<ClCompile Include="..\..\common\Detours\disasm.cpp" />
<ClCompile Include="..\..\common\Detours\disolarm.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\common\Detours\disolarm64.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\common\Detours\disolx64.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\common\Detours\disolx86.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\common\dllimport.c" /> <ClCompile Include="..\..\common\dllimport.c" />
<ClCompile Include="..\..\common\hook_util.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\common\map.c"> <ClCompile Include="..\..\common\map.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\str_util.c"> <ClCompile Include="..\..\common\str_util.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\list.c"> <ClCompile Include="..\..\common\list.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\my_ntdll.c"> <ClCompile Include="..\..\common\my_ntdll.c">
<Optimization Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Disabled</Optimization> <Optimization Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">Disabled</Optimization>
<Optimization Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Disabled</Optimization> <Optimization Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">Disabled</Optimization>
<Optimization Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">Disabled</Optimization>
<Optimization Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">Disabled</Optimization>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\netfw.c"> <ClCompile Include="..\..\common\netfw.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\pattern.c"> <ClCompile Include="..\..\common\pattern.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\pool.c"> <ClCompile Include="..\..\common\pool.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\rbtree.c" /> <ClCompile Include="..\..\common\rbtree.c" />
<ClCompile Include="..\..\common\stream.c"> <ClCompile Include="..\..\common\stream.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="advapi.c"> <ClCompile Include="advapi.c">
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">false</ShowIncludes> <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">false</ShowIncludes> <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">false</ShowIncludes> <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">false</ShowIncludes> <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">false</ShowIncludes>
</ClCompile> </ClCompile>
<ClCompile Include="callsvc.c" /> <ClCompile Include="callsvc.c" />
<ClCompile Include="com.c" /> <ClCompile Include="com.c" />
@ -248,55 +501,91 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_dir.c"> <ClCompile Include="file_dir.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_init.c"> <ClCompile Include="file_init.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_link.c"> <ClCompile Include="file_link.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_misc.c"> <ClCompile Include="file_misc.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_copy.c"> <ClCompile Include="file_copy.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_pipe.c"> <ClCompile Include="file_pipe.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_recovery.c"> <ClCompile Include="file_recovery.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_snapshots.c"> <ClCompile Include="file_snapshots.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="gdi.c" /> <ClCompile Include="gdi.c" />
<ClCompile Include="gui.c" /> <ClCompile Include="gui.c" />
@ -319,7 +608,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="iphlp.c" /> <ClCompile Include="iphlp.c" />
<ClCompile Include="ipstore_enum.cpp" /> <ClCompile Include="ipstore_enum.cpp" />
@ -329,26 +622,42 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="key_merge.c"> <ClCompile Include="key_merge.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="key_util.c"> <ClCompile Include="key_util.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="ldr.c" /> <ClCompile Include="ldr.c" />
<ClCompile Include="ldr_init.c"> <ClCompile Include="ldr_init.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="lowlevel_inject.c" /> <ClCompile Include="lowlevel_inject.c" />
<ClCompile Include="lsa.c" /> <ClCompile Include="lsa.c" />
@ -367,37 +676,61 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="scm_event.c"> <ClCompile Include="scm_event.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="scm_misc.c"> <ClCompile Include="scm_misc.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="scm_msi.c"> <ClCompile Include="scm_msi.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="scm_notify.c"> <ClCompile Include="scm_notify.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="scm_query.c"> <ClCompile Include="scm_query.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="secure.c" /> <ClCompile Include="secure.c" />
<ClCompile Include="setup.c" /> <ClCompile Include="setup.c" />
@ -409,7 +742,11 @@
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">false</ShowIncludes> <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">false</ShowIncludes> <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">false</ShowIncludes> <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">false</ShowIncludes> <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">false</ShowIncludes>
<ShowIncludes Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">false</ShowIncludes>
</ClCompile> </ClCompile>
<ClCompile Include="taskbar.c" /> <ClCompile Include="taskbar.c" />
<ClCompile Include="terminal.c" /> <ClCompile Include="terminal.c" />
@ -422,16 +759,31 @@
<FileType>Document</FileType> <FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">ml64 -c -Cx -nologo -D_WIN64 -D_M_ARM64EC -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">ml64 -c -Cx -nologo -D_WIN64 -D_M_ARM64EC -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</CustomBuild> </CustomBuild>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\apps\com\common.h" /> <ClInclude Include="..\..\apps\com\common.h" />
<ClInclude Include="..\..\common\arm64_asm.h" />
<ClInclude Include="..\..\common\Detours\detours.h" />
<ClInclude Include="..\..\common\Detours\detver.h" />
<ClInclude Include="..\..\common\dllimport.h" /> <ClInclude Include="..\..\common\dllimport.h" />
<ClInclude Include="..\..\common\map.h" /> <ClInclude Include="..\..\common\map.h" />
<ClInclude Include="..\..\common\my_version.h" /> <ClInclude Include="..\..\common\my_version.h" />
@ -475,13 +827,25 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:ARM64x</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:ARM64</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:ARM64x</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:ARM64</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\common\NtCRT\x86\ntdll.def"> <CustomBuild Include="..\..\common\NtCRT\x86\ntdll.def">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x86</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x86</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x86</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x86</Command>
@ -493,29 +857,207 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</None> </None>
<None Include="util_64.asm"> <None Include="util_64.asm">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</None> </None>
<CustomBuild Include="util_arm.asm">
<FileType>Document</FileType>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">armasm64 -machine arm64ec -nologo -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">armasm64 -machine arm64ec -nologo -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">armasm64 -nologo -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">armasm64 -nologo -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
</CustomBuild>
<CustomBuild Include="util_EC.asm">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">armasm64 -machine arm64ec -nologo -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">armasm64 -machine arm64ec -nologo -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
</CustomBuild>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\atomics.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\chkstk_arm64ec.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\chpev2_support.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\ecsecgs.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gshandlerseh_amd64.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gshandlerseh_arm64ec.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gshandler_amd64.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gshandler_arm64ec.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gs_cookie.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gs_report.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\guard_check_arm64ec.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\guard_dispatch.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\guard_support.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\icall_helper_arm64ec.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\loadcfg.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object>
<Object Include="..\..\common\NtCRT\x86\ntdll\eh3valid_user.obj"> <Object Include="..\..\common\NtCRT\x86\ntdll\eh3valid_user.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object> </Object>
<Object Include="..\..\common\NtCRT\x86\ntdll\exsup.obj"> <Object Include="..\..\common\NtCRT\x86\ntdll\exsup.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object> </Object>
<Object Include="..\..\common\NtCRT\x86\ntdll\exsup2.obj"> <Object Include="..\..\common\NtCRT\x86\ntdll\exsup2.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object> </Object>
<Object Include="..\..\common\NtCRT\x86\ntdll\exsup3.obj"> <Object Include="..\..\common\NtCRT\x86\ntdll\exsup3.obj">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64EC'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</Object> </Object>

View File

@ -232,9 +232,30 @@
<ClCompile Include="file_snapshots.c"> <ClCompile Include="file_snapshots.c">
<Filter>file</Filter> <Filter>file</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\Detours\detours.cpp">
<Filter>common\Detours</Filter>
</ClCompile>
<ClCompile Include="..\..\common\Detours\disasm.cpp">
<Filter>common\Detours</Filter>
</ClCompile>
<ClCompile Include="..\..\common\Detours\disolarm.cpp">
<Filter>common\Detours</Filter>
</ClCompile>
<ClCompile Include="..\..\common\Detours\disolarm64.cpp">
<Filter>common\Detours</Filter>
</ClCompile>
<ClCompile Include="..\..\common\Detours\disolx64.cpp">
<Filter>common\Detours</Filter>
</ClCompile>
<ClCompile Include="..\..\common\Detours\disolx86.cpp">
<Filter>common\Detours</Filter>
</ClCompile>
<ClCompile Include="..\..\common\dllimport.c"> <ClCompile Include="..\..\common\dllimport.c">
<Filter>common</Filter> <Filter>common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\hook_util.c">
<Filter>common</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="advapi.h" /> <ClInclude Include="advapi.h" />
@ -323,9 +344,18 @@
<ClInclude Include="handle.h"> <ClInclude Include="handle.h">
<Filter>obj</Filter> <Filter>obj</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\common\Detours\detours.h">
<Filter>common\Detours</Filter>
</ClInclude>
<ClInclude Include="..\..\common\Detours\detver.h">
<Filter>common\Detours</Filter>
</ClInclude>
<ClInclude Include="..\..\common\dllimport.h"> <ClInclude Include="..\..\common\dllimport.h">
<Filter>common</Filter> <Filter>common</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\common\arm64_asm.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="resource.rc" /> <ResourceCompile Include="resource.rc" />
@ -387,8 +417,17 @@
<Filter Include="obj"> <Filter Include="obj">
<UniqueIdentifier>{05955a21-494a-4624-854e-d7c9b1e33401}</UniqueIdentifier> <UniqueIdentifier>{05955a21-494a-4624-854e-d7c9b1e33401}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="common\ntdll"> <Filter Include="common\Detours">
<UniqueIdentifier>{3306e464-8b2d-48cb-8d8f-0d222f17e31d}</UniqueIdentifier> <UniqueIdentifier>{2533049a-777d-4956-aa94-b09dee0483c0}</UniqueIdentifier>
</Filter>
<Filter Include="common\NtCRT">
<UniqueIdentifier>{5a5af632-b07e-4e18-b7c8-f8be4f6c646f}</UniqueIdentifier>
</Filter>
<Filter Include="common\NtCRT\libcmt">
<UniqueIdentifier>{854b7879-8bf9-4399-a5d9-5d1be7278d4b}</UniqueIdentifier>
</Filter>
<Filter Include="common\NtCRT\ntdll">
<UniqueIdentifier>{6dd7d86a-d2ee-465a-897e-63540d7fc47f}</UniqueIdentifier>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -400,21 +439,76 @@
<CustomBuild Include="util_asm.asm"> <CustomBuild Include="util_asm.asm">
<Filter>hook</Filter> <Filter>hook</Filter>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\common\NtCRT\x64\ntdll.def" /> <CustomBuild Include="util_arm.asm">
<CustomBuild Include="..\..\common\NtCRT\x86\ntdll.def" /> <Filter>hook</Filter>
</CustomBuild>
<CustomBuild Include="..\..\common\NtCRT\x64\ntdll.def">
<Filter>common\NtCRT</Filter>
</CustomBuild>
<CustomBuild Include="..\..\common\NtCRT\x86\ntdll.def">
<Filter>common\NtCRT</Filter>
</CustomBuild>
<CustomBuild Include="util_EC.asm">
<Filter>hook</Filter>
</CustomBuild>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\chkstk_arm64ec.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\chpev2_support.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gs_cookie.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\guard_check_arm64ec.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\guard_dispatch.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\guard_support.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\icall_helper_arm64ec.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\loadcfg.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gshandlerseh_arm64ec.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gshandlerseh_amd64.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gshandler_arm64ec.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gshandler_amd64.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\ecsecgs.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\gs_report.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object>
<Object Include="..\..\common\NtCRT\x86\ntdll\eh3valid_user.obj"> <Object Include="..\..\common\NtCRT\x86\ntdll\eh3valid_user.obj">
<Filter>common\ntdll</Filter> <Filter>common\NtCRT\ntdll</Filter>
</Object> </Object>
<Object Include="..\..\common\NtCRT\x86\ntdll\exsup.obj"> <Object Include="..\..\common\NtCRT\x86\ntdll\exsup.obj">
<Filter>common\ntdll</Filter> <Filter>common\NtCRT\ntdll</Filter>
</Object> </Object>
<Object Include="..\..\common\NtCRT\x86\ntdll\exsup2.obj"> <Object Include="..\..\common\NtCRT\x86\ntdll\exsup2.obj">
<Filter>common\ntdll</Filter> <Filter>common\NtCRT\ntdll</Filter>
</Object> </Object>
<Object Include="..\..\common\NtCRT\x86\ntdll\exsup3.obj"> <Object Include="..\..\common\NtCRT\x86\ntdll\exsup3.obj">
<Filter>common\ntdll</Filter> <Filter>common\NtCRT\ntdll</Filter>
</Object>
<Object Include="..\..\common\NtCRT\a64ec\libcmt\atomics.obj">
<Filter>common\NtCRT\libcmt</Filter>
</Object> </Object>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -23,6 +23,7 @@ SbieApi_GetFileName=_SbieApi_GetFileName@12
SbieApi_GetHomePath=_SbieApi_GetHomePath@16 SbieApi_GetHomePath=_SbieApi_GetHomePath@16
SbieApi_GetUnmountHive=_SbieApi_GetUnmountHive@4 SbieApi_GetUnmountHive=_SbieApi_GetUnmountHive@4
SbieApi_GetVersion=_SbieApi_GetVersion@4 SbieApi_GetVersion=_SbieApi_GetVersion@4
SbieApi_GetVersionEx=_SbieApi_GetVersionEx@8
;;; SbieApi_GetWork=_SbieApi_GetWork@12 ;;; SbieApi_GetWork=_SbieApi_GetWork@12
SbieApi_GetMessage=_SbieApi_GetMessage@24 SbieApi_GetMessage=_SbieApi_GetMessage@24

View File

@ -22,9 +22,10 @@
#define NOGDI #define NOGDI
#include "dll.h" #include "dll.h"
#include "debug.h"
#include "common\pattern.h" #include "common\pattern.h"
#include "common\arm64_asm.h"
#include "core/drv/api_defs.h" #include "core/drv/api_defs.h"
#include "core/low/lowdata.h" #include "core/low/lowdata.h"
@ -40,6 +41,11 @@ NTSTATUS SbieApi_QueryVirtualMemory(HANDLE hProcess, DWORD64 BaseAddress, MEMORY
BOOLEAN Win32_HookWin32WoW64(); BOOLEAN Win32_HookWin32WoW64();
#endif #endif
#ifdef _M_ARM64EC
ULONG Hook_GetSysCallFunc(ULONG* aCode, void** pHandleStubHijack);
ULONG* SbieDll_FindFirstSysCallFunc(ULONG* aCode, void** pHandleStubHijack);
void* SbieDll_GetEcExitThunk(void* HandleStubHijack);
#endif
ULONG SbieDll_GetSysCallOffset(const ULONG *SyscallPtr, ULONG syscall_index); ULONG SbieDll_GetSysCallOffset(const ULONG *SyscallPtr, ULONG syscall_index);
@ -82,6 +88,55 @@ _FX BOOLEAN Win32_HookWin32SysCalls(HMODULE win32u_base)
SyscallPtr = (ULONG *)(syscall_data SyscallPtr = (ULONG *)(syscall_data
+ sizeof(ULONG)); // size of buffer + sizeof(ULONG)); // size of buffer
#ifdef _M_ARM64EC
ULONG* aCode = SbieDll_FindFirstSysCallFunc((ULONG*)win32u_base, NULL);
if (aCode == NULL) {
HeapFree(GetProcessHeap(), 0, syscall_data);
return FALSE;
}
for (ULONG pos = 0; pos < 128; aCode++, pos += 4) {
SyscallNum = Hook_GetSysCallFunc(aCode, NULL);
if (SyscallNum == -1)
continue;
if (SbieDll_GetSysCallOffset(SyscallPtr, SyscallNum)) {
RegionBase = aCode;
RegionSize = 16;
SBIELOW_CALL(NtProtectVirtualMemory)(
NtCurrentProcess(), &RegionBase, &RegionSize,
PAGE_EXECUTE_READWRITE, &OldProtect);
MOV mov;
mov.OP = 0xD2800011; // mov x17, #0xFFFF
mov.imm16 = (USHORT)SyscallNum;
*aCode++ = mov.OP;
*aCode++ = 0x18000048; // ldr w8, 8
*aCode++ = 0xD61F0100; // br x8
*(ULONG*)aCode = (ULONG)(ULONG_PTR)SystemServiceAsm;
SBIELOW_CALL(NtFlushInstructionCache)(
NtCurrentProcess(), RegionBase, (ULONG)RegionSize);
SBIELOW_CALL(NtProtectVirtualMemory)(
NtCurrentProcess(), &RegionBase, &RegionSize,
OldProtect, &OldProtect);
}
//if (aCode[13] != 0 || aCode[14] != 0 || aCode[15] != 0 || aCode[16] != 0)
// break;
//aCode += (13 + 3 + 3 + 1);
aCode += 16;
pos = 0; // reset
}
#else
while (SyscallPtr[0] || SyscallPtr[1]) { while (SyscallPtr[0] || SyscallPtr[1]) {
@ -97,7 +152,9 @@ _FX BOOLEAN Win32_HookWin32SysCalls(HMODULE win32u_base)
// //
RegionBase = ZwXxxPtr; RegionBase = ZwXxxPtr;
#ifdef _WIN64 #ifdef _M_ARM64
RegionSize = 16;
#elif _WIN64
RegionSize = 14; RegionSize = 14;
#else ! _WIN64 #else ! _WIN64
RegionSize = 10; RegionSize = 10;
@ -118,7 +175,23 @@ _FX BOOLEAN Win32_HookWin32SysCalls(HMODULE win32u_base)
SyscallNum = SyscallPtr[0]; SyscallNum = SyscallPtr[0];
#ifdef _WIN64 #ifdef _M_ARM64
ULONG* aCode = (ULONG*)ZwXxxPtr;
MOV mov;
mov.OP = 0xD2800011; // mov x17, #0xFFFF
mov.imm16 = (USHORT)SyscallNum;
*aCode++ = mov.OP;
*aCode++ = 0x18000048; // ldr w8, 8
*aCode++ = 0xD61F0100; // br x8
*(ULONG*)aCode = (ULONG)(ULONG_PTR)SystemServiceAsm;
SBIELOW_CALL(NtFlushInstructionCache)(
NtCurrentProcess(), RegionBase, (ULONG)RegionSize);
#elif _WIN64
ZwXxxPtr[0] = 0x49; // mov r10, SyscallNumber ZwXxxPtr[0] = 0x49; // mov r10, SyscallNumber
ZwXxxPtr[1] = 0xC7; ZwXxxPtr[1] = 0xC7;
@ -160,6 +233,8 @@ _FX BOOLEAN Win32_HookWin32SysCalls(HMODULE win32u_base)
SyscallPtr += 2; SyscallPtr += 2;
} }
#endif
HeapFree(GetProcessHeap(), 0, syscall_data); HeapFree(GetProcessHeap(), 0, syscall_data);
return TRUE; return TRUE;
} }
@ -249,6 +324,27 @@ ULONG Win32_GetSysCallNumberWoW64(DWORD64 pos, UCHAR* dll_data)
} }
//---------------------------------------------------------------------------
// Win32_GetSysCallNumberArm64
//---------------------------------------------------------------------------
_FX ULONG Win32_GetSysCallNumberArm64(ULONG* aCode)
{
// 0: e10000d4 svc #0x1000
SVC svc;
svc.OP = aCode[0];
if (!IS_SVC(svc) || svc.imm16 < 0x1000) // win32 syscalls are >= 0x1000
return -1;
// 1: c0035fd6 ret
if (aCode[1] != 0xd65f03c0)
return -1;
return svc.imm16;
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Win32_HookWin32WoW64 // Win32_HookWin32WoW64
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -315,6 +411,84 @@ _FX BOOLEAN Win32_HookWin32WoW64()
SyscallPtr = (ULONG*)(syscall_data + sizeof(ULONG)); // size of buffer SyscallPtr = (ULONG*)(syscall_data + sizeof(ULONG)); // size of buffer
if (Dll_IsXtAjit) { // x86 on arm64
UCHAR* ZwXxxPtr;
ULONG* aCode = (ULONG*)dll_data;
for (ULONG64 pos = 0; pos < SizeRead; aCode++, pos += 4) {
if (Win32_GetSysCallNumberArm64(aCode) != -1)
break;
}
if ((DWORD64)aCode >= (DWORD64)dll_data + SizeRead) {
SbieApi_Log(2303, L"win32k, get first syscall wrapper failed");
goto finish;
}
for (ULONG pos = 0; pos < 128; aCode++, pos += 4) {
ULONG SyscallNum = Win32_GetSysCallNumberArm64(aCode);
if (SyscallNum == -1)
continue;
if (SbieDll_GetSysCallOffset(SyscallPtr, SyscallNum)) {
DWORD64 offset = (DWORD64)aCode - (DWORD64)dll_data;
RegionBase = BaseAddress + offset;
RegionSize = 16;
//
// prepare call to call our SystemServiceAsm
//
ZwXxxPtr = aCode;
MOV mov;
mov.OP = 0xD2800011; // mov x17, #0xFFFF
mov.imm16 = (USHORT)SyscallNum;
*aCode++ = mov.OP;
*aCode++ = 0x18000048; // ldr w8, 8
*aCode++ = 0xD61F0100; // br x8
*(ULONG*)aCode = (ULONG)(ULONG_PTR)SystemServiceAsm;
//
// overwrite the ZwXxx export to call our SystemServiceAsm,
// and then restore the original page protection
//
if (!NT_SUCCESS(SbieApi_ProtectVirtualMemory(NtCurrentProcess(), RegionBase, RegionSize, PAGE_EXECUTE_READWRITE, &OldProtect))) {
SbieApi_Log(2303, L"win32k %d (1)", SyscallNum);
goto finish;
}
if (!NT_SUCCESS(SbieApi_WriteVirtualMemory(NtCurrentProcess(), RegionBase, ZwXxxPtr, RegionSize, &SizeRead))) {
SbieApi_Log(2303, L"win32k %d (2)", SyscallNum);
goto finish;
}
if (!NT_SUCCESS(SbieApi_FlushInstructionCache(NtCurrentProcess(), RegionBase, RegionSize))) {
SbieApi_Log(2303, L"win32k %d (3)", SyscallNum);
goto finish;
}
if (!NT_SUCCESS(SbieApi_ProtectVirtualMemory(NtCurrentProcess(), RegionBase, RegionSize, OldProtect, &OldProtect))) {
SbieApi_Log(2303, L"win32k %d (4)", SyscallNum);
goto finish;
}
}
//if (aCode[2] != 0 || aCode[3] != 0)
// break;
aCode += 4;
pos = 0; // reset
}
}
else { // x86 on x64
UCHAR ZwXxxPtr[16]; UCHAR ZwXxxPtr[16];
@ -400,6 +574,8 @@ _FX BOOLEAN Win32_HookWin32WoW64()
pos++; pos++;
} }
}
finish: finish:
if(syscall_data) if(syscall_data)
@ -574,28 +750,3 @@ NTSTATUS SbieApi_QueryVirtualMemory(HANDLE hProcess, DWORD64 BaseAddress, MEMORY
} }
#endif #endif
//---------------------------------------------------------------------------
// SbieDll_GetSysCallOffset
//---------------------------------------------------------------------------
_FX ULONG SbieDll_GetSysCallOffset(const ULONG *SyscallPtr, ULONG syscall_index)
{
ULONG SyscallNum;
while (SyscallPtr[0] || SyscallPtr[1]) {
SyscallNum = SyscallPtr[0];
SyscallNum &= 0xFFFF; // clear the not needed param count
if (SyscallNum == syscall_index)
return SyscallPtr[1];
SyscallPtr += 2;
}
return 0;
}

View File

@ -45,6 +45,7 @@ _FX const WCHAR *SbieDll_PortName(void)
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifndef _WIN64
_FX BOOLEAN SbieDll_IsWow64(void) _FX BOOLEAN SbieDll_IsWow64(void)
{ {
// //
@ -53,8 +54,6 @@ _FX BOOLEAN SbieDll_IsWow64(void)
// initialize the variable here // initialize the variable here
// //
#ifndef _WIN64
static BOOLEAN init = FALSE; static BOOLEAN init = FALSE;
typedef BOOL (*P_IsWow64Process)(HANDLE, BOOL *); typedef BOOL (*P_IsWow64Process)(HANDLE, BOOL *);
@ -73,10 +72,9 @@ _FX BOOLEAN SbieDll_IsWow64(void)
init = TRUE; init = TRUE;
} }
#endif ! _WIN64
return Dll_IsWow64; return Dll_IsWow64;
} }
#endif ! _WIN64
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -123,6 +121,7 @@ _FX BOOLEAN SbieDll_ConnectPort(BOOLEAN Silent)
data->SizeofPortMsg = sizeof(PORT_MESSAGE); data->SizeofPortMsg = sizeof(PORT_MESSAGE);
#ifndef _WIN64
if (! Dll_BoxName) if (! Dll_BoxName)
SbieDll_IsWow64(); SbieDll_IsWow64();
@ -137,6 +136,7 @@ _FX BOOLEAN SbieDll_ConnectPort(BOOLEAN Silent)
data->SizeofPortMsg += sizeof(ULONG) * 4; data->SizeofPortMsg += sizeof(ULONG) * 4;
} }
#endif
data->MaxDataLen -= data->SizeofPortMsg; data->MaxDataLen -= data->SizeofPortMsg;
} }

View File

@ -73,7 +73,9 @@ typedef struct _COM_IUNKNOWN {
// Functions // Functions
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifndef _WIN64
BOOLEAN SbieDll_IsWow64(); BOOLEAN SbieDll_IsWow64();
#endif
static BOOLEAN Com_IsFirewallClsid(REFCLSID rclsid, const WCHAR *BoxName); static BOOLEAN Com_IsFirewallClsid(REFCLSID rclsid, const WCHAR *BoxName);
@ -93,6 +95,7 @@ static HRESULT Com_CoCreateInstanceEx(
REFCLSID rclsid, void *pUnkOuter, ULONG clsctx, void *pServerInfo, REFCLSID rclsid, void *pUnkOuter, ULONG clsctx, void *pServerInfo,
ULONG cmq, MULTI_QI *pmqs); ULONG cmq, MULTI_QI *pmqs);
#ifndef _M_ARM64
static BOOLEAN Com_Hook_CoUnmarshalInterface_W8(UCHAR *code, HMODULE module); static BOOLEAN Com_Hook_CoUnmarshalInterface_W8(UCHAR *code, HMODULE module);
static HRESULT __fastcall Com_CoUnmarshalInterface_W8( static HRESULT __fastcall Com_CoUnmarshalInterface_W8(
@ -100,6 +103,7 @@ static HRESULT __fastcall Com_CoUnmarshalInterface_W8(
static HRESULT __fastcall Com_CoUnmarshalInterface_W81( static HRESULT __fastcall Com_CoUnmarshalInterface_W81(
ULONG_PTR StreamAddr, ULONG zero, REFIID riid, void **ppv); ULONG_PTR StreamAddr, ULONG zero, REFIID riid, void **ppv);
#endif
static HRESULT Com_CoUnmarshalInterface_W10( static HRESULT Com_CoUnmarshalInterface_W10(
ULONG_PTR StreamAddr, REFIID riid,void **ppv); ULONG_PTR StreamAddr, REFIID riid,void **ppv);
@ -231,8 +235,10 @@ P_CoGetObject __sys_CoGetObject = NULL;
P_CoCreateInstance __sys_CoCreateInstance = NULL; P_CoCreateInstance __sys_CoCreateInstance = NULL;
P_CoCreateInstanceEx __sys_CoCreateInstanceEx = NULL; P_CoCreateInstanceEx __sys_CoCreateInstanceEx = NULL;
P_CoUnmarshalInterface __sys_CoUnmarshalInterface = NULL; P_CoUnmarshalInterface __sys_CoUnmarshalInterface = NULL;
#ifndef _M_ARM64
P_CoUnmarshalInterface_W8 __sys_CoUnmarshalInterface_W8 = NULL; P_CoUnmarshalInterface_W8 __sys_CoUnmarshalInterface_W8 = NULL;
P_CoUnmarshalInterface_W81 __sys_CoUnmarshalInterface_W81 = NULL; P_CoUnmarshalInterface_W81 __sys_CoUnmarshalInterface_W81 = NULL;
#endif
P_CoUnmarshalInterface_W10 __sys_CoUnmarshalInterface_W10 = NULL; P_CoUnmarshalInterface_W10 __sys_CoUnmarshalInterface_W10 = NULL;
P_CoMarshalInterface __sys_CoMarshalInterface = NULL; P_CoMarshalInterface __sys_CoMarshalInterface = NULL;
@ -873,7 +879,7 @@ _FX HRESULT Com_CoCreateInstanceEx(
// Com_Hook_CoUnmarshalInterface_W8 // Com_Hook_CoUnmarshalInterface_W8
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifndef _M_ARM64
_FX BOOLEAN Com_Hook_CoUnmarshalInterface_W8(UCHAR *code, HMODULE module) _FX BOOLEAN Com_Hook_CoUnmarshalInterface_W8(UCHAR *code, HMODULE module)
{ {
@ -900,7 +906,7 @@ _FX BOOLEAN Com_Hook_CoUnmarshalInterface_W8(UCHAR *code, HMODULE module)
#ifdef _WIN64 #ifdef _WIN64
if (Dll_OsBuild >= 15002) { if (Dll_OsBuild >= 15002) { // Windows 10 1703 preview
if (code[0x18] == 0xe9) { if (code[0x18] == 0xe9) {
@ -912,7 +918,7 @@ _FX BOOLEAN Com_Hook_CoUnmarshalInterface_W8(UCHAR *code, HMODULE module)
} }
} }
else if (Dll_OsBuild >= 14942) { else if (Dll_OsBuild >= 14942) { // Windows 10 1703 preview #7
if (code[0x20] == 0xe9) { if (code[0x20] == 0xe9) {
LONG_PTR jump_target = (LONG_PTR)code + (*(LONG *)(code + 0x21)) + 0x25; LONG_PTR jump_target = (LONG_PTR)code + (*(LONG *)(code + 0x21)) + 0x25;
@ -1149,6 +1155,7 @@ _FX HRESULT Com_CoUnmarshalInterface_W10(
return Com_CoUnmarshalInterface_Common(pStream, riid, ppv, &posl); return Com_CoUnmarshalInterface_Common(pStream, riid, ppv, &posl);
} }
#endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -1406,13 +1413,16 @@ _FX BOOLEAN Com_Init_ComBase(HMODULE module)
if (!Ipc_OpenCOM) { if (!Ipc_OpenCOM) {
if (Dll_OsBuild >= 8400) { if (Dll_OsBuild >= 8400) {
if (!Com_Hook_CoUnmarshalInterface_W8( CoUnmarshalInterface = (P_CoUnmarshalInterface)GetProcAddress(GetModuleHandle(L"combase.dll"), "CoUnmarshalInterface");
(UCHAR*)CoUnmarshalInterface, module)) #ifndef _M_ARM64
// $HookHack$ - Custom, not automated, Hook for windows 8 and 8.1 and early windows 10 builds
if (!CoUnmarshalInterface) {
if (!Com_Hook_CoUnmarshalInterface_W8((UCHAR*)CoUnmarshalInterface, module))
return FALSE; return FALSE;
} }
else { #endif
SBIEDLL_HOOK(Com_, CoUnmarshalInterface);
} }
SBIEDLL_HOOK(Com_, CoUnmarshalInterface);
SBIEDLL_HOOK(Com_, CoMarshalInterface); SBIEDLL_HOOK(Com_, CoMarshalInterface);
SbieDll_IsOpenClsid(&IID_IUnknown, CLSCTX_LOCAL_SERVER, NULL); // trigger list loading SbieDll_IsOpenClsid(&IID_IUnknown, CLSCTX_LOCAL_SERVER, NULL); // trigger list loading
@ -1431,6 +1441,12 @@ _FX BOOLEAN Com_Init_ComBase(HMODULE module)
if (SbieApi_QueryConf(NULL, L"ClsidTrace", 0, wsTraceOptions, sizeof(wsTraceOptions)) == STATUS_SUCCESS && wsTraceOptions[0] != L'\0') if (SbieApi_QueryConf(NULL, L"ClsidTrace", 0, wsTraceOptions, sizeof(wsTraceOptions)) == STATUS_SUCCESS && wsTraceOptions[0] != L'\0')
Com_TraceFlag = TRUE; Com_TraceFlag = TRUE;
if (!__sys_RegOpenKeyExW) {
HMODULE module = Dll_KernelBase ? Dll_KernelBase : LoadLibrary(DllName_advapi32);
__sys_RegOpenKeyExW = (P_RegOpenKeyEx)GetProcAddress(module, "RegOpenKeyExW");
GETPROCADDR_SYS(RegCloseKey);
}
return TRUE; return TRUE;
} }

View File

@ -1450,7 +1450,11 @@ _FX BOOLEAN Custom_OsppcDll(HMODULE module)
ULONG zero = 0; ULONG zero = 0;
ULONG ProductIndex, ValueIndex; ULONG ProductIndex, ValueIndex;
ULONG Wow64 = Dll_IsWow64 ? KEY_WOW64_64KEY : 0; ULONG Wow64 = 0;
#ifndef _WIN64
if (Dll_IsWow64)
Wow64 = KEY_WOW64_64KEY;
#endif
// //
// open Microsoft Office 2010 registry key // open Microsoft Office 2010 registry key
@ -1527,6 +1531,7 @@ _FX BOOLEAN Custom_OsppcDll(HMODULE module)
return TRUE; return TRUE;
} }
#ifndef _M_ARM64
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Custom_InternetDownloadManager // Custom_InternetDownloadManager
@ -1731,3 +1736,5 @@ _FX BOOLEAN Acscmonitor_Init(HMODULE hDll)
CloseHandle(ThreadHandle); CloseHandle(ThreadHandle);
return TRUE; return TRUE;
} }
#endif

View File

@ -1,5 +1,6 @@
/* /*
* Copyright 2004-2020 Sandboxie Holdings, LLC * Copyright 2004-2020 Sandboxie Holdings, LLC
* Copyright 2022 DavidXanatos, xanasoft.com
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -29,6 +30,7 @@
#include "dll.h" #include "dll.h"
#include <stdio.h> #include <stdio.h>
#include "../../common/my_xeb.h"
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -53,6 +55,13 @@
// Functions // Functions
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
static NTSTATUS Debug_NtRaiseHardError(
NTSTATUS ErrorStatus,
ULONG NumberOfParameters,
ULONG UnicodeBitMask,
ULONG_PTR *Parameters,
ULONG ErrorOption,
ULONG *ErrorReturn);
static void Debug_RtlSetLastWin32Error(ULONG err); static void Debug_RtlSetLastWin32Error(ULONG err);
@ -79,6 +88,13 @@ static NTSTATUS Debug_LdrGetDllHandle(
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
typedef NTSTATUS (*P_NtRaiseHardError)(
NTSTATUS ErrorStatus,
ULONG NumberOfParameters,
ULONG UnicodeBitMask,
ULONG_PTR *Parameters,
ULONG ErrorOption,
ULONG *ErrorReturn);
typedef void (*P_RtlSetLastWin32Error)(ULONG err); typedef void (*P_RtlSetLastWin32Error)(ULONG err);
typedef void (*P_OutputDebugString)(const void *str); typedef void (*P_OutputDebugString)(const void *str);
typedef BOOL (*P_DebugActiveProcess)(ULONG dwProcessId); typedef BOOL (*P_DebugActiveProcess)(ULONG dwProcessId);
@ -86,6 +102,7 @@ typedef BOOL (*P_WaitForDebugEvent)(
LPDEBUG_EVENT lpDebugEvent, DWORD dwMilliseconds); LPDEBUG_EVENT lpDebugEvent, DWORD dwMilliseconds);
static P_NtRaiseHardError __sys_NtRaiseHardError = NULL;
static P_RtlSetLastWin32Error __sys_RtlSetLastWin32Error = NULL; static P_RtlSetLastWin32Error __sys_RtlSetLastWin32Error = NULL;
static P_OutputDebugString __sys_OutputDebugStringW = NULL; static P_OutputDebugString __sys_OutputDebugStringW = NULL;
static P_OutputDebugString __sys_OutputDebugStringA = NULL; static P_OutputDebugString __sys_OutputDebugStringA = NULL;
@ -119,8 +136,7 @@ __declspec(dllimport) NTSTATUS LdrGetDllHandle(
_FX int Debug_Init(void) _FX int Debug_Init(void)
{ {
HMODULE module = NULL; // fix-me P_NtRaiseHardError NtRaiseHardError;
P_OutputDebugString OutputDebugStringW; P_OutputDebugString OutputDebugStringW;
P_OutputDebugString OutputDebugStringA; P_OutputDebugString OutputDebugStringA;
P_RtlSetLastWin32Error RtlSetLastWin32Error; P_RtlSetLastWin32Error RtlSetLastWin32Error;
@ -131,6 +147,14 @@ _FX int Debug_Init(void)
// intercept NTDLL entry points // intercept NTDLL entry points
// //
HMODULE module = Dll_Ntdll;
NtRaiseHardError = (P_NtRaiseHardError)
GetProcAddress(Dll_Ntdll, "NtRaiseHardError");
SBIEDLL_HOOK(Debug_,NtRaiseHardError);
RtlSetLastWin32Error = (P_RtlSetLastWin32Error) RtlSetLastWin32Error = (P_RtlSetLastWin32Error)
GetProcAddress(Dll_Ntdll, "RtlSetLastWin32Error"); GetProcAddress(Dll_Ntdll, "RtlSetLastWin32Error");
@ -140,6 +164,8 @@ _FX int Debug_Init(void)
// intercept KERNEL32 entry points // intercept KERNEL32 entry points
// //
module = Dll_Kernel32;
OutputDebugStringW = (P_OutputDebugString) OutputDebugStringW = (P_OutputDebugString)
GetProcAddress(Dll_Kernel32, "OutputDebugStringW"); GetProcAddress(Dll_Kernel32, "OutputDebugStringW");
OutputDebugStringA = (P_OutputDebugString) OutputDebugStringA = (P_OutputDebugString)
@ -241,6 +267,23 @@ _FX int Debug_Init(void)
} }
//---------------------------------------------------------------------------
// Debug_NtRaiseHardError
//---------------------------------------------------------------------------
ALIGNED NTSTATUS Debug_NtRaiseHardError(
NTSTATUS ErrorStatus,
ULONG NumberOfParameters,
ULONG UnicodeBitMask,
ULONG_PTR *Parameters,
ULONG ErrorOption,
ULONG *ErrorReturn)
{
return __sys_NtRaiseHardError(ErrorStatus, NumberOfParameters, UnicodeBitMask, Parameters, ErrorOption, ErrorReturn);
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Debug_RtlSetLastWin32Error // Debug_RtlSetLastWin32Error
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@ -42,9 +42,6 @@
int Debug_Init(void); int Debug_Init(void);
void DbgPrint(const char* format, ...);
void DbgTrace(const char* format, ...);
#endif WITH_DEBUG #endif WITH_DEBUG

View File

@ -62,7 +62,7 @@ extern __declspec(dllexport) int __CRTDECL Sbie_snprintf(char *_Buffer, size_t C
#ifdef _WIN64 #ifdef _WIN64
// Pointer to 64-bit PEB_LDR_DATA is at offset 0x0018 of 64-bit PEB // Pointer to 64-bit PEB_LDR_DATA is at offset 0x0018 of 64-bit PEB
#define GET_ADDR_OF_PEB __readgsqword(0x60) #define GET_ADDR_OF_PEB NtCurrentPeb()
#define GET_PEB_LDR_DATA (*(PEB_LDR_DATA **)(GET_ADDR_OF_PEB + 0x18)) #define GET_PEB_LDR_DATA (*(PEB_LDR_DATA **)(GET_ADDR_OF_PEB + 0x18))
#define GET_PEB_IMAGE_BASE (*(ULONG_PTR *)(GET_ADDR_OF_PEB + 0x10)) #define GET_PEB_IMAGE_BASE (*(ULONG_PTR *)(GET_ADDR_OF_PEB + 0x10))
#define GET_PEB_MAJOR_VERSION (*(USHORT *)(GET_ADDR_OF_PEB + 0x118)) #define GET_PEB_MAJOR_VERSION (*(USHORT *)(GET_ADDR_OF_PEB + 0x118))
@ -251,6 +251,7 @@ extern HINSTANCE Dll_Instance;
extern HMODULE Dll_Ntdll; extern HMODULE Dll_Ntdll;
extern HMODULE Dll_Kernel32; extern HMODULE Dll_Kernel32;
extern HMODULE Dll_KernelBase; extern HMODULE Dll_KernelBase;
// $Workaround$ - 3rd party fix
extern HMODULE Dll_DigitalGuardian; extern HMODULE Dll_DigitalGuardian;
extern const WCHAR *Dll_BoxName; extern const WCHAR *Dll_BoxName;
@ -276,7 +277,15 @@ extern ULONG Dll_SessionId;
extern ULONG64 Dll_ProcessFlags; extern ULONG64 Dll_ProcessFlags;
#ifndef _WIN64
extern BOOLEAN Dll_IsWow64; extern BOOLEAN Dll_IsWow64;
#endif
#ifdef _M_X64
extern BOOLEAN Dll_IsArm64ec;
#endif
#ifndef _M_ARM64
extern BOOLEAN Dll_IsXtAjit;
#endif
extern BOOLEAN Dll_IsSystemSid; extern BOOLEAN Dll_IsSystemSid;
extern BOOLEAN Dll_InitComplete; extern BOOLEAN Dll_InitComplete;
extern BOOLEAN Dll_RestrictedToken; extern BOOLEAN Dll_RestrictedToken;
@ -424,7 +433,9 @@ BOOLEAN Dll_SkipHook(const WCHAR *HookName);
void *Dll_JumpStub(void *OldCode, void *NewCode, ULONG_PTR StubArg); void *Dll_JumpStub(void *OldCode, void *NewCode, ULONG_PTR StubArg);
#if !defined(_M_ARM64) && !defined(_M_ARM64EC)
ULONG_PTR *Dll_JumpStubData(void); ULONG_PTR *Dll_JumpStubData(void);
#endif
ULONG_PTR *Dll_JumpStubDataForCode(void *StubCode); ULONG_PTR *Dll_JumpStubDataForCode(void *StubCode);

File diff suppressed because it is too large Load Diff

View File

@ -42,6 +42,8 @@ static void Dll_SelectImageType(void);
void Ldr_Inject_Init(BOOLEAN bHostInject); void Ldr_Inject_Init(BOOLEAN bHostInject);
void Dll_Wow64DisableTurboThunks(void);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Variables // Variables
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -50,11 +52,15 @@ void Ldr_Inject_Init(BOOLEAN bHostInject);
const ULONG tzuk = 'xobs'; const ULONG tzuk = 'xobs';
SBIELOW_DATA* SbieApi_data = NULL; SBIELOW_DATA* SbieApi_data = NULL;
#ifdef _M_ARM64EC
ULONG* SbieApi_SyscallPtr = NULL;
#endif
HINSTANCE Dll_Instance = NULL; HINSTANCE Dll_Instance = NULL;
HMODULE Dll_Ntdll = NULL; HMODULE Dll_Ntdll = NULL;
HMODULE Dll_Kernel32 = NULL; HMODULE Dll_Kernel32 = NULL;
HMODULE Dll_KernelBase = NULL; HMODULE Dll_KernelBase = NULL;
// $Workaround$ - 3rd party fix
HMODULE Dll_DigitalGuardian = NULL; HMODULE Dll_DigitalGuardian = NULL;
const WCHAR *Dll_BoxName = NULL; const WCHAR *Dll_BoxName = NULL;
@ -80,7 +86,15 @@ ULONG Dll_SessionId = 0;
ULONG64 Dll_ProcessFlags = 0; ULONG64 Dll_ProcessFlags = 0;
#ifndef _WIN64
BOOLEAN Dll_IsWow64 = FALSE; BOOLEAN Dll_IsWow64 = FALSE;
#endif
#ifdef _M_X64
BOOLEAN Dll_IsArm64ec = FALSE;
#endif
#ifndef _M_ARM64
BOOLEAN Dll_IsXtAjit = FALSE;
#endif
BOOLEAN Dll_IsSystemSid = FALSE; BOOLEAN Dll_IsSystemSid = FALSE;
BOOLEAN Dll_InitComplete = FALSE; BOOLEAN Dll_InitComplete = FALSE;
BOOLEAN Dll_RestrictedToken = FALSE; BOOLEAN Dll_RestrictedToken = FALSE;
@ -91,10 +105,10 @@ BOOLEAN Dll_CompartmentMode = FALSE;
ULONG Dll_ImageType = DLL_IMAGE_UNSPECIFIED; ULONG Dll_ImageType = DLL_IMAGE_UNSPECIFIED;
ULONG Dll_OsBuild = 0; // initialized by Key module ULONG Dll_OsBuild = 0;
ULONG Dll_Windows = 0; ULONG Dll_Windows = 0;
const UCHAR *SbieDll_Version = MY_VERSION_COMPAT; const UCHAR *SbieDll_Version = MY_VERSION_STRING;
BOOLEAN Dll_SbieTrace = FALSE; BOOLEAN Dll_SbieTrace = FALSE;
@ -141,6 +155,7 @@ _FX BOOL WINAPI DllMain(
if (dwReason == DLL_THREAD_ATTACH) { if (dwReason == DLL_THREAD_ATTACH) {
if (Dll_BoxName) { if (Dll_BoxName) {
if (Dll_Windows < 10)
Dll_FixWow64Syscall(); Dll_FixWow64Syscall();
Gui_ConnectToWindowStationAndDesktop(NULL); Gui_ConnectToWindowStationAndDesktop(NULL);
} }
@ -150,17 +165,29 @@ _FX BOOL WINAPI DllMain(
Dll_FreeTlsData(); Dll_FreeTlsData();
} else if (dwReason == DLL_PROCESS_ATTACH) { } else if (dwReason == DLL_PROCESS_ATTACH) {
// $Workaround$ - 3rd party fix
#ifdef _WIN64 #ifdef _WIN64
Dll_DigitalGuardian = GetModuleHandleA("DgApi64.dll"); Dll_DigitalGuardian = GetModuleHandleA("DgApi64.dll");
#else #else
Dll_DigitalGuardian = GetModuleHandleA("DgApi.dll"); Dll_DigitalGuardian = GetModuleHandleA("DgApi.dll");
#endif #endif
if (GetProcAddress(GetModuleHandleA("ntdll.dll"), "LdrFastFailInLoaderCallout")) {
Dll_OsBuild = GET_PEB_IMAGE_BUILD;
//if (GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueueApcThreadEx2")) // Somewhere around windows insider build 19603
// Dll_Windows = 11;
//else if (GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtGetCurrentProcessorNumberEx"))
//else
if (GetProcAddress(GetModuleHandleA("ntdll.dll"), "LdrFastFailInLoaderCallout"))
Dll_Windows = 10; Dll_Windows = 10;
} else //if (GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtAlpcConnectPortEx"))
else {
Dll_Windows = 8; Dll_Windows = 8;
} // else
// Dll_Windows = 7;
ProcessIdToSessionId(GetCurrentProcessId(), &Dll_SessionId);
Dll_InitGeneric(hInstance); Dll_InitGeneric(hInstance);
SbieDll_HookInit(); SbieDll_HookInit();
@ -233,7 +260,11 @@ _FX void Dll_InitInjected(void)
Trace_Init(); Trace_Init();
OutputDebugString(L"SbieDll injected..."); OutputDebugString(L"SbieDll injected...\n");
for (int i = 0; i < 16; i++) {
if (SbieApi_data->DebugData[i] != 0)
DbgPrint("DebugData[%d]: %p\n", i, (UINT_PTR)SbieApi_data->DebugData[i]);
}
} }
// //
@ -379,8 +410,14 @@ _FX void Dll_InitInjected(void)
ok = Dll_InitPathList(); ok = Dll_InitPathList();
if (ok) #ifndef _WIN64
if (ok) {
if (Dll_Windows < 10)
Dll_FixWow64Syscall(); Dll_FixWow64Syscall();
else
Dll_Wow64DisableTurboThunks();
}
#endif
if (ok) if (ok)
ok = Handle_Init(); ok = Handle_Init();
@ -735,25 +772,20 @@ _FX ULONG_PTR Dll_Ordinal1(
ULONG_PTR arg1, ULONG_PTR arg2, ULONG_PTR arg3, ULONG_PTR arg1, ULONG_PTR arg2, ULONG_PTR arg3,
ULONG_PTR arg4, ULONG_PTR arg5) ULONG_PTR arg4, ULONG_PTR arg5)
{ {
struct _INJECT_DATA { // keep in sync with core/low/inject.c
ULONG64 sbielow_data; // syscall_data_len & extra_data_offset;
ULONG64 RtlFindActCtx_SavedArg1; // LdrLoadDll
ULONG64 LdrGetProcAddr;
ULONG64 NtRaiseHardError;
ULONG64 RtlFindActCtx;
ULONG RtlFindActCtx_Protect;
UCHAR Reserved[188]; // the rest of _INJECT_DATA
} *inject; // total size 232
typedef ULONG_PTR (*P_RtlFindActivationContextSectionString)( typedef ULONG_PTR (*P_RtlFindActivationContextSectionString)(
ULONG_PTR arg1, ULONG_PTR arg2, ULONG_PTR arg3, ULONG_PTR arg1, ULONG_PTR arg2, ULONG_PTR arg3,
ULONG_PTR arg4, ULONG_PTR arg5); ULONG_PTR arg4, ULONG_PTR arg5);
P_RtlFindActivationContextSectionString RtlFindActCtx; P_RtlFindActivationContextSectionString RtlFindActCtx;
#if defined(_M_ARM64) || defined(_M_ARM64EC)
//
// on ARM64 we hook LdrLoadDll instead, using the prototype for
// RtlFindActCtx is fine though as arguments 1-8 are passed in registers
// so if we set x4 or not does not mater in the least
//
#endif
INJECT_DATA *inject;
SBIELOW_DATA *data; SBIELOW_DATA *data;
ULONG dummy_prot; ULONG dummy_prot;
BOOLEAN bHostInject = FALSE; BOOLEAN bHostInject = FALSE;
@ -772,17 +804,26 @@ _FX ULONG_PTR Dll_Ordinal1(
data = (SBIELOW_DATA *)inject->sbielow_data; data = (SBIELOW_DATA *)inject->sbielow_data;
SbieApi_data = data; SbieApi_data = data;
#ifdef _M_ARM64EC
VirtualProtect((void *)(ULONG_PTR)data, sizeof(SBIELOW_DATA), SbieApi_SyscallPtr = (ULONG*)((ULONG64)data->syscall_data + sizeof(ULONG) + sizeof(ULONG) + (NATIVE_FUNCTION_SIZE * NATIVE_FUNCTION_COUNT));
PAGE_EXECUTE_READ, &dummy_prot); #endif
bHostInject = data->flags.bHostInject == 1;
// //
// the SbieLow data area includes values that are useful to us // the SbieLow data area includes values that are useful to us
// so we copy them into dedicated variables if we are going to use them more often
// //
bHostInject = data->flags.bHostInject == 1;
#ifndef _WIN64
Dll_IsWow64 = data->flags.is_wow64 == 1; Dll_IsWow64 = data->flags.is_wow64 == 1;
#endif
#ifdef _M_X64
Dll_IsArm64ec = data->flags.is_arm64ec == 1;
#endif
#ifndef _M_ARM64
Dll_IsXtAjit = data->flags.is_xtajit == 1;
#endif
SbieApi_DeviceHandle = (HANDLE)data->api_device_handle; SbieApi_DeviceHandle = (HANDLE)data->api_device_handle;
@ -800,10 +841,13 @@ _FX ULONG_PTR Dll_Ordinal1(
inject->RtlFindActCtx; inject->RtlFindActCtx;
// //
// free the syscall/inject data area which is no longer needed // make sbielow_data read only, as it contsins required
// nt dll function copies it must stay executive
// //
VirtualFree(inject, 0, MEM_RELEASE); VirtualProtect((void *)data, sizeof(SBIELOW_DATA),
PAGE_EXECUTE_READ, &dummy_prot);
if (!bHostInject) if (!bHostInject)
{ {
@ -816,7 +860,7 @@ _FX ULONG_PTR Dll_Ordinal1(
Dll_InitInjected(); // install required hooks Dll_InitInjected(); // install required hooks
// //
// notify RPCSS that a new process was created in the current sandbox // notify RPCSS that a new proces was created in the current sandbox
// //
if (Dll_ImageType != DLL_IMAGE_SANDBOXIE_RPCSS) { if (Dll_ImageType != DLL_IMAGE_SANDBOXIE_RPCSS) {
@ -871,6 +915,16 @@ _FX ULONG_PTR Dll_Ordinal1(
Ldr_Inject_Init(bHostInject); Ldr_Inject_Init(bHostInject);
} }
//
// free the syscall/inject data area which is no longer needed
//
#ifdef _M_ARM64EC
SbieApi_SyscallPtr = NULL;
#endif
VirtualFree(inject, 0, MEM_RELEASE);
// //
// conclude the detour by passing control back to the original // conclude the detour by passing control back to the original
// RtlFindActivationContextSectionString. the detour code used // RtlFindActivationContextSectionString. the detour code used
@ -880,3 +934,69 @@ _FX ULONG_PTR Dll_Ordinal1(
return RtlFindActCtx(arg1, arg2, arg3, arg4, arg5); return RtlFindActCtx(arg1, arg2, arg3, arg4, arg5);
} }
//---------------------------------------------------------------------------
// Dll_Wow64DisableTurboThunks
//---------------------------------------------------------------------------
#ifndef _WIN64
typedef enum _WOW64_FUNCTION {
Wow64Function64Nop,
Wow64FunctionQueryProcessDebugInfo,
Wow64FunctionTurboThunkControl,
Wow64FunctionCfgDispatchControl,
Wow64FunctionOptimizeChpeImportThunks,
} WOW64_FUNCTION;
typedef NTSTATUS(*P_NtWow64CallFunction64)(
_In_ WOW64_FUNCTION Wow64Function,
_In_ ULONG Flags,
_In_ ULONG InputBufferLength,
_In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
_In_ ULONG OutputBufferLength,
_Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
_Out_opt_ PULONG ReturnLength
);
#define WOW64_TURBO_THUNK_DISABLE 0
#define WOW64_TURBO_THUNK_ENABLE 1 // STATUS_NOT_SUPPORTED :(
_FX void Dll_Wow64DisableTurboThunks(void)
{
//
// Dll_FixWow64Syscall (dllhooks.c):
// the Wow64 thunking layer for syscalls in ntdll32 has several thunks:
// thunk 0 calls the corresponding NtXxx export in the 64-bit ntdll.
// other thunks issue the syscall instruction directly and are probably
// intended as an optimization. we want all 32-bit syscalls to go
// through our SbieLow syscall interface, so we need to always force
// use of thunk 0 rather than the optimization thunks.
//
// Windows 10:
// Starting with windows 10 we can use Wow64FunctionTurboThunkControl
// to disable this "optimization" properly.
//
// Windows on ARM64:
// On ARM64 there is no wow64cpu.dll and Wow64FunctionTurboThunkControl
// returns STATUS_NOT_IMPLEMENTED, and no use of Turbo Thunks has been
// yet observed hence we can sattle on doing nothing for the time being.
//
if (Dll_IsXtAjit)
return;
NTSTATUS status = STATUS_NOT_SUPPORTED;
P_NtWow64CallFunction64 NtWow64CallFunction64 = (P_NtWow64CallFunction64)GetProcAddress(Dll_Ntdll, "NtWow64CallFunction64");
if (NtWow64CallFunction64) {
ULONG ThunkInput = WOW64_TURBO_THUNK_DISABLE;
status = NtWow64CallFunction64(Wow64FunctionTurboThunkControl, 0, sizeof(ThunkInput), &ThunkInput, 0, NULL, NULL);
}
if(!NT_SUCCESS(status))
SbieApi_Log(2205, L"Wow64FunctionTurboThunkControl %08X", status);
}
#endif

View File

@ -204,7 +204,7 @@ ALIGNED LPTOP_LEVEL_EXCEPTION_FILTER Dump_SetUnhandledExceptionFilter(
_FX int Dump_Init(void) _FX int Dump_Init(void)
{ {
HMODULE module = NULL; // fix-me HMODULE module = Dll_Kernel32;
if (Dump_DbgHelpMod != NULL) if (Dump_DbgHelpMod != NULL)
return 2; return 2;

View File

@ -2888,6 +2888,7 @@ ReparseLoop:
if (CreateOptions & FILE_DELETE_ON_CLOSE) { if (CreateOptions & FILE_DELETE_ON_CLOSE) {
// $Workaround$ - 3rd party fix
if (Dll_DigitalGuardian && (PATH_IS_WRITE(mp_flags) || PATH_IS_CLOSED(mp_flags))) if (Dll_DigitalGuardian && (PATH_IS_WRITE(mp_flags) || PATH_IS_CLOSED(mp_flags)))
{ {
HaveTrueFile = 'N'; HaveTrueFile = 'N';
@ -6779,6 +6780,7 @@ _FX NTSTATUS File_RenameFile(
{ {
status = STATUS_OBJECT_NAME_NOT_FOUND; status = STATUS_OBJECT_NAME_NOT_FOUND;
} }
// $Workaround$ - 3rd party fix
else if (!Dll_DigitalGuardian) else if (!Dll_DigitalGuardian)
{ {
status = __sys_NtQueryFullAttributesFile(&objattrs, &open_info); status = __sys_NtQueryFullAttributesFile(&objattrs, &open_info);
@ -7385,6 +7387,7 @@ _FX NTSTATUS StopTailCallOptimization(NTSTATUS status)
return status; return status;
} }
// $Workaround$ - 3rd party fix
_FX BOOLEAN DigitalGuardian_Init(HMODULE hModule) _FX BOOLEAN DigitalGuardian_Init(HMODULE hModule)
{ {
Dll_DigitalGuardian = hModule; Dll_DigitalGuardian = hModule;

View File

@ -127,7 +127,7 @@ static const WCHAR *File_DeviceMap_EnvVar = ENV_VAR_PFX L"DEVICE_MAP";
_FX BOOLEAN File_Init(void) _FX BOOLEAN File_Init(void)
{ {
HMODULE module = NULL; HMODULE module = Dll_Ntdll;
void *RtlGetFullPathName_UEx; void *RtlGetFullPathName_UEx;
void *GetTempPathW; void *GetTempPathW;
@ -1705,6 +1705,7 @@ _FX void File_GetSetDeviceMap(WCHAR *DeviceMap96)
NtCurrentProcess(), ProcessDeviceMap, NtCurrentProcess(), ProcessDeviceMap,
&info, sizeof(info.Set)); &info, sizeof(info.Set));
#ifndef _WIN64
if (status == STATUS_INFO_LENGTH_MISMATCH && Dll_IsWow64) { if (status == STATUS_INFO_LENGTH_MISMATCH && Dll_IsWow64) {
// //
@ -1726,6 +1727,7 @@ _FX void File_GetSetDeviceMap(WCHAR *DeviceMap96)
Dll_Free(rpl); Dll_Free(rpl);
} }
} }
#endif
NtClose(info.Set.DirectoryHandle); NtClose(info.Set.DirectoryHandle);

View File

@ -759,6 +759,15 @@ _FX BOOLEAN Gdi_InitZero(HMODULE module)
} else } else
Gdi_GdiDllInitialize = Gdi_GdiDllInitialize_XP; Gdi_GdiDllInitialize = Gdi_GdiDllInitialize_XP;
#ifdef _M_ARM64EC
//
// set module -1 to not try to find the FFS sequence
//
module = (HMODULE)- 1;
#endif
SBIEDLL_HOOK(Gdi_,GdiDllInitialize); SBIEDLL_HOOK(Gdi_,GdiDllInitialize);
return TRUE; return TRUE;

View File

@ -31,6 +31,12 @@
#include <stdio.h> #include <stdio.h>
#include <psapi.h> #include <psapi.h>
#if defined(_M_ARM64) || defined(_M_ARM64EC)
void* Hook_GetFFSTarget(void* ptr);
void* Hook_GetXipTarget(void* ptr, int mode);
void* SbieDll_Hook_arm(const char* SourceFuncName, void* SourceFunc, void* DetourFunc, HMODULE module);
#endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Variables // Variables
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -679,6 +685,7 @@ _FX BOOLEAN Gui_Init3(HMODULE module)
_FX void Gui_InitWindows7(void) _FX void Gui_InitWindows7(void)
{ {
// $HookHack$ - Custom, not automated, Hook
if (Dll_KernelBase) { if (Dll_KernelBase) {
// //
@ -726,6 +733,42 @@ _FX void Gui_InitWindows7(void)
// and try to replace the value at [x] // and try to replace the value at [x]
// //
#ifdef _M_ARM64EC
// 48 8B FF mov rdi,rdi
// 55 push rbp
// 48 8B EC mov rbp,rsp
// 5D pop rbp
// 90 nop
// E9 02 48 18 00 jmp #__GSHandlerCheck_SEH_AMD64+138h (07FFB572B8190h)
// B0FFFEF0 adrp xip0,#NtdllScrollBarWndProc_A (07FFD30995000h)
// 91018210 add xip0,xip0,#0x60
// D61F0200 br xip0
// F0001050 adrp xip0,NtUserPfn (07FFD30BA0000h)
// F9426A10 ldr xip0,[xip0,#0x4D0] // DefWindowProcA/DefWindowProcW
// D61F0200 br xip0
UCHAR* Target = Hook_GetFFSTarget(SourceFunc);
if(Target) {
Target = Hook_GetXipTarget(Target, 1); // adrp add br
Target = Hook_GetXipTarget(Target, 0); // adrp ldr br
*pSourceFunc = (ULONG_PTR)SbieDll_Hook_arm(
FuncName, Target, DetourFunc, NULL);
}
else // fall back to SbieDll_Hook
#else
#ifdef _M_ARM64
void* ptr = Hook_GetXipTarget(SourceFunc, 1); // adrp add br
ptr = Hook_GetXipTarget(ptr, 0); // adrp ldr br
if (ptr != SourceFunc)
*pSourceFunc = (ULONG_PTR)ptr;
#else
#ifdef _WIN64 #ifdef _WIN64
if (*(UCHAR *)SourceFunc == 0x48 && if (*(UCHAR *)SourceFunc == 0x48 &&
@ -753,8 +796,10 @@ _FX void Gui_InitWindows7(void)
*pSourceFunc = *(ULONG_PTR *)target; *pSourceFunc = *(ULONG_PTR *)target;
} }
#endif
#endif
*pSourceFunc = (ULONG_PTR)SbieDll_Hook( *pSourceFunc = (ULONG_PTR)SbieDll_Hook(
FuncName, (void *)(*pSourceFunc), DetourFunc, NULL); // fix-me: module FuncName, (void *)(*pSourceFunc), DetourFunc, NULL);
} }
} }
} }

View File

@ -267,7 +267,7 @@ _FX void Gui_Hook_CREATESTRUCT_Handler(void)
Gui_HighestAddress = (ULONG_PTR)sysinfo.lpMaximumApplicationAddress; Gui_HighestAddress = (ULONG_PTR)sysinfo.lpMaximumApplicationAddress;
#ifdef _WIN64 #ifdef _WIN64
peb = __readgsqword(0x60); peb = NtCurrentPeb();
KernelCallbackTable = *(ULONG_PTR *)(peb + 0x58); KernelCallbackTable = *(ULONG_PTR *)(peb + 0x58);
#else ! _WIN64 #else ! _WIN64
peb = __readfsdword(0x30); // PEB peb = __readfsdword(0x30); // PEB

View File

@ -79,7 +79,7 @@ static P_GetMessage __sys_GetMessageW = NULL;
_FX BOOLEAN Gui_InitConsole1(void) _FX BOOLEAN Gui_InitConsole1(void)
{ {
HMODULE module = NULL; // fix-me HMODULE module = Dll_Kernel32;
// NoSbieCons BEGIN // NoSbieCons BEGIN
if (Dll_CompartmentMode || SbieApi_QueryConfBool(NULL, L"NoSandboxieConsole", FALSE)) { if (Dll_CompartmentMode || SbieApi_QueryConfBool(NULL, L"NoSandboxieConsole", FALSE)) {

View File

@ -448,7 +448,12 @@ _FX DLGPROC Gui_MyDialogProc1(DLGPROC OrigDlgProc, UINT fAnsiFlag)
_FX LRESULT Gui_MyDialogProc2( _FX LRESULT Gui_MyDialogProc2(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ {
#if !defined(_M_ARM64) && !defined(_M_ARM64EC)
ULONG_PTR *StubData = Dll_JumpStubData(); ULONG_PTR *StubData = Dll_JumpStubData();
#else
ULONG_PTR *StubData = (ULONG_PTR *)lParam;
lParam = StubData[3];
#endif
LRESULT lResult; LRESULT lResult;
// //

View File

@ -266,6 +266,14 @@ _FX BOOLEAN Gui_HookQueryWindow(HMODULE module)
UCHAR *code; UCHAR *code;
BOOLEAN ok = FALSE; BOOLEAN ok = FALSE;
//Windows 10 RS1 now exports win32k functions in win32u.dll
code = Ldr_GetProcAddrNew(L"win32u.dll", L"NtUserQueryWindow","NtUserQueryWindow");
if (code) {
ok = TRUE;
}
#ifndef _M_ARM64
else {
code = Ldr_GetProcAddrNew(DllName_user32, _ProcName, _ProcNameA); code = Ldr_GetProcAddrNew(DllName_user32, _ProcName, _ProcNameA);
if (code) { if (code) {
@ -273,6 +281,7 @@ _FX BOOLEAN Gui_HookQueryWindow(HMODULE module)
// IsHungAppWindow should start with a call to NtUserQueryWindow // IsHungAppWindow should start with a call to NtUserQueryWindow
// //
// $HookHack$ - Custom, not automated, Hook
#ifdef _WIN64 #ifdef _WIN64
const ULONG _E8_Offset = 9; const ULONG _E8_Offset = 9;
#else ! _WIN64 #else ! _WIN64
@ -319,7 +328,8 @@ _FX BOOLEAN Gui_HookQueryWindow(HMODULE module)
ok = TRUE; ok = TRUE;
} }
} else { }
else {
//OutputDebugStringA("32 bit code\n"); //OutputDebugStringA("32 bit code\n");
// 32-bit prior to Windows 8 // 32-bit prior to Windows 8
if (code[0] == 0xB8 && code[5] == 0xBA if (code[0] == 0xB8 && code[5] == 0xBA
@ -341,14 +351,9 @@ _FX BOOLEAN Gui_HookQueryWindow(HMODULE module)
} }
} }
}
#endif
if (! ok) {
//Windows 10 RS1 now exports win32k functions in win32u.dll
code = Ldr_GetProcAddrNew(L"win32u.dll", L"NtUserQueryWindow","NtUserQueryWindow");
if (code) {
ok = TRUE;
}
}
if (!ok ){ if (!ok ){
SbieApi_Log(2303, L"%S (0)", _ProcName); SbieApi_Log(2303, L"%S (0)", _ProcName);
} }

View File

@ -132,7 +132,9 @@ static LRESULT Gui_SendMessageA_MdiCreate(HWND hWnd, LPARAM lParam);
static LRESULT Gui_DispatchMessage8(const MSG *lpmsg, ULONG IsAscii); static LRESULT Gui_DispatchMessage8(const MSG *lpmsg, ULONG IsAscii);
#ifndef _M_ARM64
static BOOLEAN Gui_Hook_DispatchMessage8(HMODULE module); static BOOLEAN Gui_Hook_DispatchMessage8(HMODULE module);
#endif
static P_DispatchMessage8 __sys_DispatchMessage8 = 0; static P_DispatchMessage8 __sys_DispatchMessage8 = 0;
@ -207,12 +209,24 @@ _FX BOOLEAN Gui_InitMsg(HMODULE module)
#else _WIN64 #else _WIN64
if (Dll_OsBuild < 8400) { if (Dll_OsBuild >= 14942) { // Windows 10 1703 preview #7
HMODULE hWin32u = GetModuleHandleA("win32u.dll");
__sys_DispatchMessage8 = (P_DispatchMessage8)GetProcAddress(hWin32u, "NtUserDispatchMessage");
SBIEDLL_HOOK_GUI(DispatchMessage8);
}
else if (Dll_OsBuild < 8400) {
SBIEDLL_HOOK_GUI(DispatchMessageA); SBIEDLL_HOOK_GUI(DispatchMessageA);
SBIEDLL_HOOK_GUI(DispatchMessageW); SBIEDLL_HOOK_GUI(DispatchMessageW);
}
} else if (! Gui_Hook_DispatchMessage8(module)) else
#ifndef _M_ARM64
if (!Gui_Hook_DispatchMessage8(module))
#endif
{
SbieApi_Log(2205, L"DispatchMessage8");
return FALSE; return FALSE;
}
#endif _WIN64 #endif _WIN64
@ -851,7 +865,8 @@ _FX LRESULT Gui_DispatchMessage8(const MSG *lpmsg, ULONG IsAscii)
// Gui_Hook_DispatchMessage8 // Gui_Hook_DispatchMessage8
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifndef _M_ARM64
// $HookHack$ - Custom, not automated, Hook
_FX BOOLEAN Gui_Hook_DispatchMessage8(HMODULE module) _FX BOOLEAN Gui_Hook_DispatchMessage8(HMODULE module)
{ {
// //
@ -870,16 +885,6 @@ _FX BOOLEAN Gui_Hook_DispatchMessage8(HMODULE module)
UCHAR *a = (UCHAR *)__sys_DispatchMessageA; UCHAR *a = (UCHAR *)__sys_DispatchMessageA;
UCHAR *w = (UCHAR *)__sys_DispatchMessageW; UCHAR *w = (UCHAR *)__sys_DispatchMessageW;
if (Dll_OsBuild >= 14942) {
HMODULE hWin32u;
hWin32u = GetModuleHandleA("win32u.dll");
__sys_DispatchMessage8 = (P_DispatchMessage8)GetProcAddress(hWin32u, "NtUserDispatchMessage");
SBIEDLL_HOOK_GUI(DispatchMessage8);
return TRUE;
}
if (*(ULONG *)a == 0x000001BA && *(USHORT *)w == 0xD233) { if (*(ULONG *)a == 0x000001BA && *(USHORT *)w == 0xD233) {
LONG a_offset; LONG a_offset;
@ -907,10 +912,9 @@ _FX BOOLEAN Gui_Hook_DispatchMessage8(HMODULE module)
} }
} }
SbieApi_Log(2205, L"DispatchMessage8");
return FALSE; return FALSE;
} }
#endif
#endif _WIN64 #endif _WIN64

View File

@ -72,7 +72,9 @@ static ULONG Gui_SetWindowLongA(HWND hWnd, int nIndex, ULONG dwNew);
static ULONG_PTR Gui_SetWindowLong8( static ULONG_PTR Gui_SetWindowLong8(
HWND hWnd, int nIndex, ULONG_PTR dwNew, ULONG IsAscii); HWND hWnd, int nIndex, ULONG_PTR dwNew, ULONG IsAscii);
#ifndef _M_ARM64
static BOOLEAN Gui_Hook_SetWindowLong8(HMODULE module); static BOOLEAN Gui_Hook_SetWindowLong8(HMODULE module);
#endif
static ULONG Gui_GetClassLongW(HWND hWnd, int nIndex); static ULONG Gui_GetClassLongW(HWND hWnd, int nIndex);
@ -93,7 +95,9 @@ static ULONG_PTR Gui_SetWindowLongPtrA(
static ULONG_PTR Gui_SetWindowLongPtr8( static ULONG_PTR Gui_SetWindowLongPtr8(
HWND hWnd, int nIndex, ULONG_PTR dwNew, ULONG IsAscii); HWND hWnd, int nIndex, ULONG_PTR dwNew, ULONG IsAscii);
#ifndef _M_ARM64
static BOOLEAN Gui_Hook_SetWindowLongPtr8(HMODULE module); static BOOLEAN Gui_Hook_SetWindowLongPtr8(HMODULE module);
#endif
static ULONG_PTR Gui_GetClassLongPtrW(HWND hWnd, int nIndex); static ULONG_PTR Gui_GetClassLongPtrW(HWND hWnd, int nIndex);
@ -175,13 +179,25 @@ _FX BOOLEAN Gui_InitProp(HMODULE module)
#ifdef _WIN64 #ifdef _WIN64
// new style hook on SetWindowLong on 64-bit Windows 8.1 and later if (Dll_OsBuild >= 14942) { // Windows 10 1703 preview #7
if (Dll_OsBuild < 9600) { HMODULE hWin32u = GetModuleHandleA("win32u.dll");
__sys_SetWindowLong8 = (P_SetWindowLong8) GetProcAddress(hWin32u, "NtUserSetWindowLong");
SBIEDLL_HOOK_GUI(SetWindowLong8);
}
else if (Dll_OsBuild < 9600) {
SBIEDLL_HOOK_GUI(SetWindowLongA); SBIEDLL_HOOK_GUI(SetWindowLongA);
SBIEDLL_HOOK_GUI(SetWindowLongW); SBIEDLL_HOOK_GUI(SetWindowLongW);
} else if (! Gui_Hook_SetWindowLong8(module)) }
else
#ifndef _M_ARM64
// new style hook on SetWindowLong on 64-bit Windows 8.1 and later
if (! Gui_Hook_SetWindowLong8(module))
#endif
{
SbieApi_Log(2205, L"SetWindowLong8");
return FALSE; return FALSE;
}
#else ! _WIN64 #else ! _WIN64
@ -199,13 +215,25 @@ _FX BOOLEAN Gui_InitProp(HMODULE module)
SBIEDLL_HOOK_GUI(GetWindowLongPtrA); SBIEDLL_HOOK_GUI(GetWindowLongPtrA);
SBIEDLL_HOOK_GUI(GetWindowLongPtrW); SBIEDLL_HOOK_GUI(GetWindowLongPtrW);
// special hook on SetWindowLongPtr on 64-bit Windows 8 and later if (Dll_OsBuild >= 14942) { // Windows 10 1703 preview #7
if (Dll_OsBuild < 8400) { HMODULE hWin32u = GetModuleHandleA("win32u.dll");
__sys_SetWindowLongPtr8 = (P_SetWindowLongPtr8) GetProcAddress(hWin32u,"NtUserSetWindowLongPtr");
SBIEDLL_HOOK_GUI(SetWindowLongPtr8);
}
else if (Dll_OsBuild < 8400) {
SBIEDLL_HOOK_GUI(SetWindowLongPtrA); SBIEDLL_HOOK_GUI(SetWindowLongPtrA);
SBIEDLL_HOOK_GUI(SetWindowLongPtrW); SBIEDLL_HOOK_GUI(SetWindowLongPtrW);
} else if (! Gui_Hook_SetWindowLongPtr8(module)) }
else
#ifndef _M_ARM64
// special hook on SetWindowLongPtr on 64-bit Windows 8 and later
if (! Gui_Hook_SetWindowLongPtr8(module))
#endif
{
SbieApi_Log(2205, L"SetWindowLongPtr8");
return FALSE; return FALSE;
}
SBIEDLL_HOOK_GUI(GetClassLongPtrA); SBIEDLL_HOOK_GUI(GetClassLongPtrA);
SBIEDLL_HOOK_GUI(GetClassLongPtrW); SBIEDLL_HOOK_GUI(GetClassLongPtrW);
@ -1052,7 +1080,8 @@ _FX ULONG_PTR Gui_SetWindowLong8(
// Gui_Hook_SetWindowLong8 // Gui_Hook_SetWindowLong8
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifndef _M_ARM64
// $HookHack$ - Custom, not automated, Hook
_FX BOOLEAN Gui_Hook_SetWindowLong8(HMODULE module) _FX BOOLEAN Gui_Hook_SetWindowLong8(HMODULE module)
{ {
// //
@ -1071,16 +1100,6 @@ _FX BOOLEAN Gui_Hook_SetWindowLong8(HMODULE module)
UCHAR *a = (UCHAR *)__sys_SetWindowLongA; UCHAR *a = (UCHAR *)__sys_SetWindowLongA;
UCHAR *w = (UCHAR *)__sys_SetWindowLongW; UCHAR *w = (UCHAR *)__sys_SetWindowLongW;
if (Dll_OsBuild >= 14942) {
HMODULE hWin32u;
hWin32u = GetModuleHandleA("win32u.dll");
__sys_SetWindowLong8 = (P_SetWindowLong8) GetProcAddress(hWin32u, "NtUserSetWindowLong");
SBIEDLL_HOOK_GUI(SetWindowLong8);
return TRUE;
}
if (*(ULONG *)a == 0x0001B941 && *(ULONG *)w == 0xE9C93345) { if (*(ULONG *)a == 0x0001B941 && *(ULONG *)w == 0xE9C93345) {
LONG a_offset = *(LONG *)(a + 7); LONG a_offset = *(LONG *)(a + 7);
@ -1108,10 +1127,9 @@ _FX BOOLEAN Gui_Hook_SetWindowLong8(HMODULE module)
return TRUE; return TRUE;
} }
SbieApi_Log(2205, L"SetWindowLong8");
return FALSE; return FALSE;
} }
#endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Gui_SetWindowLongPtr8 // Gui_SetWindowLongPtr8
@ -1152,7 +1170,8 @@ _FX ULONG_PTR Gui_SetWindowLongPtr8(
// Gui_Hook_SetWindowLongPtr8 // Gui_Hook_SetWindowLongPtr8
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifndef _M_ARM64
// $HookHack$ - Custom, not automated, Hook
_FX BOOLEAN Gui_Hook_SetWindowLongPtr8(HMODULE module) _FX BOOLEAN Gui_Hook_SetWindowLongPtr8(HMODULE module)
{ {
// //
@ -1171,14 +1190,6 @@ _FX BOOLEAN Gui_Hook_SetWindowLongPtr8(HMODULE module)
UCHAR *a = (UCHAR *)__sys_SetWindowLongPtrA; UCHAR *a = (UCHAR *)__sys_SetWindowLongPtrA;
UCHAR *w = (UCHAR *)__sys_SetWindowLongPtrW; UCHAR *w = (UCHAR *)__sys_SetWindowLongPtrW;
if (Dll_OsBuild >= 14942) {
HMODULE hWin32u;
hWin32u = GetModuleHandleA("win32u.dll");
__sys_SetWindowLongPtr8 = (P_SetWindowLongPtr8) GetProcAddress(hWin32u,"NtUserSetWindowLongPtr");
SBIEDLL_HOOK_GUI(SetWindowLongPtr8);
return TRUE;
}
if (*(ULONG *)a == 0x0001B941 && *(ULONG *)w == 0xE9C93345) { if (*(ULONG *)a == 0x0001B941 && *(ULONG *)w == 0xE9C93345) {
LONG a_offset = *(LONG *)(a + 7); LONG a_offset = *(LONG *)(a + 7);
@ -1195,10 +1206,9 @@ _FX BOOLEAN Gui_Hook_SetWindowLongPtr8(HMODULE module)
} }
} }
SbieApi_Log(2205, L"SetWindowLongPtr8");
return FALSE; return FALSE;
} }
#endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// End 64-bit Get/SetWindowLongPtr functions // End 64-bit Get/SetWindowLongPtr functions

View File

@ -326,7 +326,7 @@ BOOLEAN RpcRt_IsDynamicPortOpen(const WCHAR* wszPortName);
_FX BOOLEAN Ipc_Init(void) _FX BOOLEAN Ipc_Init(void)
{ {
HMODULE module = NULL; HMODULE module = Dll_Ntdll;
void *NtAlpcCreatePort; void *NtAlpcCreatePort;
void *NtAlpcConnectPort; void *NtAlpcConnectPort;
@ -3678,7 +3678,7 @@ finish:
} }
if (err) { if (err) {
SbieApi_Log(2205, L"ConnectPort (%02X/%08X)", err, status); SbieApi_Log(2205, L"ConnectPort (%02X/%08X) %S", err, status, TruePath);
if (status == STATUS_SUCCESS) if (status == STATUS_SUCCESS)
status = STATUS_INVALID_PARAMETER; status = STATUS_INVALID_PARAMETER;
} }

View File

@ -69,6 +69,9 @@ _FX BOOLEAN Ipc_StartServer(const WCHAR *TruePath, BOOLEAN Async)
BOOLEAN event_created = FALSE; BOOLEAN event_created = FALSE;
BOOLEAN bRet = TRUE; BOOLEAN bRet = TRUE;
if (SbieApi_QueryConfBool(NULL, L"NoSandboxieRpcSs", FALSE))
return FALSE;
// //
// in async mode, several args are passed through the TruePath pointer // in async mode, several args are passed through the TruePath pointer
// //

View File

@ -447,7 +447,9 @@ _FX ULONG IpHlp_CommonSend( ULONG_PTR IcmpHandle,
req->h.length = len; req->h.length = len;
req->h.msgid = MSGID_IPHLP_SEND_ECHO; req->h.msgid = MSGID_IPHLP_SEND_ECHO;
#ifndef _WIN64
req->iswow64 = Dll_IsWow64; req->iswow64 = Dll_IsWow64;
#endif
req->ip6 = ip6; req->ip6 = ip6;
req->ex2 = ex2; req->ex2 = ex2;

View File

@ -249,11 +249,11 @@ static NTSTATUS Key_NtRenameKey(
HANDLE KeyHandle, UNICODE_STRING *ReplacementName); HANDLE KeyHandle, UNICODE_STRING *ReplacementName);
//static NTSTATUS Key_NtSaveKey( static NTSTATUS Key_NtSaveKey(
// HANDLE KeyHandle, HANDLE FileHandle); HANDLE KeyHandle, HANDLE FileHandle);
//
//static NTSTATUS Key_NtSaveKeyEx( static NTSTATUS Key_NtSaveKeyEx(
// HANDLE KeyHandle, HANDLE FileHandle, ULONG Flags); HANDLE KeyHandle, HANDLE FileHandle, ULONG Flags);
static NTSTATUS Key_NtLoadKey( static NTSTATUS Key_NtLoadKey(
OBJECT_ATTRIBUTES *TargetObjectAttributes, OBJECT_ATTRIBUTES *TargetObjectAttributes,
@ -294,8 +294,8 @@ static P_NtNotifyChangeKey __sys_NtNotifyChangeKey = NULL;
static P_NtNotifyChangeMultipleKeys __sys_NtNotifyChangeMultipleKeys= NULL; static P_NtNotifyChangeMultipleKeys __sys_NtNotifyChangeMultipleKeys= NULL;
static P_NtRenameKey __sys_NtRenameKey = NULL; static P_NtRenameKey __sys_NtRenameKey = NULL;
//static P_NtSaveKey __sys_NtSaveKey = NULL; static P_NtSaveKey __sys_NtSaveKey = NULL;
//static P_NtSaveKeyEx __sys_NtSaveKeyEx = NULL; static P_NtSaveKeyEx __sys_NtSaveKeyEx = NULL;
static P_NtLoadKey __sys_NtLoadKey = NULL; static P_NtLoadKey __sys_NtLoadKey = NULL;
static P_NtLoadKey2 __sys_NtLoadKey2 = NULL; static P_NtLoadKey2 __sys_NtLoadKey2 = NULL;
static P_NtLoadKey3 __sys_NtLoadKey3 = NULL; static P_NtLoadKey3 __sys_NtLoadKey3 = NULL;
@ -377,7 +377,7 @@ BOOLEAN Key_Delete_v2 = FALSE;
_FX BOOLEAN Key_Init(void) _FX BOOLEAN Key_Init(void)
{ {
HMODULE module = NULL; HMODULE module = Dll_Ntdll;
InitializeCriticalSection(&Key_Handles_CritSec); InitializeCriticalSection(&Key_Handles_CritSec);
@ -429,12 +429,12 @@ _FX BOOLEAN Key_Init(void)
} }
//SBIEDLL_HOOK(Key_, NtSaveKey); SBIEDLL_HOOK(Key_, NtSaveKey);
//
//void* NtSaveKeyEx = GetProcAddress(Dll_Ntdll, "NtSaveKeyEx"); void* NtSaveKeyEx = GetProcAddress(Dll_Ntdll, "NtSaveKeyEx");
//if (NtSaveKeyEx) { if (NtSaveKeyEx) {
// SBIEDLL_HOOK(Key_,NtSaveKeyEx); SBIEDLL_HOOK(Key_,NtSaveKeyEx);
//} }
SBIEDLL_HOOK(Key_, NtLoadKey); SBIEDLL_HOOK(Key_, NtLoadKey);
@ -451,8 +451,6 @@ _FX BOOLEAN Key_Init(void)
SBIEDLL_HOOK(Key_,NtLoadKeyEx); SBIEDLL_HOOK(Key_,NtLoadKeyEx);
} }
Dll_OsBuild = GET_PEB_IMAGE_BUILD;
return TRUE; return TRUE;
} }
@ -832,11 +830,13 @@ check_sandbox_prefix:
_FX NTSTATUS Key_FixNameWow64( _FX NTSTATUS Key_FixNameWow64(
ACCESS_MASK DesiredAccess, WCHAR **OutTruePath, WCHAR **OutCopyPath) ACCESS_MASK DesiredAccess, WCHAR **OutTruePath, WCHAR **OutCopyPath)
{ {
#ifndef _WIN64
NTSTATUS status; NTSTATUS status;
OBJECT_ATTRIBUTES objattrs; OBJECT_ATTRIBUTES objattrs;
UNICODE_STRING objname; UNICODE_STRING objname;
HANDLE handle; HANDLE handle;
WCHAR *TruePath, *BackslashPtr, *NewPtr; WCHAR *TruePath, *BackslashPtr, *NewPtr;
#endif
// //
// WOW64 Registry Redirector. in case that either of these is true: // WOW64 Registry Redirector. in case that either of these is true:
@ -848,8 +848,9 @@ _FX NTSTATUS Key_FixNameWow64(
// and then reconstruct the output TruePath and CopyPath // and then reconstruct the output TruePath and CopyPath
// //
#ifndef _WIN64
if (! Dll_IsWow64) { // caller is 64-bit process if (! Dll_IsWow64) { // caller is 64-bit process
#endif
if (! (DesiredAccess & KEY_WOW64_32KEY)) if (! (DesiredAccess & KEY_WOW64_32KEY))
return STATUS_SUCCESS; return STATUS_SUCCESS;
@ -860,6 +861,7 @@ _FX NTSTATUS Key_FixNameWow64(
// NoSysCallHooks END // NoSysCallHooks END
return Key_FixNameWow64_2(OutTruePath, OutCopyPath); return Key_FixNameWow64_2(OutTruePath, OutCopyPath);
#ifndef _WIN64
} }
if (DesiredAccess & KEY_WOW64_64KEY) if (DesiredAccess & KEY_WOW64_64KEY)
@ -955,6 +957,7 @@ _FX NTSTATUS Key_FixNameWow64(
} }
return status; return status;
#endif
} }
@ -1392,8 +1395,10 @@ _FX NTSTATUS Key_NtCreateKeyImpl(
if (!NT_SUCCESS(status)) if (!NT_SUCCESS(status))
__leave; __leave;
#ifndef _WIN64
if (Dll_IsWow64) if (Dll_IsWow64)
OriginalDesiredAccess = DesiredAccess; OriginalDesiredAccess = DesiredAccess;
#endif
DesiredAccess &= ~(KEY_WOW64_32KEY | KEY_WOW64_64KEY); DesiredAccess &= ~(KEY_WOW64_32KEY | KEY_WOW64_64KEY);
} }
@ -4539,12 +4544,13 @@ finish:
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
//_FX NTSTATUS Key_NtSaveKey( _FX NTSTATUS Key_NtSaveKey(
// HANDLE KeyHandle, HANDLE FileHandle) HANDLE KeyHandle, HANDLE FileHandle)
//{ {
// SbieApi_Log(2205, L"NtSaveKey"); // todo: copy all reg keys from host to box for the used KeyHandle such that all will be saved
// return STATUS_SUCCESS; SbieApi_Log(2205, L"NtSaveKey");
//} return __sys_NtSaveKey(KeyHandle, FileHandle);
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -4552,12 +4558,13 @@ finish:
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
//_FX NTSTATUS Key_NtSaveKeyEx( _FX NTSTATUS Key_NtSaveKeyEx(
// HANDLE KeyHandle, HANDLE FileHandle, ULONG Flags) HANDLE KeyHandle, HANDLE FileHandle, ULONG Flags)
//{ {
// SbieApi_Log(2205, L"NtSaveKeyEx"); // todo: copy all reg keys from host to box for the used KeyHandle such that all will be saved
// return STATUS_SUCCESS; SbieApi_Log(2205, L"NtSaveKeyEx");
//} return __sys_NtSaveKeyEx(KeyHandle, FileHandle, Flags);
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -4577,8 +4584,12 @@ _FX WCHAR* Key_NtLoadKey_GetPath(OBJECT_ATTRIBUTES* SourceObjectAttributes)
IO_STATUS_BLOCK IoStatusBlock; IO_STATUS_BLOCK IoStatusBlock;
//
// open the file for write to migrate it into the box
//
status = NtCreateFile( status = NtCreateFile(
&FileHandle, FILE_READ_ATTRIBUTES | SYNCHRONIZE, &FileHandle, FILE_GENERIC_WRITE | SYNCHRONIZE,
SourceObjectAttributes, SourceObjectAttributes,
&IoStatusBlock, NULL, 0, FILE_SHARE_VALID_FLAGS, &IoStatusBlock, NULL, 0, FILE_SHARE_VALID_FLAGS,
FILE_OPEN, FILE_OPEN,

View File

@ -109,8 +109,10 @@ _FX void Key_DeleteValueFromCLSID(
HANDLE handle; HANDLE handle;
DesiredAccess = KEY_SET_VALUE; DesiredAccess = KEY_SET_VALUE;
#ifndef _WIN64
if (Dll_IsWow64) if (Dll_IsWow64)
DesiredAccess |= KEY_WOW64_64KEY; DesiredAccess |= KEY_WOW64_64KEY;
#endif
path = Dll_AllocTemp(128 * sizeof(WCHAR)); path = Dll_AllocTemp(128 * sizeof(WCHAR));

View File

@ -226,12 +226,16 @@ static DLL Ldr_Dlls[] = {
{ L"osppc.dll", "osppc.dll", Scm_OsppcDll, 0}, // ensure osppsvc is running { L"osppc.dll", "osppc.dll", Scm_OsppcDll, 0}, // ensure osppsvc is running
{ L"mso.dll", "mso.dll", File_MsoDll, 0}, // hack for File_IsRecoverable { L"mso.dll", "mso.dll", File_MsoDll, 0}, // hack for File_IsRecoverable
{ L"agcore.dll", "agcore.dll", Custom_SilverlightAgCore, 0}, // msft silverlight - deprecated { L"agcore.dll", "agcore.dll", Custom_SilverlightAgCore, 0}, // msft silverlight - deprecated
// $Workaround$ - 3rd party fix
#ifndef _M_ARM64
// Non Microsoft DLLs: // Non Microsoft DLLs:
{ L"acscmonitor.dll", "acscmonitor.dll", Acscmonitor_Init, 0}, { L"acscmonitor.dll", "acscmonitor.dll", Acscmonitor_Init, 0},
{ L"IDMIECC.dll", "IDMIECC.dll", Custom_InternetDownloadManager, 0}, { L"IDMIECC.dll", "IDMIECC.dll", Custom_InternetDownloadManager, 0},
{ L"snxhk.dll", "snxhk.dll", Custom_Avast_SnxHk, 0}, { L"snxhk.dll", "snxhk.dll", Custom_Avast_SnxHk, 0},
{ L"snxhk64.dll", "snxhk64.dll", Custom_Avast_SnxHk, 0}, { L"snxhk64.dll", "snxhk64.dll", Custom_Avast_SnxHk, 0},
{ L"sysfer.dll", "sysfer.dll", Custom_SYSFER_DLL, 0}, { L"sysfer.dll", "sysfer.dll", Custom_SYSFER_DLL, 0},
#endif
#ifdef _WIN64 #ifdef _WIN64
{ L"dgapi64.dll", "dgapi64.dll", DigitalGuardian_Init, 0}, { L"dgapi64.dll", "dgapi64.dll", DigitalGuardian_Init, 0},
#else #else
@ -276,19 +280,22 @@ void CALLBACK Ldr_LdrDllNotification(ULONG NotificationReason, PLDR_DLL_NOTIFICA
{ {
ULONG_PTR LdrCookie = 0; ULONG_PTR LdrCookie = 0;
NTSTATUS status = 0; NTSTATUS status = 0;
WCHAR text[4096];
if (NotificationReason == 1) { if (NotificationReason == 1) {
status = __sys_LdrLockLoaderLock(0, NULL, &LdrCookie); status = __sys_LdrLockLoaderLock(0, NULL, &LdrCookie);
Ldr_MyDllCallbackNew(NotificationData->Loaded.BaseDllName->Buffer, (HMODULE)NotificationData->Loaded.DllBase, TRUE); Ldr_MyDllCallbackNew(NotificationData->Loaded.BaseDllName->Buffer, (HMODULE)NotificationData->Loaded.DllBase, TRUE);
__sys_LdrUnlockLoaderLock(0, LdrCookie); __sys_LdrUnlockLoaderLock(0, LdrCookie);
return; Sbie_snwprintf(text, ARRAYSIZE(text), L"%s (loaded)", NotificationData->Loaded.BaseDllName->Buffer);
} }
else if (NotificationReason == 2) { else if (NotificationReason == 2) {
Ldr_MyDllCallbackNew(NotificationData->Unloaded.BaseDllName->Buffer, (HMODULE)NotificationData->Loaded.DllBase, FALSE); Ldr_MyDllCallbackNew(NotificationData->Unloaded.BaseDllName->Buffer, (HMODULE)NotificationData->Loaded.DllBase, FALSE);
Sbie_snwprintf(text, ARRAYSIZE(text), L"%s (unloaded)", NotificationData->Loaded.BaseDllName->Buffer);
} }
return;
SbieApi_MonitorPutMsg(MONITOR_IMAGE, text);
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -382,7 +389,7 @@ BOOL LdrCheckImmersive()
_FX BOOLEAN Ldr_Init() _FX BOOLEAN Ldr_Init()
{ {
HMODULE module = NULL; HMODULE module = Dll_Ntdll;
UCHAR *ReadImageFileExecOptions; UCHAR *ReadImageFileExecOptions;

View File

@ -30,7 +30,15 @@
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifdef _WIN64 #ifdef _M_ARM64
#define LDR_INJECT_SETTING_NAME L"InjectDllARM64"
#define LDR_HOST_INJECT_SETTING_NAME L"HostInjectDllARM64"
#define LDR_INJECT_NUM_SAVE_BYTES 16
#elif _WIN64
#define LDR_INJECT_SETTING_NAME L"InjectDll64" #define LDR_INJECT_SETTING_NAME L"InjectDll64"
@ -38,7 +46,6 @@
#define LDR_INJECT_NUM_SAVE_BYTES 12 #define LDR_INJECT_NUM_SAVE_BYTES 12
#else ! _WIN64 #else ! _WIN64
@ -747,7 +754,16 @@ _FX void Ldr_Inject_Init(BOOLEAN bHostInject)
if (VirtualProtect(entrypoint, LDR_INJECT_NUM_SAVE_BYTES, if (VirtualProtect(entrypoint, LDR_INJECT_NUM_SAVE_BYTES,
PAGE_EXECUTE_READWRITE, &Ldr_Inject_OldProtect)) { PAGE_EXECUTE_READWRITE, &Ldr_Inject_OldProtect)) {
#ifdef _WIN64 #ifdef _M_ARM64
ULONG* aCode = (ULONG*)entrypoint;
*aCode++ = 0x58000048; // ldr x8, 8
*aCode++ = 0xD63F0100; // blr x8
*(ULONG_PTR*)aCode = (ULONG_PTR)Ldr_Inject_Entry64;
NtFlushInstructionCache(GetCurrentProcess(), entrypoint, LDR_INJECT_NUM_SAVE_BYTES);
#elif _WIN64
entrypoint[0] = 0x48; // mov rax, Ldr_Inject_Entry64 entrypoint[0] = 0x48; // mov rax, Ldr_Inject_Entry64
entrypoint[1] = 0xB8; entrypoint[1] = 0xB8;
@ -781,7 +797,11 @@ _FX void Ldr_Inject_Entry(ULONG_PTR *pRetAddr)
// restore correct code sequence at the entrypoint // restore correct code sequence at the entrypoint
// //
#ifdef _M_ARM64
entrypoint = ((UCHAR *)*pRetAddr) - (LDR_INJECT_NUM_SAVE_BYTES - sizeof(ULONG_PTR)); // after blr comes the 64bit address
#else
entrypoint = ((UCHAR *)*pRetAddr) - LDR_INJECT_NUM_SAVE_BYTES; entrypoint = ((UCHAR *)*pRetAddr) - LDR_INJECT_NUM_SAVE_BYTES;
#endif
*pRetAddr = (ULONG_PTR)entrypoint; *pRetAddr = (ULONG_PTR)entrypoint;
// If entrypoint hook is different, need to adjust offset. Copying the original byets won't have the correct offset. // If entrypoint hook is different, need to adjust offset. Copying the original byets won't have the correct offset.
@ -805,6 +825,10 @@ _FX void Ldr_Inject_Entry(ULONG_PTR *pRetAddr)
VirtualProtect(entrypoint, LDR_INJECT_NUM_SAVE_BYTES, VirtualProtect(entrypoint, LDR_INJECT_NUM_SAVE_BYTES,
Ldr_Inject_OldProtect, &dummy_prot); Ldr_Inject_OldProtect, &dummy_prot);
#ifdef _M_ARM64
NtFlushInstructionCache(GetCurrentProcess(), entrypoint, LDR_INJECT_NUM_SAVE_BYTES);
#endif
if (!g_bHostInject) if (!g_bHostInject)
{ {

View File

@ -53,7 +53,9 @@
#ifdef BUILD_UTILITY_PASS2 #ifdef BUILD_UTILITY_PASS2
#if MY_WIN64_FLAG #if MY_ARM64_FLAG
LOWLEVEL RCDATA "../low/obj/ARM64/LowLevel.dll"
#elif MY_WIN64_FLAG
LOWLEVEL RCDATA "../low/obj/amd64/LowLevel.dll" LOWLEVEL RCDATA "../low/obj/amd64/LowLevel.dll"
#else #else
LOWLEVEL RCDATA "../low/obj/i386/LowLevel.dll" LOWLEVEL RCDATA "../low/obj/i386/LowLevel.dll"

File diff suppressed because it is too large Load Diff

View File

@ -63,7 +63,7 @@ static P_NtQueryObject __sys_NtQueryObject = NULL;
_FX BOOLEAN Obj_Init(void) _FX BOOLEAN Obj_Init(void)
{ {
HMODULE module = NULL; HMODULE module = Dll_Ntdll;
#if 0 #if 0
__sys_NtQueryObject = NtQueryObject; __sys_NtQueryObject = NtQueryObject;
@ -71,6 +71,7 @@ _FX BOOLEAN Obj_Init(void)
SBIEDLL_HOOK(Obj_,NtQueryObject); SBIEDLL_HOOK(Obj_,NtQueryObject);
SBIEDLL_HOOK(Obj_,NtQueryVirtualMemory); SBIEDLL_HOOK(Obj_,NtQueryVirtualMemory);
#endif #endif
return TRUE; return TRUE;
} }

View File

@ -86,6 +86,15 @@ static _FX void Proc_FixBatchCommandLine(
static void Proc_StoreImagePath(THREAD_DATA *TlsData, HANDLE FileHandle); static void Proc_StoreImagePath(THREAD_DATA *TlsData, HANDLE FileHandle);
static NTSTATUS Proc_LdrQueryImageFileExecutionOptionsEx(
PUNICODE_STRING SubKey,
PCWSTR ValueName,
ULONG Type,
PVOID Buffer,
ULONG BufferSize,
PULONG ReturnedLength,
BOOLEAN Wow64);
static NTSTATUS Proc_RtlCreateProcessParametersEx( static NTSTATUS Proc_RtlCreateProcessParametersEx(
void *ProcessParameters, void *ProcessParameters,
UNICODE_STRING *ImagePathName, UNICODE_STRING *ImagePathName,
@ -133,9 +142,11 @@ static BOOLEAN Proc_IsSoftwareUpdateW(const WCHAR *path);
//static BOOLEAN Proc_IsProcessRunning(const WCHAR *ImageToFind); //static BOOLEAN Proc_IsProcessRunning(const WCHAR *ImageToFind);
#ifndef _WIN64
static BOOLEAN Proc_IsSplWow64( static BOOLEAN Proc_IsSplWow64(
const WCHAR *lpApplicationName, const WCHAR *lpCommandLine, const WCHAR *lpApplicationName, const WCHAR *lpCommandLine,
LPPROCESS_INFORMATION lpProcessInformation); LPPROCESS_INFORMATION lpProcessInformation);
#endif
static HRESULT Proc_RunSetupCommandW( static HRESULT Proc_RunSetupCommandW(
HWND hWnd, HWND hWnd,
@ -196,6 +207,15 @@ typedef BOOL (*P_CreateProcessWithTokenW)(
void *lpStartupInfo, void *lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation); LPPROCESS_INFORMATION lpProcessInformation);
typedef NTSTATUS (*P_LdrQueryImageFileExecutionOptionsEx)(
PUNICODE_STRING SubKey,
PCWSTR ValueName,
ULONG Type,
PVOID Buffer,
ULONG BufferSize,
PULONG ReturnedLength,
BOOLEAN Wow64);
typedef NTSTATUS (*P_RtlCreateProcessParametersEx)( typedef NTSTATUS (*P_RtlCreateProcessParametersEx)(
void *ProcessParameters, void *ProcessParameters,
UNICODE_STRING *ImagePathName, UNICODE_STRING *ImagePathName,
@ -279,6 +299,9 @@ static P_CreateProcessInternal __sys_CreateProcessInternalW = NULL;
static P_CreateProcessWithTokenW __sys_CreateProcessWithTokenW = NULL; static P_CreateProcessWithTokenW __sys_CreateProcessWithTokenW = NULL;
static P_LdrQueryImageFileExecutionOptionsEx
__sys_LdrQueryImageFileExecutionOptionsEx = NULL;
static P_RtlCreateProcessParametersEx static P_RtlCreateProcessParametersEx
__sys_RtlCreateProcessParametersEx = NULL; __sys_RtlCreateProcessParametersEx = NULL;
@ -317,6 +340,7 @@ static BOOL g_boolWasWerFaultLastProcess = FALSE;
BOOL Dll_ElectronWorkaround = FALSE; BOOL Dll_ElectronWorkaround = FALSE;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Proc_Init // Proc_Init
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -324,7 +348,7 @@ BOOL Dll_ElectronWorkaround = FALSE;
_FX BOOLEAN Proc_Init(void) _FX BOOLEAN Proc_Init(void)
{ {
HMODULE module = NULL; HMODULE module = Dll_Ntdll;
P_CreateProcessInternal CreateProcessInternalW; P_CreateProcessInternal CreateProcessInternalW;
ANSI_STRING ansi; ANSI_STRING ansi;
@ -349,6 +373,9 @@ _FX BOOLEAN Proc_Init(void)
SBIEDLL_HOOK(Proc_,NtQueryInformationProcess); SBIEDLL_HOOK(Proc_,NtQueryInformationProcess);
if (Dll_OsBuild >= 14942) // Windows 10
SbieDll_DisableCHPE();
// //
// RtlCreateProcessParameters // RtlCreateProcessParameters
// //
@ -366,6 +393,12 @@ _FX BOOLEAN Proc_Init(void)
SBIEDLL_HOOK(Proc_,NtCreateUserProcess); SBIEDLL_HOOK(Proc_,NtCreateUserProcess);
} }
//
// Kernel32 stuff
//
module = Dll_KernelBase;
// //
// UpdateProcThreadAttribute // UpdateProcThreadAttribute
// //
@ -446,6 +479,24 @@ _FX BOOLEAN Proc_Init(void)
} }
//---------------------------------------------------------------------------
// SbieDll_DisableCHPE
//---------------------------------------------------------------------------
_FX BOOLEAN SbieDll_DisableCHPE(void)
{
HMODULE module = Dll_Ntdll;
P_LdrQueryImageFileExecutionOptionsEx LdrQueryImageFileExecutionOptionsEx =
(P_LdrQueryImageFileExecutionOptionsEx) GetProcAddress(
Dll_Ntdll, "LdrQueryImageFileExecutionOptionsEx");
SBIEDLL_HOOK(Proc_, LdrQueryImageFileExecutionOptionsEx);
return TRUE;
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Proc_Init_AdvApi // Proc_Init_AdvApi
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -1451,11 +1502,13 @@ _FX BOOL Proc_AlternateCreateProcess(
return TRUE; // exit CreateProcessInternal return TRUE; // exit CreateProcessInternal
} }
#ifndef _WIN64
if (Proc_IsSplWow64(lpApplicationName, lpCommandLine, if (Proc_IsSplWow64(lpApplicationName, lpCommandLine,
lpProcessInformation)) { lpProcessInformation)) {
return FALSE; // continue with CreateProcessInternal return FALSE; // continue with CreateProcessInternal
} }
#endif
if (Proc_IsForcedElevation(lpCommandLine, if (Proc_IsForcedElevation(lpCommandLine,
lpCurrentDirectory, lpCurrentDirectory,
@ -1886,6 +1939,38 @@ _FX NTSTATUS Proc_SectionCallback(HANDLE FileHandle)
} }
//---------------------------------------------------------------------------
// Proc_LdrQueryImageFileExecutionOptionsEx
//---------------------------------------------------------------------------
_FX NTSTATUS Proc_LdrQueryImageFileExecutionOptionsEx(
PUNICODE_STRING SubKey,
PCWSTR ValueName,
ULONG Type,
PVOID Buffer,
ULONG BufferSize,
PULONG ReturnedLength,
BOOLEAN Wow64)
{
//
// Sandboxie on ARM64 requires x86 applications NOT to use the CHPE binaries.
//
// This hook causes CreateProcessInternalW to set PsAttributeChpe = 0 which
// makes the kernel load the regular non hybrid version of ntdll into the new process.
//
// See comment in HookImageOptionsEx core/low/init.c for more details.
//
if (_wcsicmp(ValueName, L"LoadCHPEBinaries") == 0) {
*(ULONG*)Buffer = 0;
return STATUS_SUCCESS;
}
return __sys_LdrQueryImageFileExecutionOptionsEx(SubKey, ValueName, Type, Buffer, BufferSize, ReturnedLength, Wow64);
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Proc_RtlCreateProcessParametersEx // Proc_RtlCreateProcessParametersEx
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -2523,7 +2608,7 @@ _FX BOOLEAN Proc_IsSoftwareUpdateW(const WCHAR *path)
// Proc_IsSplWow64 // Proc_IsSplWow64
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifndef _WIN64
_FX BOOLEAN Proc_IsSplWow64( _FX BOOLEAN Proc_IsSplWow64(
const WCHAR *lpApplicationName, const WCHAR *lpCommandLine, const WCHAR *lpApplicationName, const WCHAR *lpCommandLine,
LPPROCESS_INFORMATION lpProcessInformation) LPPROCESS_INFORMATION lpProcessInformation)
@ -2551,7 +2636,7 @@ _FX BOOLEAN Proc_IsSplWow64(
return TRUE; return TRUE;
} }
#endif
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Proc_Init_AdvPack // Proc_Init_AdvPack
@ -2709,9 +2794,9 @@ _FX RTL_USER_PROCESS_PARAMETERS *Proc_GetRtlUserProcessParameters(void)
RTL_USER_PROCESS_PARAMETERS *ProcessParms = RTL_USER_PROCESS_PARAMETERS *ProcessParms =
(RTL_USER_PROCESS_PARAMETERS *) (RTL_USER_PROCESS_PARAMETERS *)
#ifdef _WIN64 #ifdef _WIN64
(*(ULONG_PTR *)(__readgsqword(0x60) + 0x20)); (*(ULONG_PTR *)(NtCurrentPeb() + 0x20));
#else #else
(*(ULONG_PTR *)(__readfsdword(0x30) + 0x10)); (*(ULONG_PTR *)(NtCurrentPeb() + 0x10));
#endif _WIN64 #endif _WIN64
return ProcessParms; return ProcessParms;
} }

View File

@ -1020,12 +1020,35 @@ void RpcRt_NdrClientCallX(const WCHAR* Function, void* ReturnAddress, PMIDL_STUB
SbieApi_MonitorPutMsg(MONITOR_RPC | MONITOR_TRACE, text); SbieApi_MonitorPutMsg(MONITOR_RPC | MONITOR_TRACE, text);
} }
#if defined(_M_ARM64) || defined(_M_ARM64EC)
#ifdef _WIN64 ULONG_PTR RpcRt_NdrClientCall2ARM64(
PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack, void* ReturnAddress) {
RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor, pFormat, pStack);
return FALSE; // return TRUE to not call the trampoline upon return
}
#if !defined(_M_ARM64EC)
ULONG_PTR RpcRt_NdrClientCall3ARM64(
MIDL_STUBLESS_PROXY_INFO* pProxyInfo, ULONG nProcNum, void* pReturnValue, void** pStack, void* ReturnAddress) {
#else
ULONG_PTR RpcRt_NdrClientCall3ARM64(
MIDL_STUBLESS_PROXY_INFO* pProxyInfo, ULONG nProcNum, void* pReturnValue, void** pStack) {
void* ReturnAddress = *(pStack - 4);
#endif
RpcRt_NdrClientCallX(L"NdrClientCall3", ReturnAddress, pProxyInfo->pStubDesc, pProxyInfo->ProcFormatString, pStack);
return FALSE; // return TRUE to not call the trampoline upon return
}
#elif _WIN64
ULONG_PTR RpcRt_NdrClientCall2_x64( ULONG_PTR RpcRt_NdrClientCall2_x64(
PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack) PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack) {
{
void* ReturnAddress = *(pStack - 3); void* ReturnAddress = *(pStack - 3);
RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor, pFormat, pStack); RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor, pFormat, pStack);
@ -1034,8 +1057,7 @@ ULONG_PTR RpcRt_NdrClientCall2_x64(
} }
ULONG_PTR RpcRt_NdrClientCall3_x64( ULONG_PTR RpcRt_NdrClientCall3_x64(
MIDL_STUBLESS_PROXY_INFO* pProxyInfo, ULONG nProcNum, void* pReturnValue, void** pStack) MIDL_STUBLESS_PROXY_INFO* pProxyInfo, ULONG nProcNum, void* pReturnValue, void** pStack) {
{
void* ReturnAddress = *(pStack - 4); void* ReturnAddress = *(pStack - 4);
RpcRt_NdrClientCallX(L"NdrClientCall3", ReturnAddress, pProxyInfo->pStubDesc, pProxyInfo->ProcFormatString, pStack); RpcRt_NdrClientCallX(L"NdrClientCall3", ReturnAddress, pProxyInfo->pStubDesc, pProxyInfo->ProcFormatString, pStack);
@ -1047,8 +1069,8 @@ ULONG_PTR RpcRt_NdrClientCall3_x64(
ULONG_PTR __cdecl RpcRt_NdrClientCall_x86( ULONG_PTR __cdecl RpcRt_NdrClientCall_x86(
void* ReturnAddress, void* ReturnAddress,
PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack) PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack) {
{
RpcRt_NdrClientCallX(L"NdrClientCall", ReturnAddress, pStubDescriptor, pFormat, pStack); RpcRt_NdrClientCallX(L"NdrClientCall", ReturnAddress, pStubDescriptor, pFormat, pStack);
return FALSE; // return TRUE to not call the trampoline upon return return FALSE; // return TRUE to not call the trampoline upon return
@ -1056,8 +1078,8 @@ ULONG_PTR __cdecl RpcRt_NdrClientCall_x86(
ULONG_PTR __cdecl RpcRt_NdrClientCall2_x86( ULONG_PTR __cdecl RpcRt_NdrClientCall2_x86(
void* ReturnAddress, void* ReturnAddress,
PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack) PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack) {
{
RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor, pFormat, pStack); RpcRt_NdrClientCallX(L"NdrClientCall2", ReturnAddress, pStubDescriptor, pFormat, pStack);
return FALSE; // return TRUE to not call the trampoline upon return return FALSE; // return TRUE to not call the trampoline upon return
@ -1070,11 +1092,44 @@ ULONG_PTR __cdecl RpcRt_NdrClientCall2_x86(
// RpcRt_NdrAsyncClientCall // RpcRt_NdrAsyncClientCall
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifdef _WIN64 #if defined(_M_ARM64) || defined(_M_ARM64EC)
ULONG_PTR RpcRt_NdrAsyncClientCallARM64(
PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack, void* ReturnAddress) {
// pStack[0] -> RPC_ASYNC_STATE
// pStack[1] -> RPC_BINDING_HANDLE
// other args
RpcRt_NdrClientCallX(L"NdrAsyncClientCall", ReturnAddress, pStubDescriptor, pFormat, &pStack[1]);
return FALSE; // return TRUE to not call the trampoline upon return
}
#if !defined(_M_ARM64EC)
ALIGNED BOOLEAN __cdecl RpcRt_Ndr64AsyncClientCallARM64(
MIDL_STUBLESS_PROXY_INFO* pProxyInfo, ULONG nProcNum, void* pReturnValue, void** pStack, void* ReturnAddress) {
#else
ALIGNED BOOLEAN __cdecl RpcRt_Ndr64AsyncClientCallARM64(
MIDL_STUBLESS_PROXY_INFO* pProxyInfo, ULONG nProcNum, void* pReturnValue, void** pStack) {
void* ReturnAddress = *(pStack - 4);
#endif
if (g_rpc_client_hooks) {
RpcRt_NdrClientCallX(L"Ndr64AsyncClientCall", ReturnAddress, pProxyInfo->pStubDesc, pProxyInfo->ProcFormatString, &pStack[1]);
}
if (!SbieApi_QueryConfBool(NULL, L"NoUACProxy", FALSE))
if (Dll_OsBuild >= 6000) {
return Secure_CheckElevation((struct SECURE_UAC_ARGS*)pStack);
}
return FALSE; // return TRUE to not call the trampoline upon return
}
#elif _WIN64
ULONG_PTR RpcRt_NdrAsyncClientCall_x64( ULONG_PTR RpcRt_NdrAsyncClientCall_x64(
PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack) PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, void** pStack) {
{
void* ReturnAddress = *(pStack - 3); void* ReturnAddress = *(pStack - 3);
// pStack[0] -> RPC_ASYNC_STATE // pStack[0] -> RPC_ASYNC_STATE
@ -1087,8 +1142,7 @@ ULONG_PTR RpcRt_NdrAsyncClientCall_x64(
} }
ALIGNED BOOLEAN __cdecl RpcRt_Ndr64AsyncClientCall_x64( ALIGNED BOOLEAN __cdecl RpcRt_Ndr64AsyncClientCall_x64(
MIDL_STUBLESS_PROXY_INFO* pProxyInfo, ULONG nProcNum, void* pReturnValue, void** pStack) MIDL_STUBLESS_PROXY_INFO* pProxyInfo, ULONG nProcNum, void* pReturnValue, void** pStack) {
{
void* ReturnAddress = *(pStack - 4); void* ReturnAddress = *(pStack - 4);
if (g_rpc_client_hooks) { if (g_rpc_client_hooks) {
@ -1106,8 +1160,8 @@ ALIGNED BOOLEAN __cdecl RpcRt_Ndr64AsyncClientCall_x64(
ALIGNED BOOLEAN __cdecl RpcRt_NdrAsyncClientCall_x86( ALIGNED BOOLEAN __cdecl RpcRt_NdrAsyncClientCall_x86(
void* ReturnAddress, void* ReturnAddress,
PMIDL_STUB_DESC pStubDescriptor, void* pFormat, void** pStack) PMIDL_STUB_DESC pStubDescriptor, void* pFormat, void** pStack) {
{
if (g_rpc_client_hooks) { if (g_rpc_client_hooks) {
RpcRt_NdrClientCallX(L"NdrAsyncClientCall", ReturnAddress, pStubDescriptor, pFormat, &pStack[1]); RpcRt_NdrClientCallX(L"NdrAsyncClientCall", ReturnAddress, pStubDescriptor, pFormat, &pStack[1]);
} }

View File

@ -207,6 +207,19 @@ _FX LONG SbieApi_Call(ULONG api_code, LONG arg_num, ...)
_FX LONG SbieApi_GetVersion( _FX LONG SbieApi_GetVersion(
WCHAR *out_version) // WCHAR [16] WCHAR *out_version) // WCHAR [16]
{
return SbieApi_GetVersionEx(out_version, NULL);
}
//---------------------------------------------------------------------------
// SbieApi_GetVersionEx
//---------------------------------------------------------------------------
_FX LONG SbieApi_GetVersionEx(
WCHAR* version_string, // WCHAR [16]
ULONG* abi_version)
{ {
NTSTATUS status; NTSTATUS status;
__declspec(align(8)) ULONG64 parms[API_NUM_ARGS]; __declspec(align(8)) ULONG64 parms[API_NUM_ARGS];
@ -214,12 +227,15 @@ _FX LONG SbieApi_GetVersion(
memzero(parms, sizeof(parms)); memzero(parms, sizeof(parms));
args->func_code = API_GET_VERSION; args->func_code = API_GET_VERSION;
args->string.val64 = (ULONG_PTR)out_version; args->string.val = version_string;
args->abi_ver.val = abi_version;
status = SbieApi_Ioctl(parms); status = SbieApi_Ioctl(parms);
if (! NT_SUCCESS(status)) if (! NT_SUCCESS(status)){
wcscpy(out_version, L"unknown"); if (version_string) wcscpy(version_string, L"unknown");
if (abi_version) *abi_version = 0;
}
return status; return status;
} }

View File

@ -56,6 +56,10 @@ LONG SbieApi_Call(ULONG api_code, LONG arg_num, ...);
SBIEAPI_EXPORT LONG SbieApi_GetVersion( SBIEAPI_EXPORT LONG SbieApi_GetVersion(
WCHAR *version_string); // WCHAR [16] WCHAR *version_string); // WCHAR [16]
SBIEAPI_EXPORT LONG SbieApi_GetVersionEx(
WCHAR* version_string, // WCHAR [16]
ULONG* abi_version);
/*SBIEAPI_EXPORT /*SBIEAPI_EXPORT
LONG SbieApi_GetWork( LONG SbieApi_GetWork(
ULONG SessionId, ULONG SessionId,

View File

@ -229,6 +229,11 @@ SBIEDLL_EXPORT BOOLEAN SbieDll_GetBorderColor(const WCHAR* box_name, COLORREF*
SBIEDLL_EXPORT BOOLEAN SbieDll_IsReservedFileName(const WCHAR* name); SBIEDLL_EXPORT BOOLEAN SbieDll_IsReservedFileName(const WCHAR* name);
SBIEDLL_EXPORT void DbgPrint(const char* format, ...);
SBIEDLL_EXPORT void DbgTrace(const char* format, ...);
SBIEDLL_EXPORT BOOLEAN SbieDll_DisableCHPE(void);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -620,6 +620,10 @@ _FX BOOLEAN Scm_Init_AdvApi(HMODULE module)
BOOLEAN Scm_HookRegisterServiceCtrlHandler(HMODULE module) BOOLEAN Scm_HookRegisterServiceCtrlHandler(HMODULE module)
{ {
#ifndef _M_ARM64
// $HookHack$ - Custom, not automated, Hook no longer applyes to later windows 10 builds
#ifdef _WIN64
static const UCHAR PrologW[] = { static const UCHAR PrologW[] = {
0x45, 0x33, 0xC9, // xor r9d,r9d 0x45, 0x33, 0xC9, // xor r9d,r9d
0x45, 0x33, 0xC0, // xor r8d,r8d 0x45, 0x33, 0xC0, // xor r8d,r8d
@ -631,8 +635,6 @@ BOOLEAN Scm_HookRegisterServiceCtrlHandler(HMODULE module)
}; };
BOOLEAN HookedRegisterServiceCtrlHandler = FALSE; BOOLEAN HookedRegisterServiceCtrlHandler = FALSE;
#ifdef _WIN64
// //
// on 64-bit Windows, ADVAPI32!RegisterServiceCtrlHandlerW is an 11-byte // on 64-bit Windows, ADVAPI32!RegisterServiceCtrlHandlerW is an 11-byte
// function embedded in the code space of another function, so to prevent // function embedded in the code space of another function, so to prevent
@ -662,19 +664,19 @@ BOOLEAN Scm_HookRegisterServiceCtrlHandler(HMODULE module)
} }
} }
if (HookedRegisterServiceCtrlHandler)
return TRUE;
#endif _WIN64 #endif _WIN64
#endif
// //
// otherwise hook the four functions normally // otherwise hook the four functions normally
// //
if (! HookedRegisterServiceCtrlHandler) {
SBIEDLL_HOOK_SCM(RegisterServiceCtrlHandlerA); SBIEDLL_HOOK_SCM(RegisterServiceCtrlHandlerA);
SBIEDLL_HOOK_SCM(RegisterServiceCtrlHandlerW); SBIEDLL_HOOK_SCM(RegisterServiceCtrlHandlerW);
SBIEDLL_HOOK_SCM(RegisterServiceCtrlHandlerExA); SBIEDLL_HOOK_SCM(RegisterServiceCtrlHandlerExA);
SBIEDLL_HOOK_SCM(RegisterServiceCtrlHandlerExW); SBIEDLL_HOOK_SCM(RegisterServiceCtrlHandlerExW);
}
return TRUE; return TRUE;
} }

View File

@ -146,6 +146,7 @@ _FX BOOLEAN Scm_SecHostDll(HMODULE module)
} }
} }
// $HookHack$ - API Redirection
for (i = 0; funcNamesAW[i].FuncNameA; ++i) { for (i = 0; funcNamesAW[i].FuncNameA; ++i) {
void *ResPtr; void *ResPtr;
@ -156,7 +157,7 @@ _FX BOOLEAN Scm_SecHostDll(HMODULE module)
return FALSE; return FALSE;
} }
ResPtr = SbieDll_Hook((char *)funcNamesAW[i].FuncNameA, SecPtr, AdvPtr, module); ResPtr = SbieDll_Hook((char *)funcNamesAW[i].FuncNameA, SecPtr, AdvPtr, (HMODULE)-1);
if (! ResPtr) if (! ResPtr)
return FALSE; return FALSE;
} }

View File

@ -166,6 +166,7 @@ _FX WCHAR *Scm_GetServiceConfigString(SERVICE_QUERY_RPL *rpl, UCHAR type)
{ {
ULONG_PTR ptr; ULONG_PTR ptr;
#ifndef _WIN64
if (Dll_IsWow64) { if (Dll_IsWow64) {
// //
@ -181,7 +182,9 @@ _FX WCHAR *Scm_GetServiceConfigString(SERVICE_QUERY_RPL *rpl, UCHAR type)
else if (type == 'P') else if (type == 'P')
ptr = (ULONG_PTR)cfg->lpBinaryPathName; ptr = (ULONG_PTR)cfg->lpBinaryPathName;
} else { } else
#endif
{
// //
// if not Wow64 then caller bitness matches bitness of SbieSvc // if not Wow64 then caller bitness matches bitness of SbieSvc
@ -253,6 +256,7 @@ _FX void *Scm_QueryBoxedServiceByName(
// lpLoadOrderGroup and lpDependencies // lpLoadOrderGroup and lpDependencies
+ sizeof(WCHAR) * 2; + sizeof(WCHAR) * 2;
#ifndef _WIN64
if (Dll_IsWow64) { if (Dll_IsWow64) {
// //
@ -266,6 +270,7 @@ _FX void *Scm_QueryBoxedServiceByName(
service_config_len += 5 * sizeof(ULONG); service_config_len += 5 * sizeof(ULONG);
} }
#endif
// //
// DisplayName // DisplayName
@ -338,19 +343,23 @@ _FX void *Scm_QueryBoxedServiceByName(
service_config_len = sizeof(SERVICE_DESCRIPTION) service_config_len = sizeof(SERVICE_DESCRIPTION)
+ (wcslen(ServiceNm) + 1) * sizeof(WCHAR); + (wcslen(ServiceNm) + 1) * sizeof(WCHAR);
#ifndef _WIN64
if (Dll_IsWow64) { if (Dll_IsWow64) {
// set up extra space for lpDescription // set up extra space for lpDescription
service_config_len += sizeof(ULONG); service_config_len += sizeof(ULONG);
} }
#endif
} else if (with_service_config == SERVICE_CONFIG_FAILURE_ACTIONS) { } else if (with_service_config == SERVICE_CONFIG_FAILURE_ACTIONS) {
service_config_len = sizeof(SERVICE_FAILURE_ACTIONS); service_config_len = sizeof(SERVICE_FAILURE_ACTIONS);
#ifndef _WIN64
if (Dll_IsWow64) { if (Dll_IsWow64) {
// set up extra space for lpRebootMsg, lpCommand and lpsaActions // set up extra space for lpRebootMsg, lpCommand and lpsaActions
service_config_len += 3 * sizeof(ULONG); service_config_len += 3 * sizeof(ULONG);
} }
#endif
} else if (with_service_config == 3 || with_service_config == 4) { } else if (with_service_config == 3 || with_service_config == 4) {
@ -622,6 +631,7 @@ after_service_status:
// for the pointer fields // for the pointer fields
// //
#ifndef _WIN64
if (Dll_IsWow64) { if (Dll_IsWow64) {
p_lpBinaryPathName = (ULONG_PTR *)(base + p_lpBinaryPathName = (ULONG_PTR *)(base +
@ -637,7 +647,9 @@ after_service_status:
next = (WCHAR *)(base + sizeof(QUERY_SERVICE_CONFIG_64)); next = (WCHAR *)(base + sizeof(QUERY_SERVICE_CONFIG_64));
} else { } else
#endif
{
p_lpBinaryPathName = (ULONG_PTR *)(base + p_lpBinaryPathName = (ULONG_PTR *)(base +
FIELD_OFFSET(QUERY_SERVICE_CONFIG, lpBinaryPathName)); FIELD_OFFSET(QUERY_SERVICE_CONFIG, lpBinaryPathName));
@ -713,8 +725,10 @@ after_service_status:
ULONG_PTR base = (ULONG_PTR)&rpl->service_config; ULONG_PTR base = (ULONG_PTR)&rpl->service_config;
ULONG offset = sizeof(ULONG_PTR); ULONG offset = sizeof(ULONG_PTR);
#ifndef _WIN64
if (Dll_IsWow64) if (Dll_IsWow64)
offset += sizeof(ULONG); offset += sizeof(ULONG);
#endif
*(ULONG_PTR *)base = offset; *(ULONG_PTR *)base = offset;
wcscpy((WCHAR *)(base + offset), ServiceNm); wcscpy((WCHAR *)(base + offset), ServiceNm);
} }
@ -870,6 +884,7 @@ _FX BOOL Scm_QueryServiceConfigW(
return FALSE; return FALSE;
} }
#ifndef _WIN64
if (Dll_IsWow64) { if (Dll_IsWow64) {
// //
@ -928,7 +943,9 @@ _FX BOOL Scm_QueryServiceConfigW(
*optr = L'\0'; *optr = L'\0';
} }
} else { } else
#endif
{
// //
// copy 32-bit QUERY_SERVICE_CONFIGW structure to caller // copy 32-bit QUERY_SERVICE_CONFIGW structure to caller

View File

@ -362,7 +362,7 @@ void Secure_InitSecurityDescriptors(void)
_FX BOOLEAN Secure_Init(void) _FX BOOLEAN Secure_Init(void)
{ {
HMODULE module = NULL; HMODULE module = Dll_Ntdll;
void *RtlQueryElevationFlags; void *RtlQueryElevationFlags;
void *RtlCheckTokenMembershipEx; void *RtlCheckTokenMembershipEx;

View File

@ -1142,6 +1142,7 @@ retry:
// then look again in HKEY_CLASSES_ROOT\Wow64 // then look again in HKEY_CLASSES_ROOT\Wow64
// //
#ifndef _WIN64
if (Dll_IsWow64) { if (Dll_IsWow64) {
wcscpy(subkey2, L"Wow6432Node\\"); wcscpy(subkey2, L"Wow6432Node\\");
@ -1152,6 +1153,7 @@ retry:
if (NT_SUCCESS(status)) if (NT_SUCCESS(status))
return hkey; return hkey;
} }
#endif
// //
// if we looked at HKEY_CURRENT_USER, try again for HKEY_LOCAL_MACHINE // if we looked at HKEY_CURRENT_USER, try again for HKEY_LOCAL_MACHINE
@ -1771,12 +1773,16 @@ _FX HRESULT SH32_IShellExtInit_Initialize(
void *pShellExtInit, void *pShellExtInit,
void *pidlFolder, IDataObject *pDataObject, HKEY hkeyProgID) void *pidlFolder, IDataObject *pDataObject, HKEY hkeyProgID)
{ {
typedef HRESULT (*P_Initialize)(void *, void *, IDataObject *, HKEY); #if !defined(_M_ARM64) && !defined(_M_ARM64EC)
ULONG_PTR *StubData = Dll_JumpStubData(); ULONG_PTR *StubData = Dll_JumpStubData();
#else
ULONG_PTR *StubData = (ULONG_PTR *)hkeyProgID;
hkeyProgID = (HKEY)StubData[3];
#endif
extern IDataObject *Ole_XDataObject_From_IDataObject( extern IDataObject *Ole_XDataObject_From_IDataObject(
IDataObject *pDataObject); IDataObject *pDataObject);
typedef HRESULT (*P_Initialize)(void *, void *, IDataObject *, HKEY);
return ((P_Initialize)StubData[1])( return ((P_Initialize)StubData[1])(
pShellExtInit, pidlFolder, pShellExtInit, pidlFolder,
Ole_XDataObject_From_IDataObject(pDataObject), Ole_XDataObject_From_IDataObject(pDataObject),
@ -1785,12 +1791,16 @@ _FX HRESULT SH32_IShellExtInit_Initialize(
_FX HRESULT SH32_IContextMenuHook_QueryInterface( _FX HRESULT SH32_IContextMenuHook_QueryInterface(
void *pContextMenu, REFIID riid, void **ppv) void *pContextMenu, REFIID riid, void **ppv
{ #if !defined(_M_ARM64) && !defined(_M_ARM64EC)
) {
ULONG_PTR *StubData = Dll_JumpStubData();
#else
, ULONG_PTR *StubData) {
#endif
EXTERN_C const IID IID_IShellExtInit; EXTERN_C const IID IID_IShellExtInit;
typedef HRESULT (*P_QueryInterface)(void *, REFIID, void **); typedef HRESULT (*P_QueryInterface)(void *, REFIID, void **);
ULONG_PTR *StubData = Dll_JumpStubData();
HRESULT hr = ((P_QueryInterface)StubData[1])(pContextMenu, riid, ppv); HRESULT hr = ((P_QueryInterface)StubData[1])(pContextMenu, riid, ppv);
if (SUCCEEDED(hr) && if (SUCCEEDED(hr) &&
memcmp(riid, &IID_IShellExtInit, sizeof(GUID)) == 0) { memcmp(riid, &IID_IShellExtInit, sizeof(GUID)) == 0) {

View File

@ -1216,9 +1216,9 @@ _FX HANDLE Sxs_CreateActCtxW(ACTCTX *ActCtx)
if (ActCtx->dwFlags & ACTCTX_FLAG_SET_PROCESS_DEFAULT) { if (ActCtx->dwFlags & ACTCTX_FLAG_SET_PROCESS_DEFAULT) {
#ifdef _WIN64 #ifdef _WIN64
pActivationContextData = (ULONG_PTR *)(__readgsqword(0x60) + 0x2F8); pActivationContextData = (ULONG_PTR *)(NtCurrentPeb() + 0x2F8);
#else #else
pActivationContextData = (ULONG_PTR *)(__readfsdword(0x30) + 0x1F8); pActivationContextData = (ULONG_PTR *)(NtCurrentPeb() + 0x1F8);
#endif _WIN64 #endif _WIN64
if (*pActivationContextData) { if (*pActivationContextData) {
@ -1656,7 +1656,7 @@ _FX BOOLEAN Sxs_InitKernel32(void)
if (Dll_ImageType == DLL_IMAGE_SANDBOXIE_RPCSS || if (Dll_ImageType == DLL_IMAGE_SANDBOXIE_RPCSS ||
SbieApi_QueryConfBool(NULL, L"DisableBoxedWinSxS", FALSE)) { Config_GetSettingsForImageName_bool(L"DisableBoxedWinSxS", FALSE)) {
Sxs_UseAltCreateActCtx = TRUE; Sxs_UseAltCreateActCtx = TRUE;
} }
@ -1682,6 +1682,8 @@ _FX BOOLEAN Sxs_InitKernel32(void)
} }
} }
module = Dll_Ntdll;
// //
// Opera hooks NtSetInformationThread. SboxDll calls __sys_NtSetInformationThread to bypass Opera hook. // Opera hooks NtSetInformationThread. SboxDll calls __sys_NtSetInformationThread to bypass Opera hook.
// See the comment about Thread_SetInformationThread_ChangeNotifyToken in Gui_ConnectToWindowStationAndDesktop // See the comment about Thread_SetInformationThread_ChangeNotifyToken in Gui_ConnectToWindowStationAndDesktop
@ -1699,8 +1701,6 @@ _FX BOOLEAN Sxs_InitKernel32(void)
if (Dll_ImageType != DLL_IMAGE_TRUSTED_INSTALLER) if (Dll_ImageType != DLL_IMAGE_TRUSTED_INSTALLER)
return TRUE; return TRUE;
module = Dll_Ntdll;
NtCreateTransaction = GetProcAddress(module, "NtCreateTransaction"); NtCreateTransaction = GetProcAddress(module, "NtCreateTransaction");
NtOpenTransaction = GetProcAddress(module, "NtOpenTransaction"); NtOpenTransaction = GetProcAddress(module, "NtOpenTransaction");
NtCommitTransaction = GetProcAddress(module, "NtCommitTransaction"); NtCommitTransaction = GetProcAddress(module, "NtCommitTransaction");
@ -1760,6 +1760,8 @@ _FX BOOLEAN Sxs_InitKernel32(void)
if (Dll_OsBuild >= 8400) { if (Dll_OsBuild >= 8400) {
module = Dll_KernelBase;
typedef BOOL (*P_CheckTokenMembership)( typedef BOOL (*P_CheckTokenMembership)(
HANDLE hToken, void *pSid, BOOL *IsMember); HANDLE hToken, void *pSid, BOOL *IsMember);
P_CheckTokenMembership CheckTokenMembership = P_CheckTokenMembership CheckTokenMembership =
@ -1823,9 +1825,9 @@ _FX void Sxs_ActivateDefaultManifest(void *ImageBase)
ULONG_PTR *pActivationContextData; ULONG_PTR *pActivationContextData;
#ifdef _WIN64 #ifdef _WIN64
pActivationContextData = (ULONG_PTR *)(__readgsqword(0x60) + 0x2F8); pActivationContextData = (ULONG_PTR *)(NtCurrentPeb() + 0x2F8);
#else #else
pActivationContextData = (ULONG_PTR *)(__readfsdword(0x30) + 0x1F8); pActivationContextData = (ULONG_PTR *)(NtCurrentPeb() + 0x1F8);
#endif _WIN64 #endif _WIN64
*pActivationContextData = 0; *pActivationContextData = 0;

View File

@ -122,7 +122,7 @@ BOOLEAN SysInfo_CanUseJobs = FALSE;
_FX BOOLEAN SysInfo_Init(void) _FX BOOLEAN SysInfo_Init(void)
{ {
HMODULE module = NULL; HMODULE module = Dll_Ntdll;
void *NtTraceEvent; void *NtTraceEvent;
@ -146,9 +146,12 @@ _FX BOOLEAN SysInfo_Init(void)
SBIEDLL_HOOK(SysInfo_, NtSetInformationJobObject); SBIEDLL_HOOK(SysInfo_, NtSetInformationJobObject);
} }
{
HMODULE module = Dll_Kernel32;
SBIEDLL_HOOK(SysInfo_, SetLocaleInfoW); SBIEDLL_HOOK(SysInfo_, SetLocaleInfoW);
SBIEDLL_HOOK(SysInfo_, SetLocaleInfoA); SBIEDLL_HOOK(SysInfo_, SetLocaleInfoA);
}
// //
// we don't want to hook NtTraceEvent in kernel mode // we don't want to hook NtTraceEvent in kernel mode

View File

@ -61,7 +61,7 @@ static P_OutputDebugString __sys_OutputDebugStringA = NULL;
_FX int Trace_Init(void) _FX int Trace_Init(void)
{ {
HMODULE module = NULL; // fix-me HMODULE module = NULL;
P_RtlSetLastWin32Error RtlSetLastWin32Error; P_RtlSetLastWin32Error RtlSetLastWin32Error;
P_OutputDebugString OutputDebugStringW; P_OutputDebugString OutputDebugStringW;
@ -160,7 +160,7 @@ WCHAR* Trace_FindModuleByAddress(void* address)
{ {
Entry = CONTAINING_RECORD(Next, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks); Entry = CONTAINING_RECORD(Next, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
if (Entry->DllBase < address && (UINT_PTR)Entry->DllBase + Entry->SizeOfImage > (UINT_PTR)address) if (Entry->DllBase <= address && (UINT_PTR)Entry->DllBase + Entry->SizeOfImage > (UINT_PTR)address)
{ {
found = Entry->BaseDllName.Buffer; found = Entry->BaseDllName.Buffer;
break; break;
@ -385,7 +385,6 @@ const wchar_t* Trace_SbieGuiFunc2Str(ULONG func)
case GUI_WND_HOOK_NOTIFY: return L"GUI_WND_HOOK_NOTIFY"; case GUI_WND_HOOK_NOTIFY: return L"GUI_WND_HOOK_NOTIFY";
case GUI_WND_HOOK_REGISTER: return L"GUI_WND_HOOK_REGISTER"; case GUI_WND_HOOK_REGISTER: return L"GUI_WND_HOOK_REGISTER";
case GUI_KILL_JOB: return L"GUI_KILL_JOB"; case GUI_KILL_JOB: return L"GUI_KILL_JOB";
case GUI_MAX_REQUEST_CODE: return L"GUI_MAX_REQUEST_CODE";
default: return L"GUI_UNKNOWN"; default: return L"GUI_UNKNOWN";
} }
} }

View File

@ -139,6 +139,7 @@ Ldr_Inject_Entry32@0 PROC C PUBLIC
; assumes the stack is zero ; assumes the stack is zero
; ;
; $Workaround$ - 3rd party fix
lea edi,[esp-200h] lea edi,[esp-200h]
mov ecx,200h/4 mov ecx,200h/4
xor eax,eax xor eax,eax

View File

@ -77,6 +77,8 @@ ProtectCall4 PROC
ProtectCall4 ENDP ProtectCall4 ENDP
ifndef _M_ARM64EC
;---------------------------------------------------------------------------- ;----------------------------------------------------------------------------
; RpcRt_Ndr64AsyncClientCall ; RpcRt_Ndr64AsyncClientCall
;---------------------------------------------------------------------------- ;----------------------------------------------------------------------------
@ -126,6 +128,8 @@ WeHandleElevation:
RpcRt_Ndr64AsyncClientCall ENDP RpcRt_Ndr64AsyncClientCall ENDP
endif
;---------------------------------------------------------------------------- ;----------------------------------------------------------------------------
; Ldr_Inject_Entry64 ; Ldr_Inject_Entry64
;---------------------------------------------------------------------------- ;----------------------------------------------------------------------------
@ -151,6 +155,7 @@ Ldr_Inject_Entry64 PROC
; assumes the stack is zero ; assumes the stack is zero
; ;
; $Workaround$ - 3rd party fix
lea rdi,[rsp-200h] lea rdi,[rsp-200h]
mov rcx,200h/8 mov rcx,200h/8
xor rax,rax xor rax,rax
@ -166,7 +171,9 @@ Ldr_Inject_Entry64 ENDP
; Gui_FixupCallbackPointers ; Gui_FixupCallbackPointers
;---------------------------------------------------------------------------- ;----------------------------------------------------------------------------
nop
nop
nop
Gui_FixupCallbackPointers PROC Gui_FixupCallbackPointers PROC
; ;
@ -192,6 +199,8 @@ l02: ret
Gui_FixupCallbackPointers ENDP Gui_FixupCallbackPointers ENDP
ifndef _M_ARM64EC
;---------------------------------------------------------------------------- ;----------------------------------------------------------------------------
; Secure_NdrAsyncClientCall ; Secure_NdrAsyncClientCall
;---------------------------------------------------------------------------- ;----------------------------------------------------------------------------
@ -340,4 +349,4 @@ CancelCall3:
RpcRt_NdrClientCall3 ENDP RpcRt_NdrClientCall3 ENDP
endif

View File

@ -0,0 +1,259 @@
;------------------------------------------------------------------------
; Copyright 2022 David Xanatos, xanasoft.com
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <https://www.gnu.org/licenses/>.
;------------------------------------------------------------------------
;----------------------------------------------------------------------------
; Assembler Utilities -- ARM64EC
;----------------------------------------------------------------------------
AREA my_arm__ec, CODE, READONLY
EXPORT RpcRt_NdrClientCall2
IMPORT RpcRt_NdrClientCall2ARM64
IMPORT __sys_NdrClientCall2
EXPORT RpcRt_NdrClientCall3
IMPORT RpcRt_NdrClientCall3ARM64
IMPORT __sys_NdrClientCall3
EXPORT RpcRt_NdrAsyncClientCall
IMPORT RpcRt_NdrAsyncClientCallARM64
IMPORT __sys_NdrAsyncClientCall
EXPORT RpcRt_Ndr64AsyncClientCall
IMPORT RpcRt_Ndr64AsyncClientCallARM64
IMPORT Secure_HandleElevation
IMPORT __sys_Ndr64AsyncClientCall
;----------------------------------------------------------------------------
; RpcRt_NdrClientCall2
;----------------------------------------------------------------------------
RpcRt_NdrClientCall2 PROC
stp x2,x3,[sp,#-0x10]!
; x4 first argument on stack
; x5 arguments size on stack
mov x8, sp
stp x0, x1, [sp, #-0x10]!
stp fp, lr, [sp, #-0x10]!
;stp x19, x20, [sp, #-0x10]!
stp x4, x5, [sp, #-0x10]!
;x0 ; pStubDescriptor
;x1 ; pFormat
mov x2, x8 ; pStack
mov x3, lr ; ReturnAddress
bl RpcRt_NdrClientCall2ARM64
mov x8, x0
ldp x4, x5, [sp], #0x10
;ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
ldp x0, x1, [sp], #0x10
ldp x2, x3, [sp], #0x10
cmp x8, #0x00
bne CancelCall2
ldr x16, =__sys_NdrClientCall2
ldr x16, [x16]
br x16
CancelCall2
ret
ENDP
;----------------------------------------------------------------------------
; RpcRt_NdrClientCall3
;----------------------------------------------------------------------------
RpcRt_NdrClientCall3 PROC
sub sp,sp,#0x10
str x3,[sp,#0x8]
; x4 first argument on stack
; x5 arguments size on stack
add x8, sp, #8
str x2,[sp,#0]
stp x0, x1, [sp, #-0x10]!
stp fp, lr, [sp, #-0x10]!
;stp x19, x20, [sp, #-0x10]!
stp x4, x5, [sp, #-0x10]!
;x0 ; pProxyInfo
;x1 ; nProcNum
;x2 ; pReturnValue
mov x3, x8 ; pStack
bl RpcRt_NdrClientCall3ARM64
mov x8, x0
ldp x4, x5, [sp], #0x10
;ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
ldp x0, x1, [sp], #0x10
ldr x2, [sp]
ldr x3,[sp,#0x8]
add sp,sp,#0x10
cmp x8, #0x00
bne CancelCall3
ldr x16, =__sys_NdrClientCall3
ldr x16, [x16]
br x16
CancelCall3
ret
ENDP
;----------------------------------------------------------------------------
; RpcRt_NdrAsyncClientCall
;----------------------------------------------------------------------------
RpcRt_NdrAsyncClientCall PROC
stp x2,x3,[sp,#-0x10]!
; x4 first argument on stack
; x5 arguments size on stack
mov x8, sp
stp x0, x1, [sp, #-0x10]!
stp fp, lr, [sp, #-0x10]!
;stp x19, x20, [sp, #-0x10]!
stp x4, x5, [sp, #-0x10]!
;x0 ; pStubDescriptor
;x1 ; pFormat
mov x2, x8 ; pStack
mov x3, lr ; ReturnAddress
bl RpcRt_NdrAsyncClientCallARM64
mov x8, x0
ldp x4, x5, [sp], #0x10
;ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
ldp x0, x1, [sp], #0x10
ldp x2, x3, [sp], #0x10
cmp x8, #0x00
bne CancelCallA
ldr x16, =__sys_NdrAsyncClientCall
ldr x16, [x16]
br x16
CancelCallA
ret
ENDP
;----------------------------------------------------------------------------
; RpcRt_Ndr64AsyncClientCall
;----------------------------------------------------------------------------
RpcRt_Ndr64AsyncClientCall PROC
sub sp,sp,#0x10
str x3,[sp,#0x8]
; x4 first argument on stack
; x5 arguments size on stack
add x8, sp, #8
str x2,[sp,#0]
stp x0, x1, [sp, #-0x10]!
stp fp, lr, [sp, #-0x10]!
stp x19, x20, [sp, #-0x10]!
stp x4, x5, [sp, #-0x10]!
mov x19, x8
;x0 ; pProxyInfo
;x1 ; nProcNum
;x2 ; pReturnValue
mov x3, x8 ; pStack
bl RpcRt_Ndr64AsyncClientCallARM64
cmp x0, #0x00
bne WeHandleElevation
ldp x4, x5, [sp], #0x10
ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
ldp x0, x1, [sp], #0x10
ldr x2, [sp]
ldr x3,[sp,#0x8]
add sp,sp,#0x10
ldr x16, =__sys_Ndr64AsyncClientCall
ldr x16, [x16]
br x16
WeHandleElevation
mov x0, #0 ; pStubDescriptor
mov x1, #0 ; pFormat
mov x2, x19 ; Args
bl Secure_HandleElevation
ldp x4, x5, [sp], #0x10
ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
add sp,sp,#0x20
ret
ENDP
;----------------------------------------------------------------------------
END

View File

@ -0,0 +1,383 @@
;------------------------------------------------------------------------
; Copyright 2022 David Xanatos, xanasoft.com
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <https://www.gnu.org/licenses/>.
;------------------------------------------------------------------------
;----------------------------------------------------------------------------
; Assembler Utilities -- ARM64
;----------------------------------------------------------------------------
AREA my_arm, CODE, READONLY
EXPORT ProtectCall2
EXPORT ProtectCall3
EXPORT ProtectCall4
EXPORT Gui_FixupCallbackPointers
EXPORT Ldr_Inject_Entry64
IMPORT Ldr_Inject_Entry
EXPORT RpcRt_NdrClientCall2
IMPORT RpcRt_NdrClientCall2ARM64
IMPORT __sys_NdrClientCall2
EXPORT RpcRt_NdrClientCall3
IMPORT RpcRt_NdrClientCall3ARM64
IMPORT __sys_NdrClientCall3
EXPORT RpcRt_NdrAsyncClientCall
IMPORT RpcRt_NdrAsyncClientCallARM64
IMPORT __sys_NdrAsyncClientCall
EXPORT RpcRt_Ndr64AsyncClientCall
IMPORT RpcRt_Ndr64AsyncClientCallARM64
IMPORT Secure_HandleElevation
IMPORT __sys_Ndr64AsyncClientCall
EXPORT Dll_JumpStubData
;----------------------------------------------------------------------------
; ProtectCall2
;----------------------------------------------------------------------------
ProtectCall2 PROC
stp fp, lr, [sp, #-0x10]! ; push
mov x8, x0
mov x0, x1
mov x1, x2
blr x8
ldp fp, lr, [sp], #0x10 ; pop
ret
ENDP
;----------------------------------------------------------------------------
; ProtectCall3
;----------------------------------------------------------------------------
ProtectCall3 PROC
stp fp, lr, [sp, #-0x10]! ; push
mov x8, x0
mov x0, x1
mov x1, x2
mov x2, x3
blr x8
ldp fp, lr, [sp], #0x10 ; pop
ret
ENDP
;----------------------------------------------------------------------------
; ProtectCall4
;----------------------------------------------------------------------------
ProtectCall4 PROC
stp fp, lr, [sp, #-0x10]! ; push
mov x8, x0
mov x0, x1
mov x1, x2
mov x2, x3
mov x3, x4
blr x8
ldp fp, lr, [sp], #0x10 ; pop
ret
ENDP
;----------------------------------------------------------------------------
; Gui_FixupCallbackPointers
;----------------------------------------------------------------------------
Gui_FixupCallbackPointers PROC
;
; copy of USER32!FixupCallbackPointers
; with additional zeroing of the dword at [X0+8] before returning
;
ldr w8, [x0,#0x18]
mov w11, #0
ldr w9, [x0,#8]
add x12, x0, w8,uxtw
cbz w9, l02
l01
ldr w10, [x12],#4
add w11, w11, #1
ldr x8, [x0,w10,uxtw]
add x9, x0, x8
str x9, [x0,w10,uxtw]
ldr w8, [x0,#8]
cmp w11, w8
b.cc l01
mov w8, #0
str w8, [x0,#8]
l02
ret
ENDP
;----------------------------------------------------------------------------
; Ldr_Inject_Entry64
;----------------------------------------------------------------------------
Ldr_Inject_Entry64 PROC
stp fp, lr, [sp, #-0x10]! ; push
add x0, sp, 0x8 ; pRetAddr parameter
ldr x8, =Ldr_Inject_Entry
blr x8
ldp fp, lr, [sp], #0x10 ; pop
ret
ENDP
;----------------------------------------------------------------------------
; RpcRt_NdrClientCall2
;----------------------------------------------------------------------------
RpcRt_NdrClientCall2 PROC
stp x2,x3,[sp,#-0x30]!
stp x4,x5,[sp,#0x10]
stp x6,x7,[sp,#0x20]
mov x8, sp
stp x0, x1, [sp, #-0x10]!
stp fp, lr, [sp, #-0x10]!
;stp x19, x20, [sp, #-0x10]!
;x0 ; pStubDescriptor
;x1 ; pFormat
mov x2, x8 ; pStack
mov x3, lr ; ReturnAddress
bl RpcRt_NdrClientCall2ARM64
mov x8, x0
;ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
ldp x0, x1, [sp], #0x10
ldp x2, x3, [sp], #0x10
ldp x4, x5, [sp], #0x10
ldp x6, x7, [sp], #0x10
cmp x8, #0x00
bne CancelCall2
ldr x16, =__sys_NdrClientCall2
ldr x16, [x16]
br x16
CancelCall2
ret
ENDP
;----------------------------------------------------------------------------
; RpcRt_NdrClientCall3
;----------------------------------------------------------------------------
RpcRt_NdrClientCall3 PROC
sub sp,sp,#0x30
stp x3,x4,[sp,#8]
stp x5,x6,[sp,#0x18]
str x7,[sp,#0x28]
add x8, sp, #8
str x2,[sp,#0]
stp x0, x1, [sp, #-0x10]!
stp fp, lr, [sp, #-0x10]!
;stp x19, x20, [sp, #-0x10]!
;x0 ; pProxyInfo
;x1 ; nProcNum
;x2 ; pReturnValue
mov x3, x8 ; pStack
mov x4, lr ; ReturnAddress
bl RpcRt_NdrClientCall3ARM64
mov x8, x0
;ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
ldp x0, x1, [sp], #0x10
ldr x2, [sp]
ldr x7,[sp,#0x28]
ldp x5,x6,[sp,#0x18]
ldp x3,x4,[sp,#8]
add sp,sp,#0x30
cmp x8, #0x00
bne CancelCall3
ldr x16, =__sys_NdrClientCall3
ldr x16, [x16]
br x16
CancelCall3
ret
ENDP
;----------------------------------------------------------------------------
; RpcRt_NdrAsyncClientCall
;----------------------------------------------------------------------------
RpcRt_NdrAsyncClientCall PROC
stp x2,x3,[sp,#-0x30]!
stp x4,x5,[sp,#0x10]
stp x6,x7,[sp,#0x20]
mov x8, sp
stp x0, x1, [sp, #-0x10]!
stp fp, lr, [sp, #-0x10]!
;stp x19, x20, [sp, #-0x10]!
;x0 ; pStubDescriptor
;x1 ; pFormat
mov x2, x8 ; pStack
mov x3, lr ; ReturnAddress
bl RpcRt_NdrAsyncClientCallARM64
mov x8, x0
;ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
ldp x0, x1, [sp], #0x10
ldp x6, x7, [sp], #0x10
ldp x4, x5, [sp], #0x10
ldp x2, x3, [sp], #0x10
cmp x8, #0x00
bne CancelCallA
ldr x16, =__sys_NdrAsyncClientCall
ldr x16, [x16]
br x16
CancelCallA
ret
ENDP
;----------------------------------------------------------------------------
; RpcRt_Ndr64AsyncClientCall
;----------------------------------------------------------------------------
RpcRt_Ndr64AsyncClientCall PROC
sub sp,sp,#0x30
stp x3,x4,[sp,#8]
stp x5,x6,[sp,#0x18]
str x7,[sp,#0x28]
add x8, sp, #8
str x2,[sp,#0]
stp x0, x1, [sp, #-0x10]!
stp fp, lr, [sp, #-0x10]!
stp x19, x20, [sp, #-0x10]!
mov x19, x8
;x0 ; pProxyInfo
;x1 ; nProcNum
;x2 ; pReturnValue
mov x3, x8 ; pStack
mov x4, lr ; ReturnAddress
bl RpcRt_Ndr64AsyncClientCallARM64
cmp x0, #0x00
bne WeHandleElevation
ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
ldp x0, x1, [sp], #0x10
ldr x2, [sp]
ldr x7,[sp,#0x28]
ldp x5,x6,[sp,#0x18]
ldp x3,x4,[sp,#8]
add sp,sp,#0x30
ldr x16, =__sys_Ndr64AsyncClientCall
ldr x16, [x16]
br x16
WeHandleElevation
mov x0, #0 ; pStubDescriptor
mov x1, #0 ; pFormat
mov x2, x19 ; Args
bl Secure_HandleElevation
ldp x19, x20, [sp], #0x10
ldp fp, lr, [sp], #0x10
add sp,sp,#0x40
ret
ENDP
;----------------------------------------------------------------------------
; Dll_JumpStubData
;----------------------------------------------------------------------------
Dll_JumpStubData PROC
mov x0, x17
ret
ENDP
;----------------------------------------------------------------------------
END

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="SbieDebug|ARM64">
<Configuration>SbieDebug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieDebug|Win32"> <ProjectConfiguration Include="SbieDebug|Win32">
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -9,6 +13,10 @@
<Configuration>SbieDebug</Configuration> <Configuration>SbieDebug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|ARM64">
<Configuration>SbieRelease</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="SbieRelease|Win32"> <ProjectConfiguration Include="SbieRelease|Win32">
<Configuration>SbieRelease</Configuration> <Configuration>SbieRelease</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -42,6 +50,16 @@
<Driver_SpectreMitigation>false</Driver_SpectreMitigation> <Driver_SpectreMitigation>false</Driver_SpectreMitigation>
<ALLOW_DATE_TIME>1</ALLOW_DATE_TIME> <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="Configuration">
<ConfigurationType>Driver</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
<TargetVersion>
</TargetVersion>
<DriverType>WDM</DriverType>
<Driver_SpectreMitigation>false</Driver_SpectreMitigation>
<ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>Driver</ConfigurationType> <ConfigurationType>Driver</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -62,6 +80,16 @@
<Driver_SpectreMitigation>false</Driver_SpectreMitigation> <Driver_SpectreMitigation>false</Driver_SpectreMitigation>
<ALLOW_DATE_TIME>1</ALLOW_DATE_TIME> <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="Configuration">
<ConfigurationType>Driver</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
<TargetVersion>
</TargetVersion>
<DriverType>WDM</DriverType>
<Driver_SpectreMitigation>false</Driver_SpectreMitigation>
<ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -73,6 +101,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox32.props" /> <Import Project="..\..\Sandbox32.props" />
@ -81,6 +113,10 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64.props" /> <Import Project="..\..\Sandbox64.props" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Sandbox64a.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<TargetExt>.sys</TargetExt> <TargetExt>.sys</TargetExt>
@ -94,6 +130,12 @@
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild> <PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
<TargetName>SbieDrv</TargetName> <TargetName>SbieDrv</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<TargetExt>.sys</TargetExt>
<GenerateManifest>false</GenerateManifest>
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
<TargetName>SbieDrv</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetExt>.sys</TargetExt> <TargetExt>.sys</TargetExt>
<GenerateManifest>false</GenerateManifest> <GenerateManifest>false</GenerateManifest>
@ -106,6 +148,12 @@
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild> <PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
<TargetName>SbieDrv</TargetName> <TargetName>SbieDrv</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<TargetExt>.sys</TargetExt>
<GenerateManifest>false</GenerateManifest>
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
<TargetName>SbieDrv</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@ -187,6 +235,52 @@
<Message>Test Signing binary</Message> <Message>Test Signing binary</Message>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalOptions>/Wv:18 %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions>POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<SubSystem>Native</SubSystem>
<AdditionalDependencies>ntoskrnl.lib;hal.lib;wmilib.lib;fltmgr.lib;Ksecdd.lib;Fwpkclnt.lib;ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
<EntryPointSymbol>DriverEntry</EntryPointSymbol>
<RandomizedBaseAddress>
</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<Driver>Driver</Driver>
<AdditionalOptions>/INTEGRITYCHECK %(AdditionalOptions)</AdditionalOptions>
<AllowIsolation>
</AllowIsolation>
<EnableUAC>
</EnableUAC>
<UACExecutionLevel>
</UACExecutionLevel>
<UACUIAccess>
</UACUIAccess>
<ManifestFile>
</ManifestFile>
<BaseAddress>
</BaseAddress>
<OptimizeReferences>false</OptimizeReferences>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
</Link>
<DriverSign>
<FileDigestAlgorithm>SHA256</FileDigestAlgorithm>
</DriverSign>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Test Signing binary</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<ClCompile> <ClCompile>
<DisableSpecificWarnings> <DisableSpecificWarnings>
@ -263,67 +357,131 @@
<Message>Test Signing binary</Message> <Message>Test Signing binary</Message>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
<ClCompile>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PreprocessorDefinitions>POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<CallingConvention />
</ClCompile>
<Link>
<SubSystem>Native</SubSystem>
<AdditionalDependencies>ntoskrnl.lib;hal.lib;wmilib.lib;fltmgr.lib;Ksecdd.lib;Fwpkclnt.lib;ntstrsafe.lib;%(AdditionalDependencies)</AdditionalDependencies>
<EntryPointSymbol>DriverEntry</EntryPointSymbol>
<RandomizedBaseAddress>
</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<Driver>Driver</Driver>
<AdditionalOptions>/INTEGRITYCHECK %(AdditionalOptions)</AdditionalOptions>
<AllowIsolation>
</AllowIsolation>
<EnableUAC>
</EnableUAC>
<UACExecutionLevel>
</UACExecutionLevel>
<UACUIAccess>
</UACUIAccess>
<ManifestFile>
</ManifestFile>
<BaseAddress>
</BaseAddress>
<OptimizeReferences>false</OptimizeReferences>
<EnableCOMDATFolding>false</EnableCOMDATFolding>
</Link>
<DriverSign>
<FileDigestAlgorithm>SHA256</FileDigestAlgorithm>
</DriverSign>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Test Signing binary</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\common\base64.c"> <ClCompile Include="..\..\common\base64.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\list.c"> <ClCompile Include="..\..\common\list.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\map.c"> <ClCompile Include="..\..\common\map.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\netfw.c"> <ClCompile Include="..\..\common\netfw.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\pattern.c"> <ClCompile Include="..\..\common\pattern.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\pool.c"> <ClCompile Include="..\..\common\pool.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\rbtree.c" /> <ClCompile Include="..\..\common\rbtree.c" />
<ClCompile Include="..\..\common\stream.c"> <ClCompile Include="..\..\common\stream.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\common\str_util.c"> <ClCompile Include="..\..\common\str_util.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\dll\hook_inst.c"> <ClCompile Include="..\dll\hook_inst.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="..\dll\hook_tramp.c"> <ClCompile Include="..\dll\hook_tramp.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="api.c" /> <ClCompile Include="api.c" />
<ClCompile Include="box.c" /> <ClCompile Include="box.c" />
@ -337,38 +495,53 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_flt.c"> <ClCompile Include="file_flt.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="file_xlat.c" /> <ClCompile Include="file_xlat.c" />
<ClCompile Include="file_xp.c"> <ClCompile Include="file_xp.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="gui.c" /> <ClCompile Include="gui.c" />
<ClCompile Include="gui_xp.c"> <ClCompile Include="gui_xp.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="hook.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="hook.c" />
<ClCompile Include="hook_32.c"> <ClCompile Include="hook_32.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="hook_64.c"> <ClCompile Include="hook_64.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@ -383,13 +556,17 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="key_xp.c"> <ClCompile Include="key_xp.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="log.c" /> <ClCompile Include="log.c" />
<ClCompile Include="mem.c"> <ClCompile Include="mem.c">
@ -400,20 +577,26 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="obj_xp.c"> <ClCompile Include="obj_xp.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="process.c" /> <ClCompile Include="process.c" />
<ClCompile Include="process_api.c" /> <ClCompile Include="process_api.c" />
<ClCompile Include="process_force.c" /> <ClCompile Include="process_force.c" />
<ClCompile Include="process_hook.c"> <ClCompile Include="process_hook.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
@ -426,38 +609,50 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="syscall_64.c"> <ClCompile Include="syscall_64.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="syscall_open.c"> <ClCompile Include="syscall_open.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="syscall_util.c"> <ClCompile Include="syscall_util.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="syscall_win32.c"> <ClCompile Include="syscall_win32.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="thread.c" /> <ClCompile Include="thread.c" />
<ClCompile Include="thread_token.c"> <ClCompile Include="thread_token.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="token.c" /> <ClCompile Include="token.c" />
<ClCompile Include="util.c" /> <ClCompile Include="util.c" />
@ -469,26 +664,47 @@
<FileType>Document</FileType> <FileType>Document</FileType>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</CustomBuild> </CustomBuild>
<CustomBuild Include="util_asm.asm"> <CustomBuild Include="util_asm.asm">
<FileType>Document</FileType> <FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command> <Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">ml64 -c -Cx -nologo -D_WIN64 -Zi -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">
</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">
</Outputs>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</CustomBuild> </CustomBuild>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\common\arm64_asm.h" />
<ClInclude Include="..\..\common\list.h" /> <ClInclude Include="..\..\common\list.h" />
<ClInclude Include="..\..\common\map.h" /> <ClInclude Include="..\..\common\map.h" />
<ClInclude Include="..\..\common\my_version.h" /> <ClInclude Include="..\..\common\my_version.h" />
@ -502,7 +718,9 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClInclude> </ClInclude>
<ClInclude Include="alpc.h" /> <ClInclude Include="alpc.h" />
<ClInclude Include="api.h" /> <ClInclude Include="api.h" />
@ -514,7 +732,10 @@
<ClInclude Include="driver.h" /> <ClInclude Include="driver.h" />
<ClInclude Include="file.h" /> <ClInclude Include="file.h" />
<ClInclude Include="gui.h" /> <ClInclude Include="gui.h" />
<ClInclude Include="hook.h" /> <ClInclude Include="hook.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">true</ExcludedFromBuild>
</ClInclude>
<ClInclude Include="ipc.h" /> <ClInclude Include="ipc.h" />
<ClInclude Include="key.h" /> <ClInclude Include="key.h" />
<ClInclude Include="log.h" /> <ClInclude Include="log.h" />
@ -534,6 +755,19 @@
<ItemGroup> <ItemGroup>
<ResourceCompile Include="resource.rc" /> <ResourceCompile Include="resource.rc" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<CustomBuild Include="util_arm.asm">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">armasm64 -nologo -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|ARM64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">armasm64 -nologo -Fo$(Platform)\$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|ARM64'">%(ProjectDir)$(Platform)\$(Configuration)\%(Filename).obj</Outputs>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
</CustomBuild>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>

View File

@ -241,10 +241,14 @@
<ClInclude Include="dll.h"> <ClInclude Include="dll.h">
<Filter>syscall</Filter> <Filter>syscall</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\common\arm64_asm.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<CustomBuild Include="aulldvrm.asm" /> <CustomBuild Include="aulldvrm.asm" />
<CustomBuild Include="util_asm.asm" /> <CustomBuild Include="util_asm.asm" />
<CustomBuild Include="util_arm.asm" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="resource.rc" /> <ResourceCompile Include="resource.rc" />

View File

@ -24,7 +24,9 @@
#include "api.h" #include "api.h"
#include "process.h" #include "process.h"
#include "util.h" #include "util.h"
#ifndef _M_ARM64
#include "hook.h" #include "hook.h"
#endif
#include "session.h" #include "session.h"
#include "common/my_version.h" #include "common/my_version.h"
#include "log_buff.h" #include "log_buff.h"
@ -565,14 +567,17 @@ _FX BOOLEAN Api_FastIo_DEVICE_CONTROL(
_FX NTSTATUS Api_GetVersion(PROCESS *proc, ULONG64 *parms) _FX NTSTATUS Api_GetVersion(PROCESS *proc, ULONG64 *parms)
{ {
API_GET_VERSION_ARGS *args = (API_GET_VERSION_ARGS *)parms; API_GET_VERSION_ARGS *args = (API_GET_VERSION_ARGS *)parms;
size_t len;
WCHAR *pwcResult = args->string.val;
if (pwcResult == NULL) if (args->string.val != NULL) {
return STATUS_INVALID_PARAMETER; size_t len = (wcslen(Driver_Version) + 1) * sizeof(WCHAR);
len = (wcslen(Driver_Version) + 1) * sizeof(WCHAR); ProbeForWrite(args->string.val, len, sizeof(WCHAR));
ProbeForWrite(pwcResult, len, sizeof(WCHAR)); memcpy(args->string.val, Driver_Version, len);
memcpy(pwcResult, Driver_Version, len); }
if (args->abi_ver.val != NULL) {
ProbeForWrite(args->abi_ver.val, sizeof(ULONG), sizeof(ULONG));
*args->abi_ver.val = MY_ABI_VERSION;
}
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
@ -1290,8 +1295,10 @@ _FX NTSTATUS Api_QueryDriverInfo(PROCESS* proc, ULONG64* parms)
NTSTATUS status = STATUS_SUCCESS; NTSTATUS status = STATUS_SUCCESS;
API_QUERY_DRIVER_INFO_ARGS *args = (API_QUERY_DRIVER_INFO_ARGS *)parms; API_QUERY_DRIVER_INFO_ARGS *args = (API_QUERY_DRIVER_INFO_ARGS *)parms;
if (proc) if (proc) {
status = STATUS_NOT_IMPLEMENTED; status = STATUS_NOT_IMPLEMENTED;
goto finish;
}
__try { __try {
@ -1327,6 +1334,10 @@ _FX NTSTATUS Api_QueryDriverInfo(PROCESS* proc, ULONG64* parms)
FeatureFlags |= SBIE_FEATURE_FLAG_COMPARTMENTS; FeatureFlags |= SBIE_FEATURE_FLAG_COMPARTMENTS;
} }
#ifdef _M_ARM64
FeatureFlags |= SBIE_FEATURE_FLAG_NEW_ARCH;
#endif
*data = FeatureFlags; *data = FeatureFlags;
} }
else if (args->info_class.val == -1) { else if (args->info_class.val == -1) {
@ -1350,6 +1361,7 @@ _FX NTSTATUS Api_QueryDriverInfo(PROCESS* proc, ULONG64* parms)
status = GetExceptionCode(); status = GetExceptionCode();
} }
finish:
return status; return status;
} }

Some files were not shown because too many files have changed in this diff Show More