mirror of
https://gitgud.io/yuv420p10le/plexmediaserver_crack
synced 2025-07-05 00:44:46 +00:00
Initial commit.
This commit is contained in:
commit
97eeb1350c
238
.gitignore
vendored
Normal file
238
.gitignore
vendored
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
*.userprefs
|
||||||
|
mono_crash.*
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Ww][Ii][Nn]32/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
[Ll]ogs/
|
||||||
|
.vs/
|
||||||
|
Generated\ Files/
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
nunit-*.xml
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
StyleCopReport.xml
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_h.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.log
|
||||||
|
*.tlog
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
_Chutzpah*
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
*.e2e
|
||||||
|
$tf/
|
||||||
|
*.gpState
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
_TeamCity*
|
||||||
|
*.dotCover
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
coverage*.json
|
||||||
|
coverage*.xml
|
||||||
|
coverage*.info
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
.sass-cache/
|
||||||
|
[Ee]xpress/
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
publish/
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
PublishScripts/
|
||||||
|
*.nupkg*.snupkg**/[Pp]ackages/*!**/[Pp]ackages/build/*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
*.appxbundle
|
||||||
|
*.appxupload*.[Cc]ache!?*.[Cc]ache/
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
Generated_Code/
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- [Bb]ackup.rdl
|
||||||
|
*- [Bb]ackup ([0-9]).rdl
|
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
FakesAssemblies/
|
||||||
|
*.GhostDoc.xml
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
*.plg
|
||||||
|
*.opt
|
||||||
|
*.vbw
|
||||||
|
*.vbp
|
||||||
|
*.dsw
|
||||||
|
*.dsp
|
||||||
|
*.ncb
|
||||||
|
*.aps
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
.fake/
|
||||||
|
.cr/personal
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
*.tss
|
||||||
|
*.jmconfig
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
OpenCover/
|
||||||
|
ASALocalRun/
|
||||||
|
*.binlog
|
||||||
|
*.nvuser
|
||||||
|
.mfractor/
|
||||||
|
.localhistory/
|
||||||
|
.vshistory/
|
||||||
|
healthchecksdb
|
||||||
|
MigrationBackup/
|
||||||
|
.ionide/
|
||||||
|
FodyWeavers.xsd
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
*.code-workspace
|
||||||
|
.history/
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
*.sln.iml
|
||||||
|
*.d
|
||||||
|
*.slo
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
*.dll
|
||||||
|
*.mod
|
||||||
|
*.smod
|
||||||
|
*.lai
|
||||||
|
*.la
|
||||||
|
*.a
|
||||||
|
*.lib
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
CMakeLists.txt.user
|
||||||
|
CMakeCache.txt
|
||||||
|
CMakeFiles
|
||||||
|
CMakeScripts
|
||||||
|
Testing
|
||||||
|
Makefile
|
||||||
|
cmake_install.cmake
|
||||||
|
install_manifest.txt
|
||||||
|
compile_commands.json
|
||||||
|
CTestTestfile.cmake
|
||||||
|
_deps
|
52
README.md
Normal file
52
README.md
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# plexmediaserver_crack
|
||||||
|
|
||||||
|
Enables Godmode, unlocking *all features* on (hardware transcoding, intro/credit detection, HEVC transcoding, etc..) on Plex Media Server. Including Plex Pass features without a required subscription, and including early-access/development/Plex Ninja features.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
1. Download `IPHLPAPI.dll` from [the latest release](https://github.com/yuv420p10le/plexmediaserver_crack/releases/latest/download/IPHLPAPI.dll) and put it in your Plex Media Server's installation folder. (e.g. `C:\Program Files\Plex\Plex Media Server`)
|
||||||
|
2. Restart Plex Media Server. All features will be unlocked.
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
x86-64 only.
|
||||||
|
|
||||||
|
Written for [linuxserver/docker-plex](https://github.com/linuxserver/docker-plex).
|
||||||
|
|
||||||
|
Get the [latest amd64 build of patchelf](https://github.com/NixOS/patchelf/releases/latest), extract the inner `./bin/patchelf` file to your `/config` folder (the same one where `"Library"` is located). Ensure it has execute permissions.
|
||||||
|
|
||||||
|
Download `plexmediaserver_crack.so` from [the latest release](https://github.com/yuv420p10le/plexmediaserver_crack/releases/latest/download/plexmediaserver_crack.so) and save it somewhere. If running under Docker, `/config` works. Otherwise, use a directory that is readable by the user running Plex Media Server.
|
||||||
|
|
||||||
|
Execute the following commands:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker exec -it plex ln -s /config/plexmediaserver_crack.so /usr/lib/plexmediaserver/lib/plexmediaserver_crack.so
|
||||||
|
docker exec -it plex /config/patchelf --remove-needed plexmediaserver_crack.so "/usr/lib/plexmediaserver/lib/libsoci_core.so"
|
||||||
|
docker exec -it plex /config/patchelf --add-needed plexmediaserver_crack.so "/usr/lib/plexmediaserver/lib/libsoci_core.so"
|
||||||
|
```
|
||||||
|
|
||||||
|
Now restart Plex Media Server. All features will be unlocked.
|
||||||
|
|
||||||
|
This will NOT persist through Docker image updates, as rebuilding the container will copy libraries freshly from the image.
|
||||||
|
|
||||||
|
### Building
|
||||||
|
|
||||||
|
#### Windows
|
||||||
|
|
||||||
|
Build using Visual Studio 2022, C++20.
|
||||||
|
|
||||||
|
#### Linux
|
||||||
|
|
||||||
|
[linuxserver/docker-plex](https://github.com/linuxserver/docker-plex)'s image uses GLIBC 2.35, and Debian stable (bookworm, as of now) is at 2.36. Use a host with an older version to build (e.g. Debian Bullseye).
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
* For intro/credit detection, go to Settings -> Library -> Marker source; and select the "local detection only" option.
|
||||||
|
* If hardware transcoding (or any other feature) does not work, it should not be related to this repository. Use Google to troubleshoot why said feature doesn't work on your setup specifically.
|
||||||
|
|
||||||
|
### Screenshots
|
||||||
|
|
||||||
|
 
|
||||||
|

|
18
linux/CMakeLists.txt
Normal file
18
linux/CMakeLists.txt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.18)
|
||||||
|
project(plexmediaserver_crack)
|
||||||
|
SET(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
add_compile_options(-Wall -Wextra -Werror)
|
||||||
|
|
||||||
|
set(SOURCES main.cpp hook.cpp)
|
||||||
|
set(HEADERS hook.hpp)
|
||||||
|
|
||||||
|
add_library(plexmediaserver_crack SHARED ${SOURCES} ${HEADERS})
|
||||||
|
set_target_properties(plexmediaserver_crack PROPERTIES PREFIX "")
|
||||||
|
set_target_properties(plexmediaserver_crack PROPERTIES LINK_FLAGS "-static-libstdc++ -static-libgcc")
|
||||||
|
set_target_properties(plexmediaserver_crack PROPERTIES OUTPUT_NAME "plexmediaserver_crack")
|
||||||
|
target_link_libraries(plexmediaserver_crack PUBLIC rt)
|
||||||
|
target_include_directories(plexmediaserver_crack PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
122
linux/hook.cpp
Normal file
122
linux/hook.cpp
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
#include "hook.hpp"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <cstring>
|
||||||
|
#include <sstream>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
|
||||||
|
bool get_dottext_info(uintptr_t& start, uintptr_t& end)
|
||||||
|
{
|
||||||
|
std::ifstream file("/proc/self/maps");
|
||||||
|
std::string line;
|
||||||
|
|
||||||
|
while(std::getline(file, line))
|
||||||
|
{
|
||||||
|
// I don't understand Linux :|
|
||||||
|
// Only .text should have `r-xp`. This works I guess..
|
||||||
|
if(line.find("Plex Media Server") != std::string::npos && line.find("r-xp") != std::string::npos)
|
||||||
|
{
|
||||||
|
auto range = line.substr(0, line.find(' '));
|
||||||
|
start = std::stoull(line.substr(0, line.find('-')), nullptr, 16);
|
||||||
|
end = std::stoull(line.substr(line.find('-') + 1), nullptr, 16);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
uintptr_t sig_scan(const uintptr_t start, const uintptr_t end, std::string_view pattern)
|
||||||
|
{
|
||||||
|
constexpr const uint16_t WILDCARD = 0xFFFF;
|
||||||
|
std::vector<uint16_t> pattern_vec;
|
||||||
|
|
||||||
|
for(uintptr_t i = 0; i < pattern.length(); i++)
|
||||||
|
{
|
||||||
|
if(pattern[i] == ' ')
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pattern[i] == '?')
|
||||||
|
{
|
||||||
|
if(pattern[i + 1] == '?')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
pattern_vec.push_back(WILDCARD);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
pattern_vec.push_back(static_cast<uint16_t>(std::strtol(&pattern[i], nullptr, 16)));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto vec_length = pattern_vec.size();
|
||||||
|
|
||||||
|
for(uintptr_t i = start; i < end; i++)
|
||||||
|
{
|
||||||
|
for(uintptr_t x = 0; x < vec_length; x++)
|
||||||
|
{
|
||||||
|
const auto mem = *reinterpret_cast<uint8_t*>(i + x);
|
||||||
|
|
||||||
|
if(pattern_vec[x] != WILDCARD && mem != pattern_vec[x])
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(x == vec_length - 1)
|
||||||
|
{
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t hook_is_feature_available([[maybe_unused]] uintptr_t user, [[maybe_unused]] const char* feature)
|
||||||
|
{
|
||||||
|
// `feature` is a GUID. You can use it to enable certain features rather than Godmode (everything); but there's no reason to limit ourselves.. is there?
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void hook()
|
||||||
|
{
|
||||||
|
uintptr_t dottext_start;
|
||||||
|
uintptr_t dottext_end;
|
||||||
|
|
||||||
|
if(!get_dottext_info(dottext_start, dottext_end))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto _is_feature_available = sig_scan(dottext_start, dottext_end, "55 48 89 E5 41 57 41 56 53 50 49 89 F7 48 89 FB 4C 8D 77 08 4C 89 F7 E8 ? ? ? ? 48 8D 7B 30");
|
||||||
|
|
||||||
|
if(_is_feature_available == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Jumps to specified address
|
||||||
|
uint8_t shellcode[] =
|
||||||
|
{
|
||||||
|
0x48, 0xB8, // movq rax, ?
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x50, // push rax
|
||||||
|
0xC3 // ret
|
||||||
|
};
|
||||||
|
|
||||||
|
*reinterpret_cast<decltype(&hook_is_feature_available)*>(&shellcode[2]) = &hook_is_feature_available;
|
||||||
|
|
||||||
|
mprotect(reinterpret_cast<void*>(_is_feature_available), sizeof(shellcode), PROT_READ|PROT_WRITE|PROT_EXEC);
|
||||||
|
memcpy(reinterpret_cast<void*>(_is_feature_available), shellcode, sizeof(shellcode));
|
||||||
|
mprotect(reinterpret_cast<void*>(_is_feature_available), sizeof(shellcode), PROT_READ|PROT_EXEC);
|
||||||
|
}
|
9
linux/hook.hpp
Normal file
9
linux/hook.hpp
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
bool get_dottext_info(uintptr_t& start, uintptr_t& end);
|
||||||
|
uintptr_t sig_scan(const uintptr_t start, const uintptr_t end, std::string_view pattern);
|
||||||
|
uint64_t hook_is_feature_available(uintptr_t user, const char* feature);
|
||||||
|
void hook();
|
6
linux/main.cpp
Normal file
6
linux/main.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "hook.hpp"
|
||||||
|
|
||||||
|
__attribute__((constructor)) void init_so()
|
||||||
|
{
|
||||||
|
hook();
|
||||||
|
}
|
16
windows/dllmain.cpp
Normal file
16
windows/dllmain.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <Windows.h>
|
||||||
|
|
||||||
|
#include "proxy.hpp"
|
||||||
|
#include "hook.hpp"
|
||||||
|
|
||||||
|
BOOL APIENTRY DllMain([[maybe_unused]] HMODULE hModule, DWORD ul_reason_for_call, [[maybe_unused]] LPVOID lpReserved)
|
||||||
|
{
|
||||||
|
if(ul_reason_for_call == DLL_PROCESS_ATTACH)
|
||||||
|
{
|
||||||
|
hook();
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
113
windows/hook.cpp
Normal file
113
windows/hook.cpp
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
#include "hook.hpp"
|
||||||
|
|
||||||
|
#include <MinHook.h>
|
||||||
|
#include <format>
|
||||||
|
#include <vector>
|
||||||
|
#include <dbghelp.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
uintptr_t _is_feature_available;
|
||||||
|
|
||||||
|
bool get_section_info(std::string_view name, uintptr_t& start, uintptr_t& end)
|
||||||
|
{
|
||||||
|
char filename[MAX_PATH];
|
||||||
|
GetModuleFileNameA(NULL, filename, sizeof(filename));
|
||||||
|
|
||||||
|
auto cur_handle = GetModuleHandleA(filename);
|
||||||
|
IMAGE_NT_HEADERS* nt_hdr = ImageNtHeader(cur_handle);
|
||||||
|
IMAGE_SECTION_HEADER* section_hdr = reinterpret_cast<IMAGE_SECTION_HEADER*>(nt_hdr + 1);
|
||||||
|
uintptr_t image_base = reinterpret_cast<uintptr_t>(cur_handle);
|
||||||
|
|
||||||
|
for(int i = 0; i < nt_hdr->FileHeader.NumberOfSections; i++, section_hdr++)
|
||||||
|
{
|
||||||
|
auto section_header_name = reinterpret_cast<char*>(section_hdr->Name);
|
||||||
|
|
||||||
|
if(name == section_header_name)
|
||||||
|
{
|
||||||
|
uintptr_t base_module = image_base + section_hdr->VirtualAddress;
|
||||||
|
start = base_module;
|
||||||
|
end = base_module + section_hdr->Misc.VirtualSize - 1;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
uintptr_t sig_scan(const uintptr_t start, const uintptr_t end, std::string_view pattern)
|
||||||
|
{
|
||||||
|
constexpr const uint16_t WILDCARD = 0xFFFF;
|
||||||
|
std::vector<uint16_t> pattern_vec;
|
||||||
|
|
||||||
|
for(uintptr_t i = 0; i < pattern.length(); i++)
|
||||||
|
{
|
||||||
|
if(pattern[i] == ' ')
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pattern[i] == '?')
|
||||||
|
{
|
||||||
|
if(pattern[i + 1] == '?')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
pattern_vec.push_back(WILDCARD);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
pattern_vec.push_back(static_cast<uint16_t>(std::strtol(&pattern[i], nullptr, 16)));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto vec_length = pattern_vec.size();
|
||||||
|
|
||||||
|
for(uintptr_t i = start; i < end; i++)
|
||||||
|
{
|
||||||
|
for(uintptr_t x = 0; x < vec_length; x++)
|
||||||
|
{
|
||||||
|
const auto mem = *reinterpret_cast<uint8_t*>(i + x);
|
||||||
|
|
||||||
|
if(pattern_vec[x] != WILDCARD && mem != pattern_vec[x])
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(x == vec_length - 1)
|
||||||
|
{
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t hook_is_feature_available([[maybe_unused]] uintptr_t user, [[maybe_unused]] const char* feature)
|
||||||
|
{
|
||||||
|
// `feature` is a GUID. You can use it to enable certain features rather than Godmode (everything); but there's no reason to limit ourselves.. is there?
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void hook()
|
||||||
|
{
|
||||||
|
uintptr_t dottext_start;
|
||||||
|
uintptr_t dottext_end;
|
||||||
|
|
||||||
|
if(!get_section_info(".text", dottext_start, dottext_end))
|
||||||
|
{
|
||||||
|
std::cerr << "[ERR] [plexmediaserver_crack] .text section not found; aborting.\n";
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_is_feature_available = sig_scan(dottext_start, dottext_end, "41 54 41 56 41 57 48 83 EC 20 4C 8B F9 4C 8B F2");
|
||||||
|
|
||||||
|
MH_Initialize();
|
||||||
|
MH_CreateHook(reinterpret_cast<void*>(_is_feature_available), &hook_is_feature_available, reinterpret_cast<void**>(&_is_feature_available));
|
||||||
|
MH_EnableHook(MH_ALL_HOOKS);
|
||||||
|
}
|
9
windows/hook.hpp
Normal file
9
windows/hook.hpp
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
bool get_section_info(std::string_view name, uintptr_t& start, uintptr_t& end);
|
||||||
|
uintptr_t sig_scan(const uintptr_t start, const uintptr_t end, std::string_view pattern);
|
||||||
|
uint64_t hook_is_feature_available(uintptr_t user, const char* feature);
|
||||||
|
void hook();
|
31
windows/plexmediaserver_crack.sln
Normal file
31
windows/plexmediaserver_crack.sln
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.9.34728.123
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "win32", "win32.vcxproj", "{8511ADC9-EC45-4C37-8936-F4556AA01C97}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{8511ADC9-EC45-4C37-8936-F4556AA01C97}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{8511ADC9-EC45-4C37-8936-F4556AA01C97}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{8511ADC9-EC45-4C37-8936-F4556AA01C97}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{8511ADC9-EC45-4C37-8936-F4556AA01C97}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{8511ADC9-EC45-4C37-8936-F4556AA01C97}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{8511ADC9-EC45-4C37-8936-F4556AA01C97}.Release|x64.Build.0 = Release|x64
|
||||||
|
{8511ADC9-EC45-4C37-8936-F4556AA01C97}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{8511ADC9-EC45-4C37-8936-F4556AA01C97}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {FCF6F8A5-FC33-4F65-9C30-61EE29E93806}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
313
windows/proxy.hpp
Normal file
313
windows/proxy.hpp
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
#ifdef _WIN64
|
||||||
|
#define DLLPATH "\\\\.\\GLOBALROOT\\SystemRoot\\System32\\IPHLPAPI.DLL"
|
||||||
|
#else
|
||||||
|
#define DLLPATH "\\\\.\\GLOBALROOT\\SystemRoot\\SysWOW64\\IPHLPAPI.DLL"
|
||||||
|
#endif // _WIN64
|
||||||
|
|
||||||
|
#pragma comment(linker, "/EXPORT:AddIPAddress=" DLLPATH ".AddIPAddress")
|
||||||
|
#pragma comment(linker, "/EXPORT:AllocateAndGetInterfaceInfoFromStack=" DLLPATH ".AllocateAndGetInterfaceInfoFromStack")
|
||||||
|
#pragma comment(linker, "/EXPORT:AllocateAndGetIpAddrTableFromStack=" DLLPATH ".AllocateAndGetIpAddrTableFromStack")
|
||||||
|
#pragma comment(linker, "/EXPORT:CancelIPChangeNotify=" DLLPATH ".CancelIPChangeNotify")
|
||||||
|
#pragma comment(linker, "/EXPORT:CancelIfTimestampConfigChange=" DLLPATH ".CancelIfTimestampConfigChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:CancelMibChangeNotify2=" DLLPATH ".CancelMibChangeNotify2")
|
||||||
|
#pragma comment(linker, "/EXPORT:CaptureInterfaceHardwareCrossTimestamp=" DLLPATH ".CaptureInterfaceHardwareCrossTimestamp")
|
||||||
|
#pragma comment(linker, "/EXPORT:CloseCompartment=" DLLPATH ".CloseCompartment")
|
||||||
|
#pragma comment(linker, "/EXPORT:CloseGetIPPhysicalInterfaceForDestination=" DLLPATH ".CloseGetIPPhysicalInterfaceForDestination")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertCompartmentGuidToId=" DLLPATH ".ConvertCompartmentGuidToId")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertCompartmentIdToGuid=" DLLPATH ".ConvertCompartmentIdToGuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertGuidToStringA=" DLLPATH ".ConvertGuidToStringA")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertGuidToStringW=" DLLPATH ".ConvertGuidToStringW")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceAliasToLuid=" DLLPATH ".ConvertInterfaceAliasToLuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceGuidToLuid=" DLLPATH ".ConvertInterfaceGuidToLuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceIndexToLuid=" DLLPATH ".ConvertInterfaceIndexToLuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceLuidToAlias=" DLLPATH ".ConvertInterfaceLuidToAlias")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceLuidToGuid=" DLLPATH ".ConvertInterfaceLuidToGuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceLuidToIndex=" DLLPATH ".ConvertInterfaceLuidToIndex")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceLuidToNameA=" DLLPATH ".ConvertInterfaceLuidToNameA")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceLuidToNameW=" DLLPATH ".ConvertInterfaceLuidToNameW")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceNameToLuidA=" DLLPATH ".ConvertInterfaceNameToLuidA")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfaceNameToLuidW=" DLLPATH ".ConvertInterfaceNameToLuidW")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertInterfacePhysicalAddressToLuid=" DLLPATH ".ConvertInterfacePhysicalAddressToLuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertIpv4MaskToLength=" DLLPATH ".ConvertIpv4MaskToLength")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertLengthToIpv4Mask=" DLLPATH ".ConvertLengthToIpv4Mask")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertRemoteInterfaceAliasToLuid=" DLLPATH ".ConvertRemoteInterfaceAliasToLuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertRemoteInterfaceGuidToLuid=" DLLPATH ".ConvertRemoteInterfaceGuidToLuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertRemoteInterfaceIndexToLuid=" DLLPATH ".ConvertRemoteInterfaceIndexToLuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertRemoteInterfaceLuidToAlias=" DLLPATH ".ConvertRemoteInterfaceLuidToAlias")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertRemoteInterfaceLuidToGuid=" DLLPATH ".ConvertRemoteInterfaceLuidToGuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertRemoteInterfaceLuidToIndex=" DLLPATH ".ConvertRemoteInterfaceLuidToIndex")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertStringToGuidA=" DLLPATH ".ConvertStringToGuidA")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertStringToGuidW=" DLLPATH ".ConvertStringToGuidW")
|
||||||
|
#pragma comment(linker, "/EXPORT:ConvertStringToInterfacePhysicalAddress=" DLLPATH ".ConvertStringToInterfacePhysicalAddress")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateAnycastIpAddressEntry=" DLLPATH ".CreateAnycastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateCompartment=" DLLPATH ".CreateCompartment")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateIpForwardEntry=" DLLPATH ".CreateIpForwardEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateIpForwardEntry2=" DLLPATH ".CreateIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateIpNetEntry=" DLLPATH ".CreateIpNetEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateIpNetEntry2=" DLLPATH ".CreateIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreatePersistentTcpPortReservation=" DLLPATH ".CreatePersistentTcpPortReservation")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreatePersistentUdpPortReservation=" DLLPATH ".CreatePersistentUdpPortReservation")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateProxyArpEntry=" DLLPATH ".CreateProxyArpEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateSortedAddressPairs=" DLLPATH ".CreateSortedAddressPairs")
|
||||||
|
#pragma comment(linker, "/EXPORT:CreateUnicastIpAddressEntry=" DLLPATH ".CreateUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteAnycastIpAddressEntry=" DLLPATH ".DeleteAnycastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteCompartment=" DLLPATH ".DeleteCompartment")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteIPAddress=" DLLPATH ".DeleteIPAddress")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteIpForwardEntry=" DLLPATH ".DeleteIpForwardEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteIpForwardEntry2=" DLLPATH ".DeleteIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteIpNetEntry=" DLLPATH ".DeleteIpNetEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteIpNetEntry2=" DLLPATH ".DeleteIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeletePersistentTcpPortReservation=" DLLPATH ".DeletePersistentTcpPortReservation")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeletePersistentUdpPortReservation=" DLLPATH ".DeletePersistentUdpPortReservation")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteProxyArpEntry=" DLLPATH ".DeleteProxyArpEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:DeleteUnicastIpAddressEntry=" DLLPATH ".DeleteUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:DisableMediaSense=" DLLPATH ".DisableMediaSense")
|
||||||
|
#pragma comment(linker, "/EXPORT:EnableRouter=" DLLPATH ".EnableRouter")
|
||||||
|
#pragma comment(linker, "/EXPORT:FlushIpNetTable=" DLLPATH ".FlushIpNetTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:FlushIpNetTable2=" DLLPATH ".FlushIpNetTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:FlushIpPathTable=" DLLPATH ".FlushIpPathTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:FreeDnsSettings=" DLLPATH ".FreeDnsSettings")
|
||||||
|
#pragma comment(linker, "/EXPORT:FreeInterfaceDnsSettings=" DLLPATH ".FreeInterfaceDnsSettings")
|
||||||
|
#pragma comment(linker, "/EXPORT:FreeMibTable=" DLLPATH ".FreeMibTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetAdapterIndex=" DLLPATH ".GetAdapterIndex")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetAdapterOrderMap=" DLLPATH ".GetAdapterOrderMap")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetAdaptersAddresses=" DLLPATH ".GetAdaptersAddresses")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetAdaptersInfo=" DLLPATH ".GetAdaptersInfo")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetAnycastIpAddressEntry=" DLLPATH ".GetAnycastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetAnycastIpAddressTable=" DLLPATH ".GetAnycastIpAddressTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetBestInterface=" DLLPATH ".GetBestInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetBestInterfaceEx=" DLLPATH ".GetBestInterfaceEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetBestRoute=" DLLPATH ".GetBestRoute")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetBestRoute2=" DLLPATH ".GetBestRoute2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetCurrentThreadCompartmentId=" DLLPATH ".GetCurrentThreadCompartmentId")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetCurrentThreadCompartmentScope=" DLLPATH ".GetCurrentThreadCompartmentScope")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetDefaultCompartmentId=" DLLPATH ".GetDefaultCompartmentId")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetDnsSettings=" DLLPATH ".GetDnsSettings")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetExtendedTcpTable=" DLLPATH ".GetExtendedTcpTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetExtendedUdpTable=" DLLPATH ".GetExtendedUdpTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetFriendlyIfIndex=" DLLPATH ".GetFriendlyIfIndex")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIcmpStatistics=" DLLPATH ".GetIcmpStatistics")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIcmpStatisticsEx=" DLLPATH ".GetIcmpStatisticsEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIfEntry=" DLLPATH ".GetIfEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIfEntry2=" DLLPATH ".GetIfEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIfEntry2Ex=" DLLPATH ".GetIfEntry2Ex")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIfStackTable=" DLLPATH ".GetIfStackTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIfTable=" DLLPATH ".GetIfTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIfTable2=" DLLPATH ".GetIfTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIfTable2Ex=" DLLPATH ".GetIfTable2Ex")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetInterfaceActiveTimestampCapabilities=" DLLPATH ".GetInterfaceActiveTimestampCapabilities")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetInterfaceCompartmentId=" DLLPATH ".GetInterfaceCompartmentId")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetInterfaceCurrentTimestampCapabilities=" DLLPATH ".GetInterfaceCurrentTimestampCapabilities")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetInterfaceDnsSettings=" DLLPATH ".GetInterfaceDnsSettings")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetInterfaceHardwareTimestampCapabilities=" DLLPATH ".GetInterfaceHardwareTimestampCapabilities")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetInterfaceInfo=" DLLPATH ".GetInterfaceInfo")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetInterfaceSupportedTimestampCapabilities=" DLLPATH ".GetInterfaceSupportedTimestampCapabilities")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetInvertedIfStackTable=" DLLPATH ".GetInvertedIfStackTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpAddrTable=" DLLPATH ".GetIpAddrTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpErrorString=" DLLPATH ".GetIpErrorString")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpForwardEntry2=" DLLPATH ".GetIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpForwardTable=" DLLPATH ".GetIpForwardTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpForwardTable2=" DLLPATH ".GetIpForwardTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpInterfaceEntry=" DLLPATH ".GetIpInterfaceEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpInterfaceTable=" DLLPATH ".GetIpInterfaceTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpNetEntry2=" DLLPATH ".GetIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpNetTable=" DLLPATH ".GetIpNetTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpNetTable2=" DLLPATH ".GetIpNetTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpNetworkConnectionBandwidthEstimates=" DLLPATH ".GetIpNetworkConnectionBandwidthEstimates")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpPathEntry=" DLLPATH ".GetIpPathEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpPathTable=" DLLPATH ".GetIpPathTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpStatistics=" DLLPATH ".GetIpStatistics")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetIpStatisticsEx=" DLLPATH ".GetIpStatisticsEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetJobCompartmentId=" DLLPATH ".GetJobCompartmentId")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetMulticastIpAddressEntry=" DLLPATH ".GetMulticastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetMulticastIpAddressTable=" DLLPATH ".GetMulticastIpAddressTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetNetworkConnectivityHint=" DLLPATH ".GetNetworkConnectivityHint")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetNetworkConnectivityHintForInterface=" DLLPATH ".GetNetworkConnectivityHintForInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetNetworkInformation=" DLLPATH ".GetNetworkInformation")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetNetworkParams=" DLLPATH ".GetNetworkParams")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetNumberOfInterfaces=" DLLPATH ".GetNumberOfInterfaces")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetOwnerModuleFromPidAndInfo=" DLLPATH ".GetOwnerModuleFromPidAndInfo")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetOwnerModuleFromTcp6Entry=" DLLPATH ".GetOwnerModuleFromTcp6Entry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetOwnerModuleFromTcpEntry=" DLLPATH ".GetOwnerModuleFromTcpEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetOwnerModuleFromUdp6Entry=" DLLPATH ".GetOwnerModuleFromUdp6Entry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetOwnerModuleFromUdpEntry=" DLLPATH ".GetOwnerModuleFromUdpEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetPerAdapterInfo=" DLLPATH ".GetPerAdapterInfo")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetPerTcp6ConnectionEStats=" DLLPATH ".GetPerTcp6ConnectionEStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetPerTcp6ConnectionStats=" DLLPATH ".GetPerTcp6ConnectionStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetPerTcpConnectionEStats=" DLLPATH ".GetPerTcpConnectionEStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetPerTcpConnectionStats=" DLLPATH ".GetPerTcpConnectionStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetRTTAndHopCount=" DLLPATH ".GetRTTAndHopCount")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetSessionCompartmentId=" DLLPATH ".GetSessionCompartmentId")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetTcp6Table=" DLLPATH ".GetTcp6Table")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetTcp6Table2=" DLLPATH ".GetTcp6Table2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetTcpStatistics=" DLLPATH ".GetTcpStatistics")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetTcpStatisticsEx=" DLLPATH ".GetTcpStatisticsEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetTcpStatisticsEx2=" DLLPATH ".GetTcpStatisticsEx2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetTcpTable=" DLLPATH ".GetTcpTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetTcpTable2=" DLLPATH ".GetTcpTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetTeredoPort=" DLLPATH ".GetTeredoPort")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetUdp6Table=" DLLPATH ".GetUdp6Table")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetUdpStatistics=" DLLPATH ".GetUdpStatistics")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetUdpStatisticsEx=" DLLPATH ".GetUdpStatisticsEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetUdpStatisticsEx2=" DLLPATH ".GetUdpStatisticsEx2")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetUdpTable=" DLLPATH ".GetUdpTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetUniDirectionalAdapterInfo=" DLLPATH ".GetUniDirectionalAdapterInfo")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetUnicastIpAddressEntry=" DLLPATH ".GetUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetUnicastIpAddressTable=" DLLPATH ".GetUnicastIpAddressTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:GetWPAOACSupportLevel=" DLLPATH ".GetWPAOACSupportLevel")
|
||||||
|
#pragma comment(linker, "/EXPORT:Icmp6CreateFile=" DLLPATH ".Icmp6CreateFile")
|
||||||
|
#pragma comment(linker, "/EXPORT:Icmp6ParseReplies=" DLLPATH ".Icmp6ParseReplies")
|
||||||
|
#pragma comment(linker, "/EXPORT:Icmp6SendEcho2=" DLLPATH ".Icmp6SendEcho2")
|
||||||
|
#pragma comment(linker, "/EXPORT:IcmpCloseHandle=" DLLPATH ".IcmpCloseHandle")
|
||||||
|
#pragma comment(linker, "/EXPORT:IcmpCreateFile=" DLLPATH ".IcmpCreateFile")
|
||||||
|
#pragma comment(linker, "/EXPORT:IcmpParseReplies=" DLLPATH ".IcmpParseReplies")
|
||||||
|
#pragma comment(linker, "/EXPORT:IcmpSendEcho=" DLLPATH ".IcmpSendEcho")
|
||||||
|
#pragma comment(linker, "/EXPORT:IcmpSendEcho2=" DLLPATH ".IcmpSendEcho2")
|
||||||
|
#pragma comment(linker, "/EXPORT:IcmpSendEcho2Ex=" DLLPATH ".IcmpSendEcho2Ex")
|
||||||
|
#pragma comment(linker, "/EXPORT:InitializeCompartmentEntry=" DLLPATH ".InitializeCompartmentEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InitializeIpForwardEntry=" DLLPATH ".InitializeIpForwardEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InitializeIpInterfaceEntry=" DLLPATH ".InitializeIpInterfaceEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InitializeUnicastIpAddressEntry=" DLLPATH ".InitializeUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalCleanupPersistentStore=" DLLPATH ".InternalCleanupPersistentStore")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalCreateAnycastIpAddressEntry=" DLLPATH ".InternalCreateAnycastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalCreateIpForwardEntry=" DLLPATH ".InternalCreateIpForwardEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalCreateIpForwardEntry2=" DLLPATH ".InternalCreateIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalCreateIpNetEntry=" DLLPATH ".InternalCreateIpNetEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalCreateIpNetEntry2=" DLLPATH ".InternalCreateIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalCreateOrRefIpForwardEntry2=" DLLPATH ".InternalCreateOrRefIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalCreateUnicastIpAddressEntry=" DLLPATH ".InternalCreateUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalDeleteAnycastIpAddressEntry=" DLLPATH ".InternalDeleteAnycastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalDeleteIpForwardEntry=" DLLPATH ".InternalDeleteIpForwardEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalDeleteIpForwardEntry2=" DLLPATH ".InternalDeleteIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalDeleteIpNetEntry=" DLLPATH ".InternalDeleteIpNetEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalDeleteIpNetEntry2=" DLLPATH ".InternalDeleteIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalDeleteUnicastIpAddressEntry=" DLLPATH ".InternalDeleteUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalFindInterfaceByAddress=" DLLPATH ".InternalFindInterfaceByAddress")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetAnycastIpAddressEntry=" DLLPATH ".InternalGetAnycastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetAnycastIpAddressTable=" DLLPATH ".InternalGetAnycastIpAddressTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetBoundTcp6EndpointTable=" DLLPATH ".InternalGetBoundTcp6EndpointTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetBoundTcpEndpointTable=" DLLPATH ".InternalGetBoundTcpEndpointTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetForwardIpTable2=" DLLPATH ".InternalGetForwardIpTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIPPhysicalInterfaceForDestination=" DLLPATH ".InternalGetIPPhysicalInterfaceForDestination")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIfEntry2=" DLLPATH ".InternalGetIfEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIfTable=" DLLPATH ".InternalGetIfTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIfTable2=" DLLPATH ".InternalGetIfTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIpAddrTable=" DLLPATH ".InternalGetIpAddrTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIpForwardEntry2=" DLLPATH ".InternalGetIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIpForwardTable=" DLLPATH ".InternalGetIpForwardTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIpInterfaceEntry=" DLLPATH ".InternalGetIpInterfaceEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIpInterfaceTable=" DLLPATH ".InternalGetIpInterfaceTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIpNetEntry2=" DLLPATH ".InternalGetIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIpNetTable=" DLLPATH ".InternalGetIpNetTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetIpNetTable2=" DLLPATH ".InternalGetIpNetTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetMulticastIpAddressEntry=" DLLPATH ".InternalGetMulticastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetMulticastIpAddressTable=" DLLPATH ".InternalGetMulticastIpAddressTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetRtcSlotInformation=" DLLPATH ".InternalGetRtcSlotInformation")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcp6Table2=" DLLPATH ".InternalGetTcp6Table2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcp6TableWithOwnerModule=" DLLPATH ".InternalGetTcp6TableWithOwnerModule")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcp6TableWithOwnerPid=" DLLPATH ".InternalGetTcp6TableWithOwnerPid")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcpDynamicPortRange=" DLLPATH ".InternalGetTcpDynamicPortRange")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcpTable=" DLLPATH ".InternalGetTcpTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcpTable2=" DLLPATH ".InternalGetTcpTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcpTableEx=" DLLPATH ".InternalGetTcpTableEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcpTableWithOwnerModule=" DLLPATH ".InternalGetTcpTableWithOwnerModule")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTcpTableWithOwnerPid=" DLLPATH ".InternalGetTcpTableWithOwnerPid")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetTunnelPhysicalAdapter=" DLLPATH ".InternalGetTunnelPhysicalAdapter")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdp6Table2=" DLLPATH ".InternalGetUdp6Table2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdp6TableWithOwnerModule=" DLLPATH ".InternalGetUdp6TableWithOwnerModule")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdp6TableWithOwnerPid=" DLLPATH ".InternalGetUdp6TableWithOwnerPid")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdpDynamicPortRange=" DLLPATH ".InternalGetUdpDynamicPortRange")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdpTable=" DLLPATH ".InternalGetUdpTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdpTable2=" DLLPATH ".InternalGetUdpTable2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdpTableEx=" DLLPATH ".InternalGetUdpTableEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdpTableWithOwnerModule=" DLLPATH ".InternalGetUdpTableWithOwnerModule")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUdpTableWithOwnerPid=" DLLPATH ".InternalGetUdpTableWithOwnerPid")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUnicastIpAddressEntry=" DLLPATH ".InternalGetUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalGetUnicastIpAddressTable=" DLLPATH ".InternalGetUnicastIpAddressTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalIcmpCreateFileEx=" DLLPATH ".InternalIcmpCreateFileEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetIfEntry=" DLLPATH ".InternalSetIfEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetIpForwardEntry=" DLLPATH ".InternalSetIpForwardEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetIpForwardEntry2=" DLLPATH ".InternalSetIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetIpInterfaceEntry=" DLLPATH ".InternalSetIpInterfaceEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetIpNetEntry=" DLLPATH ".InternalSetIpNetEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetIpNetEntry2=" DLLPATH ".InternalSetIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetIpStats=" DLLPATH ".InternalSetIpStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetTcpDynamicPortRange=" DLLPATH ".InternalSetTcpDynamicPortRange")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetTcpEntry=" DLLPATH ".InternalSetTcpEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetTeredoPort=" DLLPATH ".InternalSetTeredoPort")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetUdpDynamicPortRange=" DLLPATH ".InternalSetUdpDynamicPortRange")
|
||||||
|
#pragma comment(linker, "/EXPORT:InternalSetUnicastIpAddressEntry=" DLLPATH ".InternalSetUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:IpReleaseAddress=" DLLPATH ".IpReleaseAddress")
|
||||||
|
#pragma comment(linker, "/EXPORT:IpRenewAddress=" DLLPATH ".IpRenewAddress")
|
||||||
|
#pragma comment(linker, "/EXPORT:LookupPersistentTcpPortReservation=" DLLPATH ".LookupPersistentTcpPortReservation")
|
||||||
|
#pragma comment(linker, "/EXPORT:LookupPersistentUdpPortReservation=" DLLPATH ".LookupPersistentUdpPortReservation")
|
||||||
|
#pragma comment(linker, "/EXPORT:NTPTimeToNTFileTime=" DLLPATH ".NTPTimeToNTFileTime")
|
||||||
|
#pragma comment(linker, "/EXPORT:NTTimeToNTPTime=" DLLPATH ".NTTimeToNTPTime")
|
||||||
|
#pragma comment(linker, "/EXPORT:NhGetGuidFromInterfaceName=" DLLPATH ".NhGetGuidFromInterfaceName")
|
||||||
|
#pragma comment(linker, "/EXPORT:NhGetInterfaceDescriptionFromGuid=" DLLPATH ".NhGetInterfaceDescriptionFromGuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:NhGetInterfaceNameFromDeviceGuid=" DLLPATH ".NhGetInterfaceNameFromDeviceGuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:NhGetInterfaceNameFromGuid=" DLLPATH ".NhGetInterfaceNameFromGuid")
|
||||||
|
#pragma comment(linker, "/EXPORT:NhpAllocateAndGetInterfaceInfoFromStack=" DLLPATH ".NhpAllocateAndGetInterfaceInfoFromStack")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyAddrChange=" DLLPATH ".NotifyAddrChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyCompartmentChange=" DLLPATH ".NotifyCompartmentChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyIfTimestampConfigChange=" DLLPATH ".NotifyIfTimestampConfigChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyIpInterfaceChange=" DLLPATH ".NotifyIpInterfaceChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyNetworkConnectivityHintChange=" DLLPATH ".NotifyNetworkConnectivityHintChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyRouteChange=" DLLPATH ".NotifyRouteChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyRouteChange2=" DLLPATH ".NotifyRouteChange2")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyStableUnicastIpAddressTable=" DLLPATH ".NotifyStableUnicastIpAddressTable")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyTeredoPortChange=" DLLPATH ".NotifyTeredoPortChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:NotifyUnicastIpAddressChange=" DLLPATH ".NotifyUnicastIpAddressChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:OpenCompartment=" DLLPATH ".OpenCompartment")
|
||||||
|
#pragma comment(linker, "/EXPORT:ParseNetworkString=" DLLPATH ".ParseNetworkString")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfAddFiltersToInterface=" DLLPATH ".PfAddFiltersToInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfAddGlobalFilterToInterface=" DLLPATH ".PfAddGlobalFilterToInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfBindInterfaceToIPAddress=" DLLPATH ".PfBindInterfaceToIPAddress")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfBindInterfaceToIndex=" DLLPATH ".PfBindInterfaceToIndex")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfCreateInterface=" DLLPATH ".PfCreateInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfDeleteInterface=" DLLPATH ".PfDeleteInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfDeleteLog=" DLLPATH ".PfDeleteLog")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfGetInterfaceStatistics=" DLLPATH ".PfGetInterfaceStatistics")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfMakeLog=" DLLPATH ".PfMakeLog")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfRebindFilters=" DLLPATH ".PfRebindFilters")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfRemoveFilterHandles=" DLLPATH ".PfRemoveFilterHandles")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfRemoveFiltersFromInterface=" DLLPATH ".PfRemoveFiltersFromInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfRemoveGlobalFilterFromInterface=" DLLPATH ".PfRemoveGlobalFilterFromInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfSetLogBuffer=" DLLPATH ".PfSetLogBuffer")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfTestPacket=" DLLPATH ".PfTestPacket")
|
||||||
|
#pragma comment(linker, "/EXPORT:PfUnBindInterface=" DLLPATH ".PfUnBindInterface")
|
||||||
|
#pragma comment(linker, "/EXPORT:RegisterInterfaceTimestampConfigChange=" DLLPATH ".RegisterInterfaceTimestampConfigChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:ResolveIpNetEntry2=" DLLPATH ".ResolveIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:ResolveNeighbor=" DLLPATH ".ResolveNeighbor")
|
||||||
|
#pragma comment(linker, "/EXPORT:RestoreMediaSense=" DLLPATH ".RestoreMediaSense")
|
||||||
|
#pragma comment(linker, "/EXPORT:SendARP=" DLLPATH ".SendARP")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetAdapterIpAddress=" DLLPATH ".SetAdapterIpAddress")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetCurrentThreadCompartmentId=" DLLPATH ".SetCurrentThreadCompartmentId")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetCurrentThreadCompartmentScope=" DLLPATH ".SetCurrentThreadCompartmentScope")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetDnsSettings=" DLLPATH ".SetDnsSettings")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIfEntry=" DLLPATH ".SetIfEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetInterfaceDnsSettings=" DLLPATH ".SetInterfaceDnsSettings")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIpForwardEntry=" DLLPATH ".SetIpForwardEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIpForwardEntry2=" DLLPATH ".SetIpForwardEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIpInterfaceEntry=" DLLPATH ".SetIpInterfaceEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIpNetEntry=" DLLPATH ".SetIpNetEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIpNetEntry2=" DLLPATH ".SetIpNetEntry2")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIpStatistics=" DLLPATH ".SetIpStatistics")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIpStatisticsEx=" DLLPATH ".SetIpStatisticsEx")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetIpTTL=" DLLPATH ".SetIpTTL")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetJobCompartmentId=" DLLPATH ".SetJobCompartmentId")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetNetworkInformation=" DLLPATH ".SetNetworkInformation")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetPerTcp6ConnectionEStats=" DLLPATH ".SetPerTcp6ConnectionEStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetPerTcp6ConnectionStats=" DLLPATH ".SetPerTcp6ConnectionStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetPerTcpConnectionEStats=" DLLPATH ".SetPerTcpConnectionEStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetPerTcpConnectionStats=" DLLPATH ".SetPerTcpConnectionStats")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetSessionCompartmentId=" DLLPATH ".SetSessionCompartmentId")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetTcpEntry=" DLLPATH ".SetTcpEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:SetUnicastIpAddressEntry=" DLLPATH ".SetUnicastIpAddressEntry")
|
||||||
|
#pragma comment(linker, "/EXPORT:UnenableRouter=" DLLPATH ".UnenableRouter")
|
||||||
|
#pragma comment(linker, "/EXPORT:UnregisterInterfaceTimestampConfigChange=" DLLPATH ".UnregisterInterfaceTimestampConfigChange")
|
||||||
|
#pragma comment(linker, "/EXPORT:do_echo_rep=" DLLPATH ".do_echo_rep")
|
||||||
|
#pragma comment(linker, "/EXPORT:do_echo_req=" DLLPATH ".do_echo_req")
|
||||||
|
#pragma comment(linker, "/EXPORT:if_indextoname=" DLLPATH ".if_indextoname")
|
||||||
|
#pragma comment(linker, "/EXPORT:if_nametoindex=" DLLPATH ".if_nametoindex")
|
||||||
|
#pragma comment(linker, "/EXPORT:register_icmp=" DLLPATH ".register_icmp")
|
189
windows/win32.vcxproj
Normal file
189
windows/win32.vcxproj
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<ProjectGuid>{8511adc9-ec45-4c37-8936-f4556aa01c97}</ProjectGuid>
|
||||||
|
<RootNamespace>win32</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
<ProjectName>plexmediaserver_crack</ProjectName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<TargetName>IPHLPAPI</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<TargetName>IPHLPAPI</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<TargetName>IPHLPAPI</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<TargetName>IPHLPAPI</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<VcpkgUseStatic>true</VcpkgUseStatic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<VcpkgUseStatic>true</VcpkgUseStatic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<VcpkgUseStatic>true</VcpkgUseStatic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<VcpkgUseStatic>true</VcpkgUseStatic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level4</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;PLEXLOADFILEHOOK_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<TreatWarningAsError>true</TreatWarningAsError>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
<AdditionalOptions>/pdbaltpath:%_PDB% %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AdditionalDependencies>$(CoreLibraryDependencies);%(AdditionalDependencies);Dbghelp.lib</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level4</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;PLEXLOADFILEHOOK_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<TreatWarningAsError>true</TreatWarningAsError>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
<AdditionalOptions>/pdbaltpath:%_PDB% %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AdditionalDependencies>$(CoreLibraryDependencies);%(AdditionalDependencies);Dbghelp.lib</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level4</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;PLEXLOADFILEHOOK_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<TreatWarningAsError>true</TreatWarningAsError>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
<AdditionalOptions>/pdbaltpath:%_PDB% %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AdditionalDependencies>$(CoreLibraryDependencies);%(AdditionalDependencies);Dbghelp.lib</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level4</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;PLEXLOADFILEHOOK_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<TreatWarningAsError>true</TreatWarningAsError>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
<AdditionalOptions>/pdbaltpath:%_PDB% %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AdditionalDependencies>$(CoreLibraryDependencies);%(AdditionalDependencies);Dbghelp.lib</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="dllmain.cpp" />
|
||||||
|
<ClCompile Include="hook.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="hook.hpp" />
|
||||||
|
<ClInclude Include="proxy.hpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
33
windows/win32.vcxproj.filters
Normal file
33
windows/win32.vcxproj.filters
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="dllmain.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="hook.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="hook.hpp">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="proxy.hpp">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
Loading…
x
Reference in New Issue
Block a user