aboutsummaryrefslogtreecommitdiff
path: root/CSGO
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2019-08-03 21:34:37 +0200
committerToni Uhlig <matzeton@googlemail.com>2019-08-03 21:34:37 +0200
commit71c00ee7fd0afd9fd195a76ad3563c249c60dc2e (patch)
treeb755d8e7aa29fe0d17400c682375e828b16574f5 /CSGO
parente847b6ca32a13a657e5ddb8aa7e9f1faac63fe7d (diff)
basic csgo memory reader
Diffstat (limited to 'CSGO')
-rw-r--r--CSGO/CSGO.cpp53
1 files changed, 40 insertions, 13 deletions
diff --git a/CSGO/CSGO.cpp b/CSGO/CSGO.cpp
index 9b6921c..e7c58fd 100644
--- a/CSGO/CSGO.cpp
+++ b/CSGO/CSGO.cpp
@@ -110,25 +110,52 @@ int wmain(int argc, wchar_t **argv)
std::wcout << L"Kernel Interface Handshake() failed" << std::endl;
return 1;
}
- if (targetPID) {
- if (!ki.Modules(targetPID, modules))
- std::wcout << L"Kernel Interface Modules() failed with 0x"
- << std::hex << ki.getLastNtStatus() << std::endl;
- else std::wcout << L"Got " << std::dec << modules.size() << L" modules for pid 0x"
- << std::hex << targetPID << std::endl;
- if (!ki.Pages(targetPID, pages))
- std::wcout << L"Kernel Interface Pages() failed with 0x"
- << std::hex << ki.getLastNtStatus() << std::endl;
- else std::wcout << L"Got " << std::dec << pages.size() << L" mapped pages for pid 0x"
- << std::hex << targetPID << std::endl;
- }
+ if (!ki.Modules(targetPID, modules))
+ std::wcout << L"Kernel Interface Modules() failed with 0x"
+ << std::hex << ki.getLastNtStatus() << std::endl;
+ else std::wcout << L"Got " << std::dec << modules.size() << L" modules for pid 0x"
+ << std::hex << targetPID << std::endl;
+#if 0
+ if (!ki.Pages(targetPID, pages))
+ std::wcout << L"Kernel Interface Pages() failed with 0x"
+ << std::hex << ki.getLastNtStatus() << std::endl;
+ else std::wcout << L"Got " << std::dec << pages.size() << L" mapped pages for pid 0x"
+ << std::hex << targetPID << std::endl;
+#endif
+
+ MODULE_DATA *engineDLL = NULL;
for (MODULE_DATA& md : modules) {
- std::wcout << md.BaseDllName << std::endl;
+ if (strncmp(md.BaseDllName, "engine.dll", sizeof md.BaseDllName) == 0) {
+ std::wcout << L"FOUND ENGINE DLL at " << std::hex << md.DllBase << "!!!" << std::endl;
+ engineDLL = &md;
+ }
}
running = TRUE;
do {
+ if (engineDLL) {
+ DWORD dwClientState = 5836172;
+ PVOID clientStatePtr = (PVOID)((ULONG_PTR)engineDLL->DllBase + dwClientState);
+ std::wcout << L"engine.dll+dwClientState: " << std::hex << clientStatePtr << std::endl;
+ clientStatePtr = (PVOID)((ULONG_PTR)KMemory::Rpm<DWORD>(targetPID, clientStatePtr));
+ DWORD clientState = KMemory::Rpm<DWORD>(targetPID, clientStatePtr);
+ std::wcout << L"clientStatePtr..........: " << std::hex << clientStatePtr << std::endl;
+ std::wcout << L"clientState.............: " << std::hex << clientState << std::endl;
+
+ DWORD dwLocalPlayer = 384;
+ PVOID localPlayerPtr = (PVOID)((ULONG_PTR)clientStatePtr + dwLocalPlayer);
+ DWORD localPlayer = KMemory::Rpm<DWORD>(targetPID, localPlayerPtr);
+ std::wcout << L"localPlayerPtr..........: " << std::hex << localPlayerPtr << std::endl;
+ std::wcout << L"localPlayer.............: " << std::hex << localPlayer << std::endl;
+
+ DWORD dwPlayerHealth = 256;
+ PVOID playerHealthPtr = (PVOID)((ULONG_PTR)localPlayerPtr + dwPlayerHealth);
+ DWORD playerHealth = KMemory::Rpm<DWORD>(targetPID, playerHealthPtr);
+ std::wcout << L"playerHealthPtr.........: " << std::hex << playerHealthPtr << std::endl;
+ std::wcout << L"playerHealth............: " << std::hex << playerHealth << std::endl;
+ }
+
if (ki.RecvWait() == SRR_TIMEOUT) {
std::wcout << L"Ping -> ";
if (!ki.Ping()) {