revamp all the code (not done yet!)

This commit is contained in:
rjindael 2023-07-26 01:24:24 -07:00
parent 9143e64c24
commit 5ddb727d6d
No known key found for this signature in database
GPG Key ID: D069369C906CCF31
38 changed files with 1453 additions and 2251 deletions

416
.gitignore vendored
View File

@ -1,398 +1,18 @@
## Ignore Visual Studio temporary files, build results, and # GitHub official CMake gitignore template
## files generated by popular Visual Studio add-ons. # https://github.com/github/gitignore/blob/main/CMake.gitignore
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore CMakeLists.txt.user
CMakeCache.txt
# User-specific files CMakeFiles
*.rsuser CMakeScripts
*.suo Testing
*.user Makefile
*.userosscache cmake_install.cmake
*.sln.docstates install_manifest.txt
compile_commands.json
# User-specific files (MonoDevelop/Xamarin Studio) CTestTestfile.cmake
*.userprefs _deps
# Mono auto generated files # Kiseki
mono_crash.* build
.vscode
# Build results
[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/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_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 Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml

6
CMakeLists.txt Normal file
View File

@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.4)
project(Kiseki.Patcher VERSION 1.0.0)
option(COMPILE_PLAYER "Include player-specific code" OFF)
option(COMPILE_SERVER "Include server-specific code" OFF)

View File

@ -1,25 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.32014.148
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Kiseki.Patcher", "Kiseki.Patcher\Kiseki.Patcher.vcxproj", "{9D232642-FB2F-43DC-B0AC-C56E3B691233}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9D232642-FB2F-43DC-B0AC-C56E3B691233}.Debug|x86.ActiveCfg = Debug|Win32
{9D232642-FB2F-43DC-B0AC-C56E3B691233}.Debug|x86.Build.0 = Debug|Win32
{9D232642-FB2F-43DC-B0AC-C56E3B691233}.Release|x86.ActiveCfg = Release|Win32
{9D232642-FB2F-43DC-B0AC-C56E3B691233}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {01A4798F-B42A-4C9B-BFE7-A6D1BD35C7B3}
EndGlobalSection
EndGlobal

View File

@ -1,16 +1,5 @@
#pragma once #pragma once
/*
* This is commented out since our CI defines this automatically.
* Uncomment this if you want to test locally, but please do not push with these uncommented!
*/
// #define SERVER
// #define PLAYER
#define BASE_URL "https://kiseki.lol"
#define DISCORD_APP_ID 0
#define ALLOWED_WILDCARD_DOMAINS "kiseki.lol", "rbxcdn.com", "roblox.com" #define ALLOWED_WILDCARD_DOMAINS "kiseki.lol", "rbxcdn.com", "roblox.com"
#define ALLOWED_DOMAINS #define ALLOWED_DOMAINS
#define ALLOWED_SCHEMES "http", "https" #define ALLOWED_SCHEMES "http", "https"
@ -22,6 +11,11 @@
#define PUBLIC_KEY 0x00 #define PUBLIC_KEY 0x00
#endif #endif
#define RBX__MESSAGE_INFO 0
#define RBX__MESSAGE_OUTPUT 1
#define RBX__MESSAGE_WARNING 2
#define RBX__MESSAGE_ERROR 3
// TODO: Verify this // TODO: Verify this
#define CLASSPADDING_DATAMODEL__JOBID 739 #define CLASSPADDING_DATAMODEL__JOBID 739
@ -49,13 +43,8 @@
#define ADDRESS_CROBLOXCOMMANDLINEINFO__PARSEPARAM 0x0045EE50 #define ADDRESS_CROBLOXCOMMANDLINEINFO__PARSEPARAM 0x0045EE50
#define ADDRESS_CCOMMANDLINEINFO__PARSELAST 0x0081354A #define ADDRESS_CCOMMANDLINEINFO__PARSELAST 0x0081354A
#ifndef _DEBUG #ifdef _DEBUG
#define PADDING_STRUCT 1
#else
#define PADDING_STRUCT 0 #define PADDING_STRUCT 0
#else
#define PADDING_STRUCT 1
#endif #endif
#define RBX__MESSAGE_INFO 0
#define RBX__MESSAGE_OUTPUT 1
#define RBX__MESSAGE_WARNING 2
#define RBX__MESSAGE_ERROR 3

View File

