DWORD MemoryManagement::readMemory(DWORD adress[]) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(DWORD), 0);
for (int i = 1; i < MemoryManagement::toolmanager.getArrayLenght(adress); i++) {
ReadProcessMemory(handle, (void*)(value + adress[i]), &value, sizeof(DWORD), 0);
}
return value;
}
void MemoryManagement::writeMemory(DWORD adress[], int enter) {
DWORD value = MemoryManagement::readMemory(adress);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
WriteProcessMemory(handle, (void*)value, &enter, sizeof(enter), NULL);
}
void MemoryManagement::writeMemory(DWORD adress, int enter) {
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
WriteProcessMemory(handle, (void*)adress, &enter, sizeof(enter), NULL);
}
template <class MyDataType>
int WriteMemory(DWORD Address, MyDataType Value)
{
if (WriteProcessMemory(hProcess, (LPVOID)Address, &Value, sizeof(MyDataType), NULL)) { return 0; } else return GetLastError();
}
DWORD playerlife[] = { 0x109B74 , 0xF8 };
DWORD FindDmaAddy(int PointerLevel, HANDLE hProcHandle, DWORD Offsets[], DWORD BaseAddress)
{
DWORD pointer = BaseAddress;
DWORD pTemp;
DWORD pointerAddr;
for (int c = 0; c < PointerLevel; c++)
{
if (c == 0)
{
ReadProcessMemory(hProcHandle, (LPCVOID)pointer, &pTemp, sizeof(pTemp), NULL);
}
pointerAddr = pTemp + Offsets[c];
ReadProcessMemory(hProcHandle, (LPCVOID)pointerAddr, &pTemp, sizeof(pTemp), NULL);
}
return pointerAddr;
}
DWORD BaseAddressOfModule; DWORD PlayerBase; int Health; ReadProcessMemory ( MyHandle, (LPVOID)(BaseAddressOfModule + 0x109B74), &PlayerBase, sizeof (PlayerBase), NULL); ReadProcessMemory ( MyHandle, (LPVOID)(PlayerBase+ 0xF8), &Health, sizeof (Health), NULL);
DWORD FindDmaAddy(int PointerLevel, HANDLE hProcHandle, DWORD Offsets[], DWORD BaseAddress)
{
DWORD pointer = BaseAddress;
DWORD pTemp;
DWORD pointerAddr;
for (int c = 0; c < PointerLevel; c++)
{
if (c == 0)
{
ReadProcessMemory(hProcHandle, (LPCVOID)pointer, &pTemp, sizeof(pTemp), NULL);
}
pointerAddr = pTemp + Offsets[c];
ReadProcessMemory(hProcHandle, (LPCVOID)pointerAddr, &pTemp, sizeof(pTemp), NULL);
}
return pointerAddr;
}
template <class Object>
void MemoryManagement::writePlayerMemory(DWORD adress[], Object enter) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(Object), 0);
WriteProcessMemory(handle, (void*)(value + adress[1]), &enter, sizeof(Object), NULL);
}
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(Object), 0);
WriteProcessMemory(handle, (void*)(value + adress[1]), &enter, sizeof(Object), NULL);
template <class Object>
Object MemoryManagement::writePlayerMemory(DWORD adress[]) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(value), 0);
Object Buffer;
WriteProcessMemory(handle, (void*)(value + adress[1]), &Buffer, sizeof(Buffer), NULL);
return Buffer;
}
int Health = MemoryManagement::writePlayerMemory<int>({ 0x109B74, 0xF8 });
template <class Object>
void MemoryManagement::writePlayerMemory(DWORD adress[], Object enter) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(value), 0);
WriteProcessMemory(handle, (void*)(value + adress[1]), &Buffer, sizeof(Buffer), NULL);
}
int Health;
MemoryManagement::writePlayerMemory<int>({ 0x109B74, 0xF8 }, &Health);
Severity Code Description Project File Line Error LNK2019 unresolved external symbol "public: void __thiscall MemoryManagement::writePlayerMemory<int>(unsigned long * const,int)"
int main() {
DWORD playerlife[] = { 0x109B74 , 0xF8 };
MemoryManagement manager("ac_client.exe");
manager.initialize();
manager.writePlayerMemory<int>(playerlife, 300);
cin.get();
return 0;
}
public: template <class Object> void writePlayerMemory(DWORD adress[], Object enter);
template <class Object>
void MemoryManagement::writePlayerMemory(DWORD adress[], Object enter) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(Object), 0);
WriteProcessMemory(handle, (void*)(value + adress[1]), &enter, sizeof(Object), NULL);
}
template <class Object> void writePlayerMemory(DWORD adress[], Object enter);
void MemoryManagement::writePlayerMemory(DWORD adress[], Object enter) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(Object), 0);
WriteProcessMemory(handle, (void*)(value + adress[1]), &enter, sizeof(Object), NULL);
}
int Health;
void MyFunction();
Health = 100;
void MyFunction()
{
Health = 100;
}
int Health = 100;
template <class Object>
void writePlayerMemory(DWORD adress[], Object enter) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(Object), 0);
WriteProcessMemory(handle, (void*)(value + adress[1]), &enter, sizeof(Object), NULL);
}
template <class Object>
void writePlayerMemory(DWORD adress[], Object enter) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, MemoryManagement::manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(MemoryManagement::manager.processAddress_ + adress[0]), &value, sizeof(value), 0);
WriteProcessMemory(handle, (void*)(value + adress[1]), &enter, sizeof(Object), NULL);
}

void writePlayerMemory(DWORD adress[], Object enter) {
DWORD value = 0x0;
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, 0, manager.mainprocess_->th32ProcessID);
ReadProcessMemory(handle, (void*)(manager.processAddress_ + adress[0]), &value, sizeof(value), 0);
WriteProcessMemory(handle, (void*)(value + adress[1]), &enter, sizeof(Object), NULL);
}