Switch build system to CMake
This commit is contained in:
parent
aa1c8171b2
commit
7784f97820
|
@ -1,263 +1,265 @@
|
||||||
## Ignore Visual Studio temporary files, build results, and
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
## files generated by popular Visual Studio add-ons.
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
# User-specific files
|
# User-specific files
|
||||||
*.suo
|
*.suo
|
||||||
*.user
|
*.user
|
||||||
*.userosscache
|
*.userosscache
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
*.userprefs
|
*.userprefs
|
||||||
|
|
||||||
# Build results
|
# Build results
|
||||||
[Dd]ebug/
|
[Dd]ebug/
|
||||||
[Dd]ebugPublic/
|
[Dd]ebugPublic/
|
||||||
[Rr]elease/
|
[Rr]elease/
|
||||||
[Rr]eleases/
|
[Rr]eleases/
|
||||||
x64/
|
x64/
|
||||||
x86/
|
x86/
|
||||||
bld/
|
bld/
|
||||||
[Bb]in/
|
[Bb]in/
|
||||||
[Oo]bj/
|
[Oo]bj/
|
||||||
[Ll]og/
|
[Ll]og/
|
||||||
|
|
||||||
# Visual Studio 2015 cache/options directory
|
# Visual Studio 2015 cache/options directory
|
||||||
.vs/
|
.vs/
|
||||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
#wwwroot/
|
#wwwroot/
|
||||||
|
|
||||||
# MSTest test Results
|
# MSTest test Results
|
||||||
[Tt]est[Rr]esult*/
|
[Tt]est[Rr]esult*/
|
||||||
[Bb]uild[Ll]og.*
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
# NUNIT
|
# NUNIT
|
||||||
*.VisualState.xml
|
*.VisualState.xml
|
||||||
TestResult.xml
|
TestResult.xml
|
||||||
|
|
||||||
# Build Results of an ATL Project
|
# Build Results of an ATL Project
|
||||||
[Dd]ebugPS/
|
[Dd]ebugPS/
|
||||||
[Rr]eleasePS/
|
[Rr]eleasePS/
|
||||||
dlldata.c
|
dlldata.c
|
||||||
|
|
||||||
# DNX
|
# DNX
|
||||||
project.lock.json
|
project.lock.json
|
||||||
project.fragment.lock.json
|
project.fragment.lock.json
|
||||||
artifacts/
|
artifacts/
|
||||||
|
|
||||||
*_i.c
|
*_i.c
|
||||||
*_p.c
|
*_p.c
|
||||||
*_i.h
|
*_i.h
|
||||||
*.ilk
|
*.ilk
|
||||||
*.meta
|
*.meta
|
||||||
*.obj
|
*.obj
|
||||||
*.pch
|
*.pch
|
||||||
*.pdb
|
*.pdb
|
||||||
*.pgc
|
*.pgc
|
||||||
*.pgd
|
*.pgd
|
||||||
*.rsp
|
*.rsp
|
||||||
*.sbr
|
*.sbr
|
||||||
*.tlb
|
*.tlb
|
||||||
*.tli
|
*.tli
|
||||||
*.tlh
|
*.tlh
|
||||||
*.tmp
|
*.tmp
|
||||||
*.tmp_proj
|
*.tmp_proj
|
||||||
*.log
|
*.log
|
||||||
*.vspscc
|
*.vspscc
|
||||||
*.vssscc
|
*.vssscc
|
||||||
.builds
|
.builds
|
||||||
*.pidb
|
*.pidb
|
||||||
*.svclog
|
*.svclog
|
||||||
*.scc
|
*.scc
|
||||||
|
|
||||||
# Chutzpah Test files
|
# Chutzpah Test files
|
||||||
_Chutzpah*
|
_Chutzpah*
|
||||||
|
|
||||||
# Visual C++ cache files
|
# Visual C++ cache files
|
||||||
ipch/
|
ipch/
|
||||||
*.aps
|
*.aps
|
||||||
*.ncb
|
*.ncb
|
||||||
*.opendb
|
*.opendb
|
||||||
*.opensdf
|
*.opensdf
|
||||||
*.sdf
|
*.sdf
|
||||||
*.cachefile
|
*.cachefile
|
||||||
*.VC.db
|
*.VC.db
|
||||||
*.VC.VC.opendb
|
*.VC.VC.opendb
|
||||||
|
|
||||||
# Visual Studio profiler
|
# Visual Studio profiler
|
||||||
*.psess
|
*.psess
|
||||||
*.vsp
|
*.vsp
|
||||||
*.vspx
|
*.vspx
|
||||||
*.sap
|
*.sap
|
||||||
|
|
||||||
# TFS 2012 Local Workspace
|
# TFS 2012 Local Workspace
|
||||||
$tf/
|
$tf/
|
||||||
|
|
||||||
# Guidance Automation Toolkit
|
# Guidance Automation Toolkit
|
||||||
*.gpState
|
*.gpState
|
||||||
|
|
||||||
# ReSharper is a .NET coding add-in
|
# ReSharper is a .NET coding add-in
|
||||||
_ReSharper*/
|
_ReSharper*/
|
||||||
*.[Rr]e[Ss]harper
|
*.[Rr]e[Ss]harper
|
||||||
*.DotSettings.user
|
*.DotSettings.user
|
||||||
|
|
||||||
# JustCode is a .NET coding add-in
|
# JustCode is a .NET coding add-in
|
||||||
.JustCode
|
.JustCode
|
||||||
|
|
||||||
# TeamCity is a build add-in
|
# TeamCity is a build add-in
|
||||||
_TeamCity*
|
_TeamCity*
|
||||||
|
|
||||||
# DotCover is a Code Coverage Tool
|
# DotCover is a Code Coverage Tool
|
||||||
*.dotCover
|
*.dotCover
|
||||||
|
|
||||||
# NCrunch
|
# NCrunch
|
||||||
_NCrunch_*
|
_NCrunch_*
|
||||||
.*crunch*.local.xml
|
.*crunch*.local.xml
|
||||||
nCrunchTemp_*
|
nCrunchTemp_*
|
||||||
|
|
||||||
# MightyMoose
|
# MightyMoose
|
||||||
*.mm.*
|
*.mm.*
|
||||||
AutoTest.Net/
|
AutoTest.Net/
|
||||||
|
|
||||||
# Web workbench (sass)
|
# Web workbench (sass)
|
||||||
.sass-cache/
|
.sass-cache/
|
||||||
|
|
||||||
# Installshield output folder
|
# Installshield output folder
|
||||||
[Ee]xpress/
|
[Ee]xpress/
|
||||||
|
|
||||||
# DocProject is a documentation generator add-in
|
# DocProject is a documentation generator add-in
|
||||||
DocProject/buildhelp/
|
DocProject/buildhelp/
|
||||||
DocProject/Help/*.HxT
|
DocProject/Help/*.HxT
|
||||||
DocProject/Help/*.HxC
|
DocProject/Help/*.HxC
|
||||||
DocProject/Help/*.hhc
|
DocProject/Help/*.hhc
|
||||||
DocProject/Help/*.hhk
|
DocProject/Help/*.hhk
|
||||||
DocProject/Help/*.hhp
|
DocProject/Help/*.hhp
|
||||||
DocProject/Help/Html2
|
DocProject/Help/Html2
|
||||||
DocProject/Help/html
|
DocProject/Help/html
|
||||||
|
|
||||||
# Click-Once directory
|
# Click-Once directory
|
||||||
publish/
|
publish/
|
||||||
|
|
||||||
# Publish Web Output
|
# Publish Web Output
|
||||||
*.[Pp]ublish.xml
|
*.[Pp]ublish.xml
|
||||||
*.azurePubxml
|
*.azurePubxml
|
||||||
# TODO: Comment the next line if you want to checkin your web deploy settings
|
# TODO: Comment the next line if you want to checkin your web deploy settings
|
||||||
# but database connection strings (with potential passwords) will be unencrypted
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
#*.pubxml
|
#*.pubxml
|
||||||
*.publishproj
|
*.publishproj
|
||||||
|
|
||||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
# 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
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
# in these scripts will be unencrypted
|
# in these scripts will be unencrypted
|
||||||
PublishScripts/
|
PublishScripts/
|
||||||
|
|
||||||
# NuGet Packages
|
# NuGet Packages
|
||||||
*.nupkg
|
*.nupkg
|
||||||
# The packages folder can be ignored because of Package Restore
|
# The packages folder can be ignored because of Package Restore
|
||||||
**/packages/*
|
**/packages/*
|
||||||
# except build/, which is used as an MSBuild target.
|
# except build/, which is used as an MSBuild target.
|
||||||
!**/packages/build/
|
!**/packages/build/
|
||||||
# Uncomment if necessary however generally it will be regenerated when needed
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
#!**/packages/repositories.config
|
#!**/packages/repositories.config
|
||||||
# NuGet v3's project.json files produces more ignoreable files
|
# NuGet v3's project.json files produces more ignoreable files
|
||||||
*.nuget.props
|
*.nuget.props
|
||||||
*.nuget.targets
|
*.nuget.targets
|
||||||
|
|
||||||
# Microsoft Azure Build Output
|
# Microsoft Azure Build Output
|
||||||
csx/
|
csx/
|
||||||
*.build.csdef
|
*.build.csdef
|
||||||
|
|
||||||
# Microsoft Azure Emulator
|
# Microsoft Azure Emulator
|
||||||
ecf/
|
ecf/
|
||||||
rcf/
|
rcf/
|
||||||
|
|
||||||
# Windows Store app package directories and files
|
# Windows Store app package directories and files
|
||||||
AppPackages/
|
AppPackages/
|
||||||
BundleArtifacts/
|
BundleArtifacts/
|
||||||
Package.StoreAssociation.xml
|
Package.StoreAssociation.xml
|
||||||
_pkginfo.txt
|
_pkginfo.txt
|
||||||
|
|
||||||
# Visual Studio cache files
|
# Visual Studio cache files
|
||||||
# files ending in .cache can be ignored
|
# files ending in .cache can be ignored
|
||||||
*.[Cc]ache
|
*.[Cc]ache
|
||||||
# but keep track of directories ending in .cache
|
# but keep track of directories ending in .cache
|
||||||
!*.[Cc]ache/
|
!*.[Cc]ache/
|
||||||
|
|
||||||
# Others
|
# Others
|
||||||
ClientBin/
|
ClientBin/
|
||||||
~$*
|
~$*
|
||||||
*~
|
*~
|
||||||
*.dbmdl
|
*.dbmdl
|
||||||
*.dbproj.schemaview
|
*.dbproj.schemaview
|
||||||
*.jfm
|
*.jfm
|
||||||
*.pfx
|
*.pfx
|
||||||
*.publishsettings
|
*.publishsettings
|
||||||
node_modules/
|
node_modules/
|
||||||
orleans.codegen.cs
|
orleans.codegen.cs
|
||||||
|
|
||||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
#bower_components/
|
#bower_components/
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
# RIA/Silverlight projects
|
||||||
Generated_Code/
|
Generated_Code/
|
||||||
|
|
||||||
# Backup & report files from converting an old project file
|
# Backup & report files from converting an old project file
|
||||||
# to a newer Visual Studio version. Backup files are not needed,
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
# because we have git ;-)
|
# because we have git ;-)
|
||||||
_UpgradeReport_Files/
|
_UpgradeReport_Files/
|
||||||
Backup*/
|
Backup*/
|
||||||
UpgradeLog*.XML
|
UpgradeLog*.XML
|
||||||
UpgradeLog*.htm
|
UpgradeLog*.htm
|
||||||
|
|
||||||
# SQL Server files
|
# SQL Server files
|
||||||
*.mdf
|
*.mdf
|
||||||
*.ldf
|
*.ldf
|
||||||
|
|
||||||
# Business Intelligence projects
|
# Business Intelligence projects
|
||||||
*.rdl.data
|
*.rdl.data
|
||||||
*.bim.layout
|
*.bim.layout
|
||||||
*.bim_*.settings
|
*.bim_*.settings
|
||||||
|
|
||||||
# Microsoft Fakes
|
# Microsoft Fakes
|
||||||
FakesAssemblies/
|
FakesAssemblies/
|
||||||
|
|
||||||
# GhostDoc plugin setting file
|
# GhostDoc plugin setting file
|
||||||
*.GhostDoc.xml
|
*.GhostDoc.xml
|
||||||
|
|
||||||
# Node.js Tools for Visual Studio
|
# Node.js Tools for Visual Studio
|
||||||
.ntvs_analysis.dat
|
.ntvs_analysis.dat
|
||||||
|
|
||||||
# Visual Studio 6 build log
|
# Visual Studio 6 build log
|
||||||
*.plg
|
*.plg
|
||||||
|
|
||||||
# Visual Studio 6 workspace options file
|
# Visual Studio 6 workspace options file
|
||||||
*.opt
|
*.opt
|
||||||
|
|
||||||
# Visual Studio LightSwitch build output
|
# Visual Studio LightSwitch build output
|
||||||
**/*.HTMLClient/GeneratedArtifacts
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
**/*.DesktopClient/GeneratedArtifacts
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
**/*.DesktopClient/ModelManifest.xml
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
**/*.Server/GeneratedArtifacts
|
**/*.Server/GeneratedArtifacts
|
||||||
**/*.Server/ModelManifest.xml
|
**/*.Server/ModelManifest.xml
|
||||||
_Pvt_Extensions
|
_Pvt_Extensions
|
||||||
|
|
||||||
# Paket dependency manager
|
# Paket dependency manager
|
||||||
.paket/paket.exe
|
.paket/paket.exe
|
||||||
paket-files/
|
paket-files/
|
||||||
|
|
||||||
# FAKE - F# Make
|
# FAKE - F# Make
|
||||||
.fake/
|
.fake/
|
||||||
|
|
||||||
# JetBrains Rider
|
# JetBrains Rider
|
||||||
.idea/
|
.idea/
|
||||||
*.sln.iml
|
*.sln.iml
|
||||||
|
|
||||||
# CodeRush
|
# CodeRush
|
||||||
.cr/
|
.cr/
|
||||||
|
|
||||||
# Python Tools for Visual Studio (PTVS)
|
# Python Tools for Visual Studio (PTVS)
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
ScrapHack/dx8/
|
.history
|
||||||
|
|
||||||
|
ScrapHacks/build/*
|
61
NOTES.md
61
NOTES.md
|
@ -46,8 +46,10 @@
|
||||||
- m3d.ini loader @ 0x5f7000
|
- m3d.ini loader @ 0x5f7000
|
||||||
- SM3 Scene Loader @ 0x650f80 (?)
|
- SM3 Scene Loader @ 0x650f80 (?)
|
||||||
- M3D Model Loader @ 0x6665a0 (??)
|
- M3D Model Loader @ 0x6665a0 (??)
|
||||||
- World_Init @ 0x479b20 (???)
|
- World_Constructor @ 0x479b20 (???)
|
||||||
|
- World_Init @ 0x479b40
|
||||||
- World_DeInit @ 0x402510
|
- World_DeInit @ 0x402510
|
||||||
|
- Make_World @ 0x479870
|
||||||
|
|
||||||
# Data Structures
|
# Data Structures
|
||||||
|
|
||||||
|
@ -55,31 +57,31 @@
|
||||||
|
|
||||||
Points to World struct
|
Points to World struct
|
||||||
|
|
||||||
| Offset | Type | Description |
|
| Offset | Type | Description |
|
||||||
|--------|------------|----------------------------------|
|
| ------ | ------------------------ | -------------------------------------- |
|
||||||
| 0x0000 | `void**` | Virtual Method Table |
|
| 0x0000 | `void**` | Virtual Method Table |
|
||||||
| 0x0004 | `uint32_t` | Size of Entity Hashtable |
|
| 0x0004 | `uint32_t` | Size of Entity Hashtable |
|
||||||
| 0x0008 | `void**` | Pointer to Entity Hashtable |
|
| 0x0008 | `void**` | Pointer to Entity Hashtable |
|
||||||
| 0x02B8 | `uint32_t` | Number of entity lists |
|
| 0x02B8 | `uint32_t` | Number of entity lists |
|
||||||
| 0x02BC | `void**` | Pointer to entity list Hashtable |
|
| 0x02BC | `void**` | Pointer to entity list Hashtable |
|
||||||
| 0x0330 | `float[3]` | Time (why 3 times?) |
|
| 0x0330 | `float[3]` | Time (why 3 times?) |
|
||||||
| 0x1C6C | `float` | Alarm level |
|
| 0x1C6C | `float` | Alarm level |
|
||||||
| 0x1C68 | `float` | Alarm Grow Level |
|
| 0x1C68 | `float` | Alarm Grow Level |
|
||||||
| 0x2158 | `???` | Used in `World_Init` |
|
| 0x2158 | `float` | Used in `World_Init` |
|
||||||
| 0x2170 | `???` | Used in `World_Init` |
|
| 0x2170 | `???` | Used in `World_Init` |
|
||||||
| 0x2180 | `???` | Used in `World_Init` |
|
| 0x2180 | `float` | Used in `World_Init` |
|
||||||
| 0x2188 | `???` | Used in `World_Init` |
|
| 0x2188 | `void*` | Used in `World_Init` |
|
||||||
| 0x218C | `???` | Used in `World_Init` |
|
| 0x218C | `void*` | Used in `World_Init` |
|
||||||
| 0x2190 | `???` | Used in `World_Init` |
|
| 0x2190 | `float` | Used in `World_Init` |
|
||||||
| 0x2198 | `???` | Used in `World_Init` |
|
| 0x2198 | `void*` | Used in `World_Init` |
|
||||||
| 0x219C | `???` | Used in `World_Init` |
|
| 0x219C | `void*` | Used in `World_Init` |
|
||||||
| 0x21A0 | `???` | Used in `World_Init` |
|
| 0x21A0 | `void**` | Used in `World_Init` (VTable pointer?) |
|
||||||
| 0x21B4 | `???` | Used in `World_Init` |
|
| 0x21B4 | `void**` | Used in `World_Init` (VTable pointer?) |
|
||||||
| 0x21C8 | `???` | Used in `World_Init` |
|
| 0x21C8 | `???` | Used in `World_Init` |
|
||||||
| 0x2204 | `???` | Used in `World_Init` |
|
| 0x2204 | `uint32_t` or `uint16_t` | Used in `World_Init` |
|
||||||
| 0x2230 | `???` | Used in `World_Init` |
|
| 0x2230 | `float` | Used in `World_Init` |
|
||||||
| 0x2238 | `???` | Used in `World_Init` |
|
| 0x2238 | `???` | Used in `World_Init` |
|
||||||
| 0x2254 | `???` | Used in `World_Init` |
|
| 0x2254 | `float` | Used in `World_Init` |
|
||||||
|
|
||||||
|
|
||||||
## Entity Hash Table
|
## Entity Hash Table
|
||||||
|
@ -89,7 +91,7 @@ Hash-function used: [PJW](https://en.wikipedia.org/wiki/PJW_hash_function) (Same
|
||||||
Entry format:
|
Entry format:
|
||||||
|
|
||||||
| Offset | Type | Description |
|
| Offset | Type | Description |
|
||||||
|--------|---------------|--------------------------------|
|
| ------ | ------------- | ------------------------------ |
|
||||||
| 0x0 | `void*` | Pointer to data |
|
| 0x0 | `void*` | Pointer to data |
|
||||||
| 0x4 | `const char*` | key as `char*` |
|
| 0x4 | `const char*` | key as `char*` |
|
||||||
| 0x8 | `void*` | Pointer to next entry in chain |
|
| 0x8 | `void*` | Pointer to next entry in chain |
|
||||||
|
@ -97,7 +99,7 @@ Entry format:
|
||||||
Data format:
|
Data format:
|
||||||
|
|
||||||
| Offset | Type | Description |
|
| Offset | Type | Description |
|
||||||
|--------|---------------|--------------------------|
|
| ------ | ------------- | ------------------------ |
|
||||||
| 0x0 | `void**` | Virtual Method Table (?) |
|
| 0x0 | `void**` | Virtual Method Table (?) |
|
||||||
| 0x4 | `const char*` | name as string |
|
| 0x4 | `const char*` | name as string |
|
||||||
| 0x14 | `void*` | pointer to self (why?) |
|
| 0x14 | `void*` | pointer to self (why?) |
|
||||||
|
@ -106,12 +108,13 @@ Data format:
|
||||||
## Game Window Object (?) Pointer @ `0x7fa380`
|
## Game Window Object (?) Pointer @ `0x7fa380`
|
||||||
|
|
||||||
| Offset | Type | Description |
|
| Offset | Type | Description |
|
||||||
|--------|---------------|----------------------|
|
| ------ | ------------- | -------------------- |
|
||||||
| 0x0000 | `void**` | Virtual Method Table |
|
| 0x0000 | `void**` | Virtual Method Table |
|
||||||
| 0x0004 | `const char*` | Some Model Name (?) |
|
| 0x0004 | `const char*` | Some Model Name (?) |
|
||||||
| 0x0008 | `void*` | Pointer to something |
|
| 0x0008 | `void*` | Pointer to something |
|
||||||
| 0x000C | `void*` | Ditto |
|
| 0x000C | `void*` | Ditto |
|
||||||
|
|
||||||
|
|
||||||
# File Formats
|
# File Formats
|
||||||
|
|
||||||
## .packed File Format:
|
## .packed File Format:
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"spellright.language": [
|
|
||||||
"de",
|
|
||||||
"en"
|
|
||||||
],
|
|
||||||
"spellright.documentTypes": [
|
|
||||||
"markdown",
|
|
||||||
"latex",
|
|
||||||
"plaintext"
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
cmake_minimum_required (VERSION 2.6)
|
||||||
|
project(ScrapHacks)
|
||||||
|
SET(CMAKE_BUILD_TYPE "Release")
|
||||||
|
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}")
|
||||||
|
if(WIN32)
|
||||||
|
if(MSVC)
|
||||||
|
# ensure we use minimal "windows.h" lib without the crazy min max macros
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D \"WIN32_LEAN_AND_MEAN\"")
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D \"NOMINMAX\"")
|
||||||
|
# disable SAFESEH - to avoid "LNK2026: module unsafe"
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D \"SAFESEH:NO\"")
|
||||||
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
|
||||||
|
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
|
||||||
|
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
|
||||||
|
endif(MSVC)
|
||||||
|
endif(WIN32)
|
||||||
|
|
||||||
|
add_subdirectory(Injector)
|
||||||
|
add_subdirectory(ScrapHack)
|
|
@ -0,0 +1,2 @@
|
||||||
|
add_executable(Injector Injector.cpp)
|
||||||
|
install(TARGETS Injector DESTINATION bin)
|
|
@ -27,6 +27,11 @@ string GetLastErrorAsString()
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fail(char* msg) {
|
||||||
|
cerr << "[!] "<<msg<<": "<<GetLastErrorAsString()<<endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
string fromhex(string input)
|
string fromhex(string input)
|
||||||
{
|
{
|
||||||
transform(input.begin(), input.end(), input.begin(), ::toupper);
|
transform(input.begin(), input.end(), input.begin(), ::toupper);
|
||||||
|
@ -113,7 +118,6 @@ bool HasModule(int PID, const char *modname)
|
||||||
|
|
||||||
bool ProcRunning(DWORD PID)
|
bool ProcRunning(DWORD PID)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
|
||||||
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, PID);
|
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, PID);
|
||||||
if (hSnap == INVALID_HANDLE_VALUE)
|
if (hSnap == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
|
@ -130,14 +134,12 @@ bool adjustPrivs(HANDLE hProc)
|
||||||
TOKEN_PRIVILEGES tkprivs;
|
TOKEN_PRIVILEGES tkprivs;
|
||||||
if (!OpenProcessToken(hProc, (TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY), &hToken))
|
if (!OpenProcessToken(hProc, (TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY), &hToken))
|
||||||
{
|
{
|
||||||
cout << "[!] Could not Open Process Token: " << GetLastErrorAsString() << endl;
|
fail("Could not open process token:");
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
if (!LookupPrivilegeValue(0, SE_DEBUG_NAME, &luid))
|
if (!LookupPrivilegeValue(0, SE_DEBUG_NAME, &luid))
|
||||||
{
|
{
|
||||||
CloseHandle(hToken);
|
CloseHandle(hToken);
|
||||||
cout << "[!] Error Looking up Privilege Value: " << GetLastErrorAsString() << endl;
|
fail("Error looking up privilege value for SE_DEBUG_NAME");
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
tkprivs.PrivilegeCount = 1;
|
tkprivs.PrivilegeCount = 1;
|
||||||
tkprivs.Privileges[0].Luid = luid;
|
tkprivs.Privileges[0].Luid = luid;
|
||||||
|
@ -146,7 +148,7 @@ bool adjustPrivs(HANDLE hProc)
|
||||||
CloseHandle(hToken);
|
CloseHandle(hToken);
|
||||||
if (!bRet)
|
if (!bRet)
|
||||||
{
|
{
|
||||||
cout << "[!] Could Not Adjust Privileges: " << GetLastErrorAsString() << endl;
|
fail("Could not adjust privileges");
|
||||||
}
|
}
|
||||||
return bRet;
|
return bRet;
|
||||||
}
|
}
|
||||||
|
@ -161,31 +163,32 @@ void InjectDll(DWORD PID)
|
||||||
HANDLE hRemThread, hProc;
|
HANDLE hRemThread, hProc;
|
||||||
const char *dll_name = DLL_NAME;
|
const char *dll_name = DLL_NAME;
|
||||||
char dll_full_path[MAX_PATH];
|
char dll_full_path[MAX_PATH];
|
||||||
|
char executable_dir[MAX_PATH];
|
||||||
|
GetModuleFileNameA(NULL,executable_dir,MAX_PATH);
|
||||||
if (!fexists(dll_name))
|
if (!fexists(dll_name))
|
||||||
{
|
{
|
||||||
cout << "[!] DLL not found!" << endl;
|
fail("DLL not found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cout << "[*] Injecting DLL " << dll_name << " into PID " << PID << endl;
|
cout << "[*] Injecting DLL " << dll_name << " into PID " << PID << endl;
|
||||||
cout << "[*] Opening Process Handle" << endl;
|
cout << "[*] Opening process handle" << endl;
|
||||||
hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, PID);
|
hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, PID);
|
||||||
GetFullPathNameA(dll_name, MAX_PATH, dll_full_path, 0);
|
GetFullPathNameA(dll_name, MAX_PATH, dll_full_path, 0);
|
||||||
cout << "[*] Adjusting Privileges of Process" << endl;
|
cout << "[*] Adjusting privileges of process" << endl;
|
||||||
adjustPrivs(hProc);
|
adjustPrivs(hProc);
|
||||||
if (HasModule(PID, dll_name))
|
if (HasModule(PID, dll_name))
|
||||||
{
|
{
|
||||||
cout << "[*] DLL already Loaded" << endl;
|
cout << "[*] DLL already loaded" << endl;
|
||||||
CloseHandle(hProc);
|
CloseHandle(hProc);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
if (!fexists(dll_full_path))
|
if (!fexists(dll_full_path))
|
||||||
{
|
{
|
||||||
cout << "[!] DLL file not found!" << endl;
|
|
||||||
CloseHandle(hProc);
|
CloseHandle(hProc);
|
||||||
return;
|
fail("DLL file not found");
|
||||||
}
|
}
|
||||||
HINSTANCE hK32 = LoadLibraryA("kernel32");
|
HINSTANCE hK32 = LoadLibraryA("kernel32");
|
||||||
cout << "[*] Getting Address of LoadLibrary" << endl;
|
cout << "[*] Getting address of LoadLibrary" << endl;
|
||||||
LPVOID LoadLibrary_Address = (LPVOID)GetProcAddress(hK32, "LoadLibraryA");
|
LPVOID LoadLibrary_Address = (LPVOID)GetProcAddress(hK32, "LoadLibraryA");
|
||||||
FreeLibrary(hK32);
|
FreeLibrary(hK32);
|
||||||
cout << "[+] LoadLibrary is at " << LoadLibrary_Address << endl;
|
cout << "[+] LoadLibrary is at " << LoadLibrary_Address << endl;
|
||||||
|
@ -193,7 +196,7 @@ void InjectDll(DWORD PID)
|
||||||
LPVOID mem = VirtualAllocEx(hProc, NULL, strlen(dll_full_path), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
LPVOID mem = VirtualAllocEx(hProc, NULL, strlen(dll_full_path), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||||
if (mem == NULL)
|
if (mem == NULL)
|
||||||
{
|
{
|
||||||
cout << "[!] Could not Allocate Memory: " << GetLastErrorAsString() << endl;
|
fail("Could not allocate memory");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cout << "[*] Writing DLL Name to Process Memory at " << mem << endl;
|
cout << "[*] Writing DLL Name to Process Memory at " << mem << endl;
|
||||||
|
@ -228,37 +231,26 @@ int main(int argc, char *argv[])
|
||||||
DWORD PID = 0;
|
DWORD PID = 0;
|
||||||
char s_PID[MAX_PATH];
|
char s_PID[MAX_PATH];
|
||||||
snprintf(s_PID, MAX_PATH, "%d", GetCurrentProcessId());
|
snprintf(s_PID, MAX_PATH, "%d", GetCurrentProcessId());
|
||||||
SetEnvironmentVariable("Inj_PID", s_PID);
|
SetEnvironmentVariableA("Inj_PID", s_PID);
|
||||||
cout << "[*] Injector PID: " << GetCurrentProcessId() << endl;
|
|
||||||
if ((argc>1)&&fexists(argv[1])) {
|
if ((argc>1)&&fexists(argv[1])) {
|
||||||
|
cout << "[*] Injector PID: " << GetCurrentProcessId() << endl;
|
||||||
cout << "[*] Spawning process for \"" << argv[1] << "\"" << endl;
|
cout << "[*] Spawning process for \"" << argv[1] << "\"" << endl;
|
||||||
vector<HANDLE> handles = spawn(argv[1]);
|
vector<HANDLE> handles = spawn(argv[1]);
|
||||||
if (handles.empty()) {
|
if (handles.empty()) {
|
||||||
cout << "[!] Error: " << GetLastErrorAsString() << endl;
|
fail("Failed to spawn process");
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
hProc = handles[0];
|
hProc = handles[0];
|
||||||
hThread = handles[1];
|
hThread = handles[1];
|
||||||
PID = GetProcessId(hProc);
|
PID = GetProcessId(hProc);
|
||||||
cout << "[+] Got PID: " << PID << endl;
|
|
||||||
} else {
|
} else {
|
||||||
GetWindowThreadProcessId(FindWindowA("ScrapClass", NULL), &PID);
|
cerr<<"Usage: " << argv[0] << " <Path to Scrap.exe>"<<endl;
|
||||||
if (PID == 0)
|
return 1;
|
||||||
{
|
|
||||||
cout << "[*] Waiting for Scrapland to Launch..." << endl;
|
|
||||||
}
|
|
||||||
while (PID == 0)
|
|
||||||
{
|
|
||||||
Sleep(100);
|
|
||||||
GetWindowThreadProcessId(FindWindowA("ScrapClass", NULL), &PID);
|
|
||||||
}
|
|
||||||
cout << "[+] Found PID: " << PID << endl;
|
|
||||||
}
|
}
|
||||||
InjectDll(PID);
|
InjectDll(PID);
|
||||||
if (hThread != INVALID_HANDLE_VALUE) {
|
if (hThread != INVALID_HANDLE_VALUE) {
|
||||||
while (ResumeThread(hThread));
|
while (ResumeThread(hThread));
|
||||||
}
|
}
|
||||||
SetEnvironmentVariable("Inj_PID", NULL);
|
SetEnvironmentVariableA("Inj_PID", NULL);
|
||||||
cout << "[*] Done!" << endl;
|
cout << "[*] Done!" << endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -1,31 +0,0 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio 15
|
|
||||||
VisualStudioVersion = 15.0.27703.2042
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Injector", "Injector\Injector.vcxproj", "{7C91C225-D95C-4B7A-9251-0CE358BAF556}"
|
|
||||||
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
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|x86.ActiveCfg = Debug|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|x86.Build.0 = Debug|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|x64.Build.0 = Release|x64
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|x86.ActiveCfg = Release|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|x86.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
|
||||||
SolutionGuid = {8AE8D706-DEB4-42C3-AA4F-CEF2EB636A39}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
|
@ -1,164 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="15.0" 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>15.0</VCProjectVersion>
|
|
||||||
<ProjectGuid>{7C91C225-D95C-4B7A-9251-0CE358BAF556}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>Injector</RootNamespace>
|
|
||||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</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|Win32'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS ;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS ;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="stdafx.h" />
|
|
||||||
<ClInclude Include="targetver.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="Injector.cpp" />
|
|
||||||
<ClCompile Include="stdafx.cpp">
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets" />
|
|
||||||
</Project>
|
|
|
@ -1,33 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Quelldateien">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Headerdateien">
|
|
||||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
||||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Ressourcendateien">
|
|
||||||
<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>
|
|
||||||
<ClInclude Include="stdafx.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="targetver.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="stdafx.cpp">
|
|
||||||
<Filter>Quelldateien</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Injector.cpp">
|
|
||||||
<Filter>Quelldateien</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
|
@ -1,20 +1,11 @@
|
||||||
![Screenshot](img/Screenshot_1.png)
|
Open VS 2017 32-bit command prompt (`vcvars32.bat`)
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
0. Download `DirectX.8.0a.SDK.zip` from [here](https://archive.org/download/DirectX.8.0a.SDK_includes_libs_only)
|
|
||||||
1. Extract `DirectX.SDK/8.0/include` and `DirectX.SDK/8.0/lib` to `ScrapHacks/ScrapHack/dx8/include` and `ScrapHacks/ScrapHack/dx8/lib`
|
|
||||||
2. Add include and library dirs to project
|
|
||||||
3. Build Project
|
|
||||||
4. Run Injector `.\Injector.exe <Path to Scrap.exe>`
|
|
||||||
5. Wait for game to crash
|
|
||||||
6. Comment out `hook_d3d8()` call in `ScrapHack.cpp:DllPreInit()`
|
|
||||||
7. Rebuild and run Injector again
|
|
||||||
|
|
||||||
|
```batch
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="" ..
|
||||||
|
cmake --build .
|
||||||
|
cmake --install .
|
||||||
```
|
```
|
||||||
[F3 ] Unload ScrapHacks
|
|
||||||
[F7 ] Set Money to 0x7fffffff
|
this will drop the compiled files into `./build/bin`
|
||||||
[F8 ] Dump python modules to console
|
|
||||||
[F10] Enable python tracing
|
|
||||||
[ F ] "Handbrake" (*Will* crash the game after some time!)
|
|
||||||
```
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
include(ExternalProject)
|
||||||
|
ExternalProject_Add(DirectX
|
||||||
|
PREFIX ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
CONFIGURE_COMMAND ""
|
||||||
|
BUILD_COMMAND ""
|
||||||
|
INSTALL_COMMAND ""
|
||||||
|
URL https://archive.org/download/DirectX.8.0a.SDK_includes_libs_only/DirectX.8.0a.SDK.zip
|
||||||
|
URL_HASH SHA1=39f168336d0df92ff14d62d5e3aef1b9e3191312
|
||||||
|
)
|
||||||
|
ExternalProject_Get_Property(DirectX SOURCE_DIR)
|
||||||
|
include_directories(AFTER ${SOURCE_DIR}/8.0/include/)
|
||||||
|
link_directories(AFTER ${SOURCE_DIR}/8.0/lib/)
|
||||||
|
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
|
||||||
|
add_compile_definitions(POINTER_64=__ptr64)
|
||||||
|
add_library(ScrapHack SHARED ScrapHack.cpp dllmain.cpp)
|
||||||
|
target_link_libraries(ScrapHack d3d8 d3dx8 legacy_stdio_definitions)
|
||||||
|
install(TARGETS ScrapHack DESTINATION bin)
|
|
@ -13,12 +13,23 @@ D3DCOLOR color = D3DCOLOR_ARGB(255,255, 0, 0);
|
||||||
RECT Rect = { 0,0,0,0 };
|
RECT Rect = { 0,0,0,0 };
|
||||||
D3DRECT panel;
|
D3DRECT panel;
|
||||||
|
|
||||||
|
size_t size_ht(HashTable<EntityList>* ht);
|
||||||
|
size_t size_ht(HashTable<Entity>* ht);
|
||||||
|
|
||||||
LPDIRECT3DDEVICE8 Render(LPDIRECT3DDEVICE8 dev) {
|
LPDIRECT3DDEVICE8 Render(LPDIRECT3DDEVICE8 dev) {
|
||||||
if (!overlay) {
|
if (!overlay) {
|
||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
char text[1024];
|
char text[4096];
|
||||||
snprintf(text, 1024, "ScrapHack v0.1\nFrame: [%lld]", ++frame);
|
int32_t money = 0;
|
||||||
|
size_t num_ents = 0;
|
||||||
|
size_t num_ent_lst = 0;
|
||||||
|
if (ptr<void>(P_WORLD, 0)!=nullptr) {
|
||||||
|
money = ptr<int32_t>(P_WORLD, O_MONEY)[0];
|
||||||
|
num_ents= size_ht(ptr<HashTable<Entity>>(P_WORLD, O_ENTS));
|
||||||
|
num_ent_lst = size_ht(ptr<HashTable<EntityList>>(P_WORLD, O_ENTLISTS));
|
||||||
|
}
|
||||||
|
snprintf(text, 4096, "ScrapHack v0.1\nFrame: [%lld]\nMoney: [%d]\nEntities: [%ld]\nEntity Lists: [%ld]", ++frame, money, num_ents,num_ent_lst);
|
||||||
if (m_pFont == nullptr) {
|
if (m_pFont == nullptr) {
|
||||||
D3DXCreateFont(dev, hFont, &m_pFont);
|
D3DXCreateFont(dev, hFont, &m_pFont);
|
||||||
CloseHandle(hFont);
|
CloseHandle(hFont);
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
@ -11,10 +10,6 @@
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <TlHelp32.h>
|
#include <TlHelp32.h>
|
||||||
|
|
||||||
#pragma comment(lib, "d3d8.lib")
|
|
||||||
#pragma comment(lib, "d3dx8.lib")
|
|
||||||
#pragma comment(lib, "legacy_stdio_definitions.lib")
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#include "Scrapland.h"
|
#include "Scrapland.h"
|
||||||
|
@ -34,230 +29,292 @@ HMODULE mod = 0;
|
||||||
void DllUnload(HMODULE);
|
void DllUnload(HMODULE);
|
||||||
void hook_exit();
|
void hook_exit();
|
||||||
|
|
||||||
size_t dump_ht(HashTable<EntityList>* ht) {
|
size_t size_ht(HashTable<EntityList> *ht)
|
||||||
size_t cnt = 0;
|
{
|
||||||
for (size_t i = 0; i < ht->size; ++i) {
|
size_t cnt = 0;
|
||||||
HashTableEntry<EntityList>* ent = ht->chains[i];
|
for (size_t i = 0; i < ht->size; ++i)
|
||||||
if (ent) {
|
{
|
||||||
cout << i << ": ";
|
HashTableEntry<EntityList> *ent = ht->chains[i];
|
||||||
while (ent) {
|
if (ent)
|
||||||
++cnt;
|
{
|
||||||
cout << "[ " << ent->name << ": " << ent->data << "]";
|
while (ent)
|
||||||
if (ent->next) {
|
{
|
||||||
cout << " -> ";
|
++cnt;
|
||||||
};
|
ent = ent->next;
|
||||||
ent = ent->next;
|
}
|
||||||
}
|
}
|
||||||
cout << endl;
|
}
|
||||||
}
|
return cnt;
|
||||||
}
|
|
||||||
cout << cnt << " Entries" << endl;
|
|
||||||
return cnt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t dump_ht(HashTable<Entity>* ht) {
|
size_t size_ht(HashTable<Entity> *ht)
|
||||||
size_t cnt = 0;
|
{
|
||||||
for (size_t i = 0; i < ht->size; ++i) {
|
size_t cnt = 0;
|
||||||
HashTableEntry<Entity>* ent = ht->chains[i];
|
for (size_t i = 0; i < ht->size; ++i)
|
||||||
if (ent) {
|
{
|
||||||
cout << i << ": ";
|
HashTableEntry<Entity> *ent = ht->chains[i];
|
||||||
while (ent) {
|
if (ent)
|
||||||
++cnt;
|
{
|
||||||
cout << "[ " << ent->name << ": " << ent->data<<"]";
|
while (ent)
|
||||||
if (ent->next) {
|
{
|
||||||
cout << " -> ";
|
++cnt;
|
||||||
};
|
ent = ent->next;
|
||||||
ent = ent->next;
|
}
|
||||||
}
|
}
|
||||||
cout << endl;
|
}
|
||||||
}
|
return cnt;
|
||||||
}
|
}
|
||||||
cout << cnt << " Entries" << endl;
|
|
||||||
return cnt;
|
size_t dump_ht(HashTable<EntityList> *ht)
|
||||||
|
{
|
||||||
|
size_t cnt = 0;
|
||||||
|
for (size_t i = 0; i < ht->size; ++i)
|
||||||
|
{
|
||||||
|
HashTableEntry<EntityList> *ent = ht->chains[i];
|
||||||
|
if (ent)
|
||||||
|
{
|
||||||
|
cout << i << ": ";
|
||||||
|
while (ent)
|
||||||
|
{
|
||||||
|
++cnt;
|
||||||
|
cout << "[ " << ent->name << ": " << ent->data << "]";
|
||||||
|
if (ent->next)
|
||||||
|
{
|
||||||
|
cout << " -> ";
|
||||||
|
};
|
||||||
|
ent = ent->next;
|
||||||
|
}
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << cnt << " Entries" << endl;
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t dump_ht(HashTable<Entity> *ht)
|
||||||
|
{
|
||||||
|
size_t cnt = 0;
|
||||||
|
for (size_t i = 0; i < ht->size; ++i)
|
||||||
|
{
|
||||||
|
HashTableEntry<Entity> *ent = ht->chains[i];
|
||||||
|
if (ent)
|
||||||
|
{
|
||||||
|
cout << i << ": ";
|
||||||
|
while (ent)
|
||||||
|
{
|
||||||
|
++cnt;
|
||||||
|
cout << "[ " << ent->name << ": " << ent->data << "]";
|
||||||
|
if (ent->next)
|
||||||
|
{
|
||||||
|
cout << " -> ";
|
||||||
|
};
|
||||||
|
ent = ent->next;
|
||||||
|
}
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << cnt << " Entries" << endl;
|
||||||
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainLoop(HMODULE mod)
|
void MainLoop(HMODULE mod)
|
||||||
{
|
{
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
hook_exit();
|
hook_exit();
|
||||||
cout << "[*] Starting main Loop" << endl;
|
cout << "[*] Starting main Loop" << endl;
|
||||||
cout << endl;
|
cout << endl;
|
||||||
cout << "[F3 ] Unload ScrapHacks" << endl;
|
cout << "[F3 ] Unload ScrapHacks" << endl;
|
||||||
cout << "[F5 ] Show Overlay" << endl;
|
cout << "[F5 ] Show Overlay" << endl;
|
||||||
cout << "[F6 ] Show Alarm status" << endl;
|
cout << "[F6 ] Show Alarm status" << endl;
|
||||||
cout << "[F7 ] Set Money to 0x7fffffff" << endl;
|
cout << "[F7 ] Set Money to 0x7fffffff" << endl;
|
||||||
cout << "[F8 ] Dump python modules" << endl;
|
cout << "[F8 ] Dump python modules" << endl;
|
||||||
cout << "[F9 ] Dump Entity hashtable" << endl;
|
cout << "[F9 ] Dump Entity hashtable" << endl;
|
||||||
cout << "[F10] Enable python tracing" << endl;
|
cout << "[F10] Enable python tracing" << endl;
|
||||||
cout << "[ F ] \"Handbrake\" (*Will* crash the game after some time!)" << endl;
|
cout << "[ F ] \"Handbrake\" (*Will* crash the game after some time!)" << endl;
|
||||||
|
|
||||||
while (running)
|
while (running)
|
||||||
{
|
{
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
|
|
||||||
while (key_down('F'))
|
while (key_down('F'))
|
||||||
{
|
{
|
||||||
scrap_exec("dbg.brake()");
|
scrap_exec("dbg.brake()");
|
||||||
}
|
}
|
||||||
if (key_down_norepeat(VK_F3))
|
if (key_down_norepeat(VK_F3))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key_down_norepeat(VK_F5))
|
if (key_down_norepeat(VK_F5))
|
||||||
{
|
{
|
||||||
overlay = !overlay;
|
overlay = !overlay;
|
||||||
}
|
}
|
||||||
if (key_down_norepeat(VK_F6))
|
if (key_down_norepeat(VK_F6))
|
||||||
{
|
{
|
||||||
|
|
||||||
float* alarm = ptr<float>(P_WORLD, O_ALARM);
|
|
||||||
float* alarm_grow = ptr<float>(P_WORLD, O_ALARM_GROW);
|
|
||||||
cout << "Alarm: " << alarm[0] << " + " << alarm_grow[0] << endl;
|
|
||||||
}
|
|
||||||
if (key_down_norepeat(VK_F7))
|
|
||||||
{
|
|
||||||
int32_t *money = ptr<int32_t>(P_WORLD,O_MONEY);
|
|
||||||
*money = 0x7fffffff;
|
|
||||||
}
|
|
||||||
if (key_down_norepeat(VK_F8))
|
|
||||||
{
|
|
||||||
for (auto mod : Py)
|
|
||||||
{
|
|
||||||
for (auto meth : mod.second.methods)
|
|
||||||
{
|
|
||||||
cout << mod.first << "." << meth.first << " @ " << meth.second->ml_meth << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key_down_norepeat(VK_F9)) {
|
float *alarm = ptr<float>(P_WORLD, O_ALARM);
|
||||||
cout << "Entities:" << endl;
|
float *alarm_grow = ptr<float>(P_WORLD, O_ALARM_GROW);
|
||||||
dump_ht(ptr<HashTable<Entity>>(P_WORLD, O_ENTS));
|
cout << "Alarm: " << alarm[0] << " + " << alarm_grow[0] << endl;
|
||||||
cout << "Entity Lists:" << endl;
|
}
|
||||||
dump_ht(ptr<HashTable<EntityList>>(P_WORLD, O_ENTLISTS));
|
if (key_down_norepeat(VK_F7))
|
||||||
}
|
{
|
||||||
if (key_down_norepeat(VK_F10))
|
int32_t *money = ptr<int32_t>(P_WORLD, O_MONEY);
|
||||||
{
|
*money = 0x7fffffff;
|
||||||
scrap_exec("dbg.settrace()");
|
}
|
||||||
}
|
if (key_down_norepeat(VK_F8))
|
||||||
}
|
{
|
||||||
FreeLibraryAndExitThread(mod, 0);
|
for (auto mod : Py)
|
||||||
|
{
|
||||||
|
for (auto meth : mod.second.methods)
|
||||||
|
{
|
||||||
|
cout << mod.first << "." << meth.first << " @ " << meth.second->ml_meth << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key_down_norepeat(VK_F9))
|
||||||
|
{
|
||||||
|
cout << "Entities:" << endl;
|
||||||
|
dump_ht(ptr<HashTable<Entity>>(P_WORLD, O_ENTS));
|
||||||
|
cout << "Entity Lists:" << endl;
|
||||||
|
dump_ht(ptr<HashTable<EntityList>>(P_WORLD, O_ENTLISTS));
|
||||||
|
}
|
||||||
|
if (key_down_norepeat(VK_F10))
|
||||||
|
{
|
||||||
|
scrap_exec("dbg.settrace()");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FreeLibraryAndExitThread(mod, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitConsole()
|
void InitConsole()
|
||||||
{
|
{
|
||||||
char me[1024];
|
char me[1024];
|
||||||
GetModuleFileName(mod, me, 1024);
|
GetModuleFileName(mod, me, 1024);
|
||||||
SetupConsole(me);
|
SetupConsole(me);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_command(const char* cmd) {
|
void handle_command(const char *cmd)
|
||||||
cout << "CMD: " << cmd << endl;
|
{
|
||||||
scrap_log(0x00ff00, "HAXX: ");
|
cout << "CMD: " << cmd << endl;
|
||||||
scrap_log(0x00ff00,cmd);
|
scrap_log(0x00ff00, "HAXX: ");
|
||||||
scrap_log(0x00ff00,"\n");
|
scrap_log(0x00ff00, cmd);
|
||||||
return;
|
scrap_log(0x00ff00, "\n");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int hooked_console(const char* cmd) {
|
int hooked_console(const char *cmd)
|
||||||
typedef int(_cdecl *t_func)(const char*);
|
{
|
||||||
shared_ptr<Hook> hook = Hook::get(hooked_console);
|
typedef int(_cdecl * t_func)(const char *);
|
||||||
if (cmd[0] == '$') {
|
shared_ptr<Hook> hook = Hook::get(hooked_console);
|
||||||
handle_command(++cmd);
|
if (cmd[0] == '$')
|
||||||
return 0;
|
{
|
||||||
}
|
handle_command(++cmd);
|
||||||
int ret= hook->func<t_func>(cmd);
|
return 0;
|
||||||
return ret;
|
}
|
||||||
|
int ret = hook->func<t_func>(cmd);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hook_console() {
|
void hook_console()
|
||||||
Hook::addr(reinterpret_cast<void*>(P_CON_HANDLER) , hooked_console);
|
{
|
||||||
|
Hook::addr(reinterpret_cast<void *>(P_CON_HANDLER), hooked_console);
|
||||||
}
|
}
|
||||||
|
|
||||||
void H_Exit(){
|
void H_Exit()
|
||||||
typedef void(_cdecl *t_func)(void);
|
{
|
||||||
shared_ptr<Hook> hook = Hook::get(H_Exit);
|
typedef void(_cdecl * t_func)(void);
|
||||||
DllUnload(mod);
|
shared_ptr<Hook> hook = Hook::get(H_Exit);
|
||||||
HWND hMainWindow = ptr<HWND>(0x7FA830, 0x7c)[0];
|
DllUnload(mod);
|
||||||
SendMessage(hMainWindow, WM_CLOSE, 0, 0);
|
HWND hMainWindow = ptr<HWND>(0x7FA830, 0x7c)[0];
|
||||||
return;
|
SendMessage(hMainWindow, WM_CLOSE, 0, 0);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hook_exit() {
|
void hook_exit()
|
||||||
Hook::addr(reinterpret_cast<void*>(0x4010c0), H_Exit);
|
{
|
||||||
|
Hook::addr(reinterpret_cast<void *>(P_SCRAP_EXIT), H_Exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD PPID() {
|
DWORD PPID()
|
||||||
DWORD PID = GetCurrentProcessId();
|
{
|
||||||
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
|
DWORD PID = GetCurrentProcessId();
|
||||||
PROCESSENTRY32 procentry;
|
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
|
||||||
if (hSnapShot == INVALID_HANDLE_VALUE) {
|
PROCESSENTRY32 procentry;
|
||||||
cout << GetLastErrorAsString() << endl;
|
if (hSnapShot == INVALID_HANDLE_VALUE)
|
||||||
return -1;
|
{
|
||||||
}
|
cout << GetLastErrorAsString() << endl;
|
||||||
if (Process32First(hSnapShot, &procentry)) {
|
return -1;
|
||||||
do {
|
}
|
||||||
if (procentry.th32ProcessID == PID) {
|
if (Process32First(hSnapShot, &procentry))
|
||||||
CloseHandle(hSnapShot);
|
{
|
||||||
return procentry.th32ParentProcessID;
|
do
|
||||||
}
|
{
|
||||||
procentry.dwSize = sizeof(PROCESSENTRY32);
|
if (procentry.th32ProcessID == PID)
|
||||||
} while (Process32Next(hSnapShot, &procentry));
|
{
|
||||||
}
|
CloseHandle(hSnapShot);
|
||||||
CloseHandle(hSnapShot);
|
return procentry.th32ParentProcessID;
|
||||||
return -1;
|
}
|
||||||
|
procentry.dwSize = sizeof(PROCESSENTRY32);
|
||||||
|
} while (Process32Next(hSnapShot, &procentry));
|
||||||
|
}
|
||||||
|
CloseHandle(hSnapShot);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DllPreInit(HMODULE _mod) {
|
void DllPreInit(HMODULE _mod)
|
||||||
char mfn[1024];
|
{
|
||||||
char inj[MAX_PATH];
|
char mfn[1024];
|
||||||
DWORD INJ_PID=0;
|
char inj[MAX_PATH];
|
||||||
InitConsole();
|
DWORD INJ_PID = 0;
|
||||||
GetModuleFileName(0, mfn, 1024);
|
InitConsole();
|
||||||
Py = get_modules(P_PY_MODS);
|
GetModuleFileNameA(0, mfn, 1024);
|
||||||
cout << "[+] ScrapHacks v0.1 Loaded in " << mfn << " (PID: " << std::hex << GetCurrentProcessId() <<std::dec << ")" << endl;
|
Py = get_modules(P_PY_MODS);
|
||||||
GetEnvironmentVariable("Inj_PID", inj, MAX_PATH);
|
cout << "[+] ScrapHacks v0.1 Loaded in " << mfn << " (PID: " << std::hex << GetCurrentProcessId() << std::dec << ")" << endl;
|
||||||
SetEnvironmentVariable("Inj_PID", NULL);
|
GetEnvironmentVariableA("Inj_PID", inj, MAX_PATH);
|
||||||
hook_console();
|
SetEnvironmentVariableA("Inj_PID", NULL);
|
||||||
sscanf(inj, "%d", &INJ_PID);
|
hook_console();
|
||||||
cout << INJ_PID << "," << PPID() << endl;
|
sscanf_s(inj, "%d", &INJ_PID);
|
||||||
if (PPID() == INJ_PID) {
|
cout << INJ_PID << "," << PPID() << endl;
|
||||||
hook_d3d8();
|
if (PPID() == INJ_PID)
|
||||||
overlay = true;
|
{
|
||||||
}
|
hook_d3d8();
|
||||||
else {
|
overlay = true;
|
||||||
cout << "[-] No launched by Injector, not hooking DX8" << endl;
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
|
cout << "[-] No launched by Injector, not hooking DX8" << endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DllInit(HMODULE _mod)
|
void DllInit(HMODULE _mod)
|
||||||
{
|
{
|
||||||
initialized = true;
|
initialized = true;
|
||||||
mod = _mod;
|
mod = _mod;
|
||||||
Sleep(3000);
|
Sleep(3000);
|
||||||
cout << "[*] World: " << ptr<void>(P_WORLD, 0) << endl;
|
cout << "[*] World: " << ptr<void>(P_WORLD, 0) << endl;
|
||||||
cout << "[*] Importing python dbg module" << endl;
|
cout << "[*] Importing python dbg module" << endl;
|
||||||
scrap_exec("import dbg");
|
scrap_exec("import dbg");
|
||||||
scrap_log(0xff0000, "ScrapHacks loaded!\n");
|
scrap_log(0xff0000, "ScrapHacks loaded!\n");
|
||||||
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)MainLoop, mod, 0, 0);
|
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)MainLoop, mod, 0, 0);
|
||||||
cout << "[*] Starting message pump" << endl;
|
cout << "[*] Starting message pump" << endl;
|
||||||
MSG msg;
|
MSG msg;
|
||||||
while (GetMessage(&msg, NULL, 0, 0))
|
while (GetMessage(&msg, NULL, 0, 0))
|
||||||
{
|
{
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DllUnload(HMODULE _mod) {
|
void DllUnload(HMODULE _mod)
|
||||||
SetConsoleCtrlHandler(NULL, false);
|
{
|
||||||
unhook_d3d8();
|
SetConsoleCtrlHandler(NULL, false);
|
||||||
Hook::clear();
|
unhook_d3d8();
|
||||||
scrap_log(0xff0000, "ScrapHacks unloaded!\n");
|
Hook::clear();
|
||||||
cout << "[+] ScrapHacks unloaded, you can now close the console!" << endl;
|
scrap_log(0xff0000, "ScrapHacks unloaded!\n");
|
||||||
FreeConsole();
|
cout << "[+] ScrapHacks unloaded, you can now close the console!" << endl;
|
||||||
DestroyWindow(GetConsoleWindow());
|
FreeConsole();
|
||||||
return;
|
DestroyWindow(GetConsoleWindow());
|
||||||
|
return;
|
||||||
}
|
}
|
|
@ -1,178 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="15.0" 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>15.0</VCProjectVersion>
|
|
||||||
<ProjectGuid>{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>ScrapHack</RootNamespace>
|
|
||||||
<WindowsTargetPlatformVersion>10.0.17763.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>v141</PlatformToolset>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</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|Win32'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)dx8\include;$(SolutionDir)include</IncludePath>
|
|
||||||
<LibraryPath>$(ProjectDir)dx8\lib;$(SolutionDir)lib;$(LibraryPath)</LibraryPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)dx8\include;$(SolutionDir)include</IncludePath>
|
|
||||||
<LibraryPath>$(ProjectDir)dx8\lib;$(SolutionDir)lib;$(LibraryPath)</LibraryPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS ;WIN32;_DEBUG;SCRAPHACK_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_DEBUG;SCRAPHACK_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS ;WIN32;NDEBUG;SCRAPHACK_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;SCRAPHACK_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="D3D8_Hook.h" />
|
|
||||||
<ClInclude Include="VMT_Hook.h" />
|
|
||||||
<ClInclude Include="Hook.h" />
|
|
||||||
<ClInclude Include="Py_Utils.h" />
|
|
||||||
<ClInclude Include="Structures.h" />
|
|
||||||
<ClInclude Include="Scrapland.h" />
|
|
||||||
<ClInclude Include="stdafx.h" />
|
|
||||||
<ClInclude Include="targetver.h" />
|
|
||||||
<ClInclude Include="Util.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="dllmain.cpp" />
|
|
||||||
<ClCompile Include="ScrapHack.cpp" />
|
|
||||||
<ClCompile Include="stdafx.cpp">
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets" />
|
|
||||||
</Project>
|
|
|
@ -1,57 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Quelldateien">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Headerdateien">
|
|
||||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
||||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Ressourcendateien">
|
|
||||||
<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>
|
|
||||||
<ClInclude Include="stdafx.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="targetver.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Scrapland.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Util.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Structures.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Py_Utils.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Hook.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="D3D8_Hook.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="VMT_Hook.h">
|
|
||||||
<Filter>Headerdateien</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="stdafx.cpp">
|
|
||||||
<Filter>Quelldateien</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="ScrapHack.cpp">
|
|
||||||
<Filter>Quelldateien</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="dllmain.cpp">
|
|
||||||
<Filter>Quelldateien</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
|
@ -13,6 +13,7 @@
|
||||||
#define P_CON_HANDLER 0x402190
|
#define P_CON_HANDLER 0x402190
|
||||||
#define P_SCRAP_LOG 0x4134C0
|
#define P_SCRAP_LOG 0x4134C0
|
||||||
#define P_SCRAP_EXEC 0x5a8390
|
#define P_SCRAP_EXEC 0x5a8390
|
||||||
|
#define P_SCRAP_EXIT 0x4010c0
|
||||||
|
|
||||||
//FUNCTION TYPES
|
//FUNCTION TYPES
|
||||||
#define T_SCRAP_LOG int(_cdecl*)(unsigned int, const char*)
|
#define T_SCRAP_LOG int(_cdecl*)(unsigned int, const char*)
|
||||||
|
|
|
@ -134,9 +134,9 @@ T* __ptr(uintptr_t addr)
|
||||||
template<typename T>
|
template<typename T>
|
||||||
T* __ptr(uintptr_t addr, ptrdiff_t offset)
|
T* __ptr(uintptr_t addr, ptrdiff_t offset)
|
||||||
{
|
{
|
||||||
cout << "[" << (void*)addr << "] + " << (void*)offset << " = ";
|
//cout << "[" << (void*)addr << "] + " << (void*)offset << " = ";
|
||||||
addr = reinterpret_cast<uintptr_t*>(addr)[0] + offset;
|
addr = reinterpret_cast<uintptr_t*>(addr)[0] + offset;
|
||||||
cout << (void*)addr << endl;;
|
//cout << (void*)addr << endl;;
|
||||||
auto ret = __ptr<T>(addr);
|
auto ret = __ptr<T>(addr);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -144,9 +144,9 @@ T* __ptr(uintptr_t addr, ptrdiff_t offset)
|
||||||
|
|
||||||
template<typename T, typename... Offsets>
|
template<typename T, typename... Offsets>
|
||||||
T* __ptr(uintptr_t addr, ptrdiff_t offset, Offsets... offsets) {
|
T* __ptr(uintptr_t addr, ptrdiff_t offset, Offsets... offsets) {
|
||||||
cout << "[" << (void*)addr << "] + " << (void*)offset << " = ";
|
//cout << "[" << (void*)addr << "] + " << (void*)offset << " = ";
|
||||||
addr = reinterpret_cast<uintptr_t*>(addr)[0] + offset;
|
addr = reinterpret_cast<uintptr_t*>(addr)[0] + offset;
|
||||||
cout << (void*)addr << endl;;
|
//cout << (void*)addr << endl;;
|
||||||
auto ret = __ptr<T>(addr, offsets...);
|
auto ret = __ptr<T>(addr, offsets...);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,25 +4,24 @@ void DllInit(HMODULE);
|
||||||
void DllPreInit(HMODULE);
|
void DllPreInit(HMODULE);
|
||||||
void DllUnload(HMODULE);
|
void DllUnload(HMODULE);
|
||||||
|
|
||||||
|
|
||||||
BOOL APIENTRY DllMain(HMODULE hModule,
|
BOOL APIENTRY DllMain(HMODULE hModule,
|
||||||
DWORD ul_reason_for_call,
|
DWORD ul_reason_for_call,
|
||||||
LPVOID lpReserved)
|
LPVOID lpReserved)
|
||||||
{
|
{
|
||||||
HANDLE hThread = INVALID_HANDLE_VALUE;
|
HANDLE hThread = INVALID_HANDLE_VALUE;
|
||||||
switch (ul_reason_for_call)
|
switch (ul_reason_for_call)
|
||||||
{
|
{
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
DisableThreadLibraryCalls(hModule);
|
DisableThreadLibraryCalls(hModule);
|
||||||
DllPreInit(hModule);
|
DllPreInit(hModule);
|
||||||
hThread = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)DllInit, hModule, 0, 0);
|
hThread = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)DllInit, hModule, 0, 0);
|
||||||
break;
|
break;
|
||||||
case DLL_PROCESS_DETACH:
|
case DLL_PROCESS_DETACH:
|
||||||
DllUnload(hModule);
|
DllUnload(hModule);
|
||||||
break;
|
break;
|
||||||
case DLL_THREAD_ATTACH:
|
case DLL_THREAD_ATTACH:
|
||||||
case DLL_THREAD_DETACH:
|
case DLL_THREAD_DETACH:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
|
|
||||||
#include "targetver.h"
|
#include "targetver.h"
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN // Selten verwendete Komponenten aus Windows-Headern ausschließen
|
|
||||||
// Windows-Headerdateien:
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
// TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
|
// TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio 15
|
|
||||||
VisualStudioVersion = 15.0.27703.2042
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ScrapHack", "ScrapHack\ScrapHack.vcxproj", "{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Injector", "Injector\Injector\Injector.vcxproj", "{7C91C225-D95C-4B7A-9251-0CE358BAF556}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Any CPU = Debug|Any CPU
|
|
||||||
Debug|x64 = Debug|x64
|
|
||||||
Debug|x86 = Debug|x86
|
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
Release|x64 = Release|x64
|
|
||||||
Release|x86 = Release|x86
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Debug|x86.ActiveCfg = Debug|Win32
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Debug|x86.Build.0 = Debug|Win32
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Release|x64.Build.0 = Release|x64
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Release|x86.ActiveCfg = Release|Win32
|
|
||||||
{72CB1B9E-50C7-4010-BEAD-82FACF87A87A}.Release|x86.Build.0 = Release|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|x86.ActiveCfg = Debug|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Debug|x86.Build.0 = Debug|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|x64.Build.0 = Release|x64
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|x86.ActiveCfg = Release|Win32
|
|
||||||
{7C91C225-D95C-4B7A-9251-0CE358BAF556}.Release|x86.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
|
||||||
SolutionGuid = {663B3F14-E592-447F-8F03-3210FE04AA89}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
Binary file not shown.
Before Width: | Height: | Size: 807 KiB |
Loading…
Reference in New Issue