@ -1,13 +1,15 @@
#ifdef PLAYER
#pragma once #pragma once
#include <discord_rpc.h> #include <discord_rpc.h>
#include <discord_register.h> #include <discord_register.h>
#include <rapidjson/document.h> #include <rapidjson/document.h>
#include "Configuration.h" #include "Configuration.hpp"
#include "Hooks/CRoblox.h"
#include "Hooks/CRoblox.hpp"
#ifdef PLAYER
class Discord { class Discord {
public: public:

View File

@ -2,7 +2,7 @@
#include <curl/curl.h> #include <curl/curl.h>
#include "Configuration.h" #include "Configuration.hpp"
class Helpers class Helpers
{ {

View File

@ -2,9 +2,9 @@
#include <curl/curl.h> #include <curl/curl.h>
#include "Configuration.h" #include "Configuration.hpp"
#include "Helpers.h" #include "Helpers.hpp"
#include "Discord.h" #include "Discord.hpp"
class CWorkspace; class CWorkspace;

View File

@ -1,8 +1,8 @@
#ifdef _DEBUG
#pragma once #pragma once
#include "Configuration.h" #include "Configuration.hpp"
#ifdef _DEBUG
const auto Context__isInRole = (bool(__cdecl*)(int identity, int permission))ADDRESS_CONTEXT__ISINROLE; const auto Context__isInRole = (bool(__cdecl*)(int identity, int permission))ADDRESS_CONTEXT__ISINROLE;

View File

@ -2,7 +2,7 @@
#include <wincrypt.h> #include <wincrypt.h>
#include "Configuration.h" #include "Configuration.hpp"
typedef void(__thiscall* Crypt__verifySignatureBase64_t)(HCRYPTPROV* _this, int a2, BYTE* pbData, int a4, int a5, int a6, DWORD dwDataLen, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15); typedef void(__thiscall* Crypt__verifySignatureBase64_t)(HCRYPTPROV* _this, int a2, BYTE* pbData, int a4, int a5, int a6, DWORD dwDataLen, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15);
void __fastcall Crypt__verifySignatureBase64_hook(HCRYPTPROV* _this, void*, int a2, BYTE* pbData, int a4, int a5, int a6, DWORD dwDataLen, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15); void __fastcall Crypt__verifySignatureBase64_hook(HCRYPTPROV* _this, void*, int a2, BYTE* pbData, int a4, int a5, int a6, DWORD dwDataLen, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15);

View File

@ -1,11 +1,11 @@
#ifdef SERVER
#pragma once #pragma once
#include "Helpers.h" #include "Hooks/CRoblox.hpp"
#include "Configuration.h"
#include "Hooks/CRoblox.h" #include "Configuration.hpp"
#include "Helpers.hpp"
#ifdef SERVER
struct DataModel struct DataModel
{ {

View File

@ -1,15 +1,13 @@
#pragma once
#include <curl/curl.h> #include <curl/curl.h>
#include <rapidjson/document.h> #include <rapidjson/document.h>
#include "Configuration.h"
#include "Helpers.h"
#ifdef SERVER #ifdef SERVER
#include "Hooks/StandardOut.h" #include "Hooks/StandardOut.hpp"
#endif #endif
#include "Configuration.hpp"
#include "Helpers.hpp"
struct Http struct Http
{ {
#if PADDING_STRUCT != 0 #if PADDING_STRUCT != 0

View File

@ -1,8 +1,8 @@
#ifdef SERVER
#pragma once #pragma once
#include "Configuration.h" #include "Configuration.hpp"
#if defined(SERVER)
struct Packet struct Packet
{ {

View File

@ -1,11 +1,11 @@
#ifdef SERVER
#pragma once #pragma once
#include "Configuration.h" #include "Configuration.hpp"
#include "Patches.h" #include "Helpers.hpp"
#include "Helpers.h" #include "Patches.hpp"
#include "Server.h" #include "Server.hpp"
#ifdef SERVER
typedef void(__thiscall* StandardOut__print_t)(int _this, int type, std::string* message); typedef void(__thiscall* StandardOut__print_t)(int _this, int type, std::string* message);
void __fastcall StandardOut__print_hook(int _this, void*, int type, std::string* message); void __fastcall StandardOut__print_hook(int _this, void*, int type, std::string* message);

View File

@ -2,7 +2,7 @@
#include <detours/detours.h> #include <detours/detours.h>
namespace Patches namespace Patcher
{ {
typedef std::pair<void**, void*> Patch; typedef std::pair<void**, void*> Patch;
@ -11,6 +11,6 @@ namespace Patches
LONG Apply(); LONG Apply();
} }
#define START_PATCH_LIST() std::vector<Patches::Patch> Patches::patchList = { #define START_PATCH_LIST() std::vector<Patcher::Patch> Patcher::patchList = {
#define ADD_PATCH(a, b) { (void**)&(a), (b) }, #define ADD_PATCH(a, b) { (void**)&(a), (b) },
#define END_PATCH_LIST() }; #define END_PATCH_LIST() };

View File

@ -1,11 +1,11 @@
#ifdef SERVER
#pragma once #pragma once
#include "Configuration.h" #include "Configuration.hpp"
#include "Helpers.h" #include "Helpers.hpp"
#include "Hooks/StandardOut.h" #include "Hooks/StandardOut.hpp"
#ifdef SERVER
enum class RequestType { enum class RequestType {
POST, POST,

View File

@ -1,5 +0,0 @@
#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files
#include <windows.h>

View File

@ -1,18 +0,0 @@
#pragma once
#include <windows.h>
#include <iomanip>
#include <iostream>
#include <filesystem>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <stdexcept>
#include <thread>
#include <ctime>
#include <ios>
namespace fs = std::filesystem;

View File

@ -1,14 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by PolygonDLL.rc
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@ -1,100 +0,0 @@
// Microsoft Visual C++ generated resource script.
//
#include "Include/resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Kiseki"
VALUE "FileDescription", "Client Functionality Library"
VALUE "FileVersion", "1.0.0.0"
VALUE "InternalName", "Kiseki.Patcher.dll"
VALUE "LegalCopyright", "Copyright (C) Kiseki 2022-2023"
VALUE "OriginalFilename", "Kiseki.Patcher.dll"
VALUE "ProductName", "Client Functionality Library"
VALUE "ProductVersion", "1.0.0.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@ -1,163 +0,0 @@
<?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>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{9d232642-fb2f-43dc-b0ac-c56e3b691233}</ProjectGuid>
<RootNamespace>Kiseki.Patcher</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</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>
<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>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
<OutDir>$(SolutionDir)bin\$(Configuration)\</OutDir>
<IntDir>obj\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
<OutDir>$(SolutionDir)bin\$(Configuration)\</OutDir>
<IntDir>obj\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Label="Vcpkg">
<VcpkgEnableManifest>true</VcpkgEnableManifest>
</PropertyGroup>
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<VcpkgInstalledDir>$(SolutionDir)packages</VcpkgInstalledDir>
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
</PropertyGroup>
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<VcpkgInstalledDir>$(SolutionDir)packages</VcpkgInstalledDir>
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;KISEKIPATCHER_EXPORTS;_WINDOWS;_USRDLL;$(CIDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<AdditionalIncludeDirectories>$(ProjectDir)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>detours.lib;crypt32.lib;libcurl-d.lib;WS2_32.lib;zlibd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>LIBCMTD</IgnoreSpecificDefaultLibraries>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>
</FunctionLevelLinking>
<IntrinsicFunctions>false</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;KISEKIPATCHER_EXPORTS;_WINDOWS;_USRDLL;$(CIDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<AdditionalIncludeDirectories>$(ProjectDir)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<Optimization>Disabled</Optimization>
<WholeProgramOptimization>false</WholeProgramOptimization>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>detours.lib;crypt32.lib;libcurl.lib;WS2_32.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>LIBCMT</IgnoreSpecificDefaultLibraries>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="Include\Configuration.h" />
<ClInclude Include="Include\Discord.h" />
<ClInclude Include="Include\Hooks\Context.h" />
<ClInclude Include="Include\Hooks\CRoblox.h" />
<ClInclude Include="Include\Hooks\DataModel.h" />
<ClInclude Include="Include\Hooks\StandardOut.h" />
<ClInclude Include="Include\Hooks\ServerReplicator.h" />
<ClInclude Include="Include\Hooks\Http.h" />
<ClInclude Include="Include\Server.h" />
<ClInclude Include="Include\Patches.h" />
<ClInclude Include="Include\pch.h" />
<ClInclude Include="Include\Helpers.h" />
<ClInclude Include="Include\Hooks\Crypt.h" />
<ClInclude Include="Include\resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Discord.cpp" />
<ClCompile Include="Hooks\Context.cpp" />
<ClCompile Include="dllmain.cpp" />
<ClCompile Include="Hooks\CRoblox.cpp" />
<ClCompile Include="Hooks\DataModel.cpp" />
<ClCompile Include="Server.cpp" />
<ClCompile Include="Patches.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="Hooks\StandardOut.cpp" />
<ClCompile Include="Hooks\ServerReplicator.cpp" />
<ClCompile Include="Hooks\Http.cpp" />
<ClCompile Include="Helpers.cpp" />
<ClCompile Include="Hooks\Crypt.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Kiseki.DLL.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,113 +0,0 @@
<?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>
<Filter Include="Source Files\Hooks">
<UniqueIdentifier>{e1630ddd-f689-40cc-9f7b-506bcf8aca31}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Hooks">
<UniqueIdentifier>{51130969-bcf1-4ae5-b838-7f4fb658856e}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Include\pch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Include\Patches.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Include\Helpers.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Include\Hooks\Crypt.h">
<Filter>Header Files\Hooks</Filter>
</ClInclude>
<ClInclude Include="Include\Hooks\CRoblox.h">
<Filter>Header Files\Hooks</Filter>
</ClInclude>
<ClInclude Include="Include\Hooks\ServerReplicator.h">
<Filter>Header Files\Hooks</Filter>
</ClInclude>
<ClInclude Include="Include\Hooks\StandardOut.h">
<Filter>Header Files\Hooks</Filter>
</ClInclude>
<ClInclude Include="Include\Hooks\Http.h">
<Filter>Header Files\Hooks</Filter>
</ClInclude>
<ClInclude Include="Include\Hooks\Context.h">
<Filter>Header Files\Hooks</Filter>
</ClInclude>
<ClInclude Include="Include\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Include\Discord.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Include\Server.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Include\Hooks\DataModel.h">
<Filter>Header Files\Hooks</Filter>
</ClInclude>
<ClInclude Include="Include\Configuration.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Patches.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Helpers.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Hooks\Crypt.cpp">
<Filter>Source Files\Hooks</Filter>
</ClCompile>
<ClCompile Include="Hooks\CRoblox.cpp">
<Filter>Source Files\Hooks</Filter>
</ClCompile>
<ClCompile Include="Hooks\ServerReplicator.cpp">
<Filter>Source Files\Hooks</Filter>
</ClCompile>
<ClCompile Include="Hooks\StandardOut.cpp">
<Filter>Source Files\Hooks</Filter>
</ClCompile>
<ClCompile Include="Hooks\Http.cpp">
<Filter>Source Files\Hooks</Filter>
</ClCompile>
<ClCompile Include="Hooks\Context.cpp">
<Filter>Source Files\Hooks</Filter>
</ClCompile>
<ClCompile Include="Discord.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Server.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Hooks\DataModel.cpp">
<Filter>Source Files\Hooks</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Kiseki.DLL.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -0,0 +1,12 @@
#pragma once
#define VERSION_MAJOR_MINOR_STR "1.0"
#define VERSION_MAJOR_MINOR_PATCH_STR "1.0.0"
#define VERSION_FULL_STR "1.0.0.0"
#define VERSION_RESOURCE 1, 0, 0, 0
#define VERSION_RESOURCE_STR VERSION_FULL_STR "\0"
#define APP_NAME "Kiseki.Patcher"
#define APP_DESCRIPTION "Client Functionality Library"
#define APP_ORGANIZATION "Kiseki"
#define APP_COPYRIGHT "Copyright (c) Kiseki 2023"

View File

@ -0,0 +1,36 @@
#include "Information.h"
#include <winres.h>
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
VS_VERSION_INFO VERSIONINFO
FILEVERSION VERSION_RESOURCE
PRODUCTVERSION VERSION_RESOURCE
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", APP_ORGANIZATION "\0"
VALUE "FileDescription", APP_DESCRIPTION "\0"
VALUE "FileVersion", VERSION_FULL_STR "\0"
VALUE "LegalCopyright", APP_COPYRIGHT "\0"
VALUE "ProductName", APP_NAME "\0"
VALUE "ProductVersion", VERSION_FULL_STR "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 1200
END
END

View File

@ -1,9 +1,7 @@
#include "pch.h"
#include "Discord.h"
#ifdef PLAYER #ifdef PLAYER
#include "Discord.hpp"
bool isRunning = false; bool isRunning = false;
std::string username; std::string username;
int placeId; int placeId;
@ -45,7 +43,7 @@ void Discord::Initialize(const std::string joinScriptUrl)
} }
// Get the username and placeId // Get the username and placeId
std::pair<bool, std::string> response = Helpers::httpGet(BASE_URL + std::string("/api/places/information?ticket=" + query["ticket"])); std::pair<bool, std::string> response = Helpers::httpGet(Helpers::getBaseUrl() + std::string("/api/places/information?ticket=" + query["ticket"]));
if (!response.first) if (!response.first)
{ {
return; return;
@ -82,7 +80,7 @@ void Discord::Update()
int max = 0; int max = 0;
// Get title, size, and max // Get title, size, and max
std::pair<bool, std::string> response = Helpers::httpGet(BASE_URL + std::string("/api/places/information?id=" + placeId)); std::pair<bool, std::string> response = Helpers::httpGet(Helpers::getBaseUrl() + std::string("/api/places/information?id=" + placeId));
if (!response.first) if (!response.first)
{ {
return; return;

View File

@ -1,6 +1,4 @@
#include "pch.h" #include "Helpers.hpp"
#include "Helpers.h"
#ifdef _DEBUG #ifdef _DEBUG
const std::vector<BYTE> Helpers::publicKey = Helpers::base64Decode(PUBLIC_KEY); const std::vector<BYTE> Helpers::publicKey = Helpers::base64Decode(PUBLIC_KEY);

View File

@ -1,6 +1,4 @@
#include "pch.h" #include "Hooks/CRoblox.hpp"
#include "Hooks/CRoblox.h"
#ifdef SERVER #ifdef SERVER
#include "Server.h" #include "Server.h"

View File

@ -1,10 +1,7 @@
#include "pch.h"
#include "Helpers.h"
#include "Hooks/Context.h"
#ifdef _DEBUG #ifdef _DEBUG
#include "Hooks/Context.hpp"
Context__requirePermission_t Context__requirePermission = (Context__requirePermission_t)ADDRESS_CONTEXT__REQUIREPERMISSION; Context__requirePermission_t Context__requirePermission = (Context__requirePermission_t)ADDRESS_CONTEXT__REQUIREPERMISSION;
void __fastcall Context__requirePermission_hook(void* _this, void*, int permission, const char* operation) void __fastcall Context__requirePermission_hook(void* _this, void*, int permission, const char* operation)

View File

@ -1,8 +1,7 @@
#include "pch.h" #include "Hooks/Crypt.hpp"
#include "Patches.h" #include "Helpers.hpp"
#include "Helpers.h" #include "Patches.hpp"
#include "Hooks/Crypt.h"
Crypt::Crypt() Crypt::Crypt()
{ {
@ -12,12 +11,12 @@ Crypt::Crypt()
{ {
if (!CryptAcquireContext(&context, NULL, MS_ENH_RSA_AES_PROV, PROV_RSA_AES, CRYPT_VERIFYCONTEXT | CRYPT_NEWKEYSET)) if (!CryptAcquireContext(&context, NULL, MS_ENH_RSA_AES_PROV, PROV_RSA_AES, CRYPT_VERIFYCONTEXT | CRYPT_NEWKEYSET))
{ {
throw std::runtime_error("Error during CryptAcquireContext 2\n"); throw std::runtime_error("Error during CryptAcquireContext 2");
} }
} }
else else
{ {
throw std::runtime_error("Error during CryptAcquireContext\n"); throw std::runtime_error("Error during CryptAcquireContext");
} }
} }

View File

@ -1,9 +1,7 @@
#include "pch.h"
#include "Hooks/DataModel.h"
#ifdef SERVER #ifdef SERVER
#include "Hooks/DataModel.hpp"
bool setJobId = false; bool setJobId = false;
DataModel__getJobId_t DataModel__getJobId = (DataModel__getJobId_t)ADDRESS_DATAMODEL__GETJOBID; DataModel__getJobId_t DataModel__getJobId = (DataModel__getJobId_t)ADDRESS_DATAMODEL__GETJOBID;

View File

@ -1,6 +1,4 @@
#include "pch.h" #include "Hooks/Http.hpp"
#include "Hooks/Http.h"
#define CHECK(condition, code) \ #define CHECK(condition, code) \
if(!error) { \ if(!error) { \

View File

@ -1,9 +1,7 @@
#include "pch.h"
#include "Hooks/ServerReplicator.h"
#ifdef SERVER #ifdef SERVER
#include "Hooks/ServerReplicator.hpp"
static std::map<ServerReplicator*, RakPeerInterface*> rakPeers; static std::map<ServerReplicator*, RakPeerInterface*> rakPeers;
ServerReplicator__sendTop_t ServerReplicator__sendTop = (ServerReplicator__sendTop_t)ADDRESS_SERVERREPLICATOR__SENDTOP; ServerReplicator__sendTop_t ServerReplicator__sendTop = (ServerReplicator__sendTop_t)ADDRESS_SERVERREPLICATOR__SENDTOP;

View File

@ -1,16 +1,13 @@
#include "pch.h"
#include "Hooks/StandardOut.h"
#ifdef SERVER #ifdef SERVER
#include "Hooks/StandardOut.hpp"
StandardOut__print_t StandardOut__print = (StandardOut__print_t)ADDRESS_STANDARDOUT__PRINT; StandardOut__print_t StandardOut__print = (StandardOut__print_t)ADDRESS_STANDARDOUT__PRINT;
void __fastcall StandardOut__print_hook(int _this, void*, int type, std::string* message) void __fastcall StandardOut__print_hook(int _this, void*, int type, std::string* message)
{ {
StandardOut__print(_this, type, message); StandardOut__print(_this, type, message);
#ifdef SERVER
if (Server::Handle) if (Server::Handle)
{ {
#ifndef _DEBUG #ifndef _DEBUG
@ -20,7 +17,6 @@ void __fastcall StandardOut__print_hook(int _this, void*, int type, std::string*
Server::Log::Output((LogSeverity)type, message->c_str()); Server::Log::Output((LogSeverity)type, message->c_str());
} }
#endif
} }
#endif #endif

View File

@ -1,8 +1,6 @@
#include "pch.h" #include "Patcher.hpp"
#include "Patches.h" LONG Patcher::Apply()
LONG Patches::Apply()
{ {
DetourTransactionBegin(); DetourTransactionBegin();

View File

@ -1,9 +1,7 @@
#include "pch.h"
#include "Server.h"
#ifdef SERVER #ifdef SERVER
#include "Server.hpp"
HANDLE Server::Handle; HANDLE Server::Handle;
std::ofstream Server::OutputLog; std::ofstream Server::OutputLog;

View File

@ -1,28 +1,27 @@
#include "pch.h"
#include "Configuration.h" #include "Configuration.hpp"
#include "Patches.h" #include "Patches.hpp"
#ifndef SERVER #ifdef PLAYER
#include "Discord.h" #include "Discord.hpp"
#endif #endif
#ifdef SERVER #ifdef SERVER
#include "Server.h" #include "Server.hpp"
#endif #endif
#include "Hooks/Http.h" #include "Hooks/Http.hpp"
#include "Hooks/Crypt.h" #include "Hooks/Crypt.hpp"
#include "Hooks/CRoblox.h" #include "Hooks/CRoblox.hpp"
#ifdef _DEBUG #ifdef _DEBUG
#include "Hooks/Context.h" #include "Hooks/Context.hpp"
#endif #endif
#ifdef SERVER #ifdef SERVER
#include "Hooks/DataModel.h" #include "Hooks/DataModel.hpp"
#include "Hooks/StandardOut.h" #include "Hooks/StandardOut.hpp"
#include "Hooks/ServerReplicator.h" #include "Hooks/ServerReplicator.hpp"
#endif #endif
START_PATCH_LIST() START_PATCH_LIST()

View File

@ -1 +0,0 @@
#include "pch.h"

View File

@ -1,5 +1,7 @@
# Kiseki.Patcher # Kiseki.Patcher
DLL used for extending client/server functionality Fork of [@lrre-foss/lure](https://github.com/lrre-foss/lure) with Kiseki-specific additions
# License # License
Copyright (c) Kiseki 2022-2023. All rights reserved. Not for public use. Copyright (c) Kiseki 2023. All rights reserved. Not for public use.
This project is a fork of [@lrre-foss/lure](https://github.com/lrre-foss/lure), a project licensed under the [Apache License v2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).

View File

@ -6,6 +6,7 @@
"curl", "curl",
"detours", "detours",
"discord-rpc", "discord-rpc",
"rapidjson" "rapidjson",
"pugixml"
] ]
} }