Cześć ;)
w czym tkwi problem:
otóż napisałem prostą funkcje która która będzie zmieniać mi wartość adresu.
Jakiego adresu? No postanowilem zrobić mini cheata do pasjansa by po zinjectowaniu pliku dll mój wynik zmienił się na 9999
Wyciągnąłem z pasjansa adres bazowy który sie nie zmienia i wygląda on tak
Solitaire.exe"+0x3691C8
do tego adresu dochodzi sie poziomowo ,czyli:
Solitaire.exe+0x3691C8 + ofset = nowy adres i ten nowy adres +ofset2 = koncowy adres
wszystkie adresy są inne po każdym uruchomieniu gry. Nie zmienia sie tylko
Solitaire.exe+0x3691C8
więc zrobiłem mini haczka,jednak to
Solitaire.exe sie
zmienia co uruchomienie gry.. i nie wiem jaką to ma wartośc
chciałbym za każdym razem gdy zinjectuje moją funkcje mięć wartość tego procesu... na dodatek mam błąd w kodzie z którym nie moge sie uporać
oto mój kod
#include <windows.h>
//ADRESY
#define ADR_PLPTR ("Solitaire.exe"+0x3691C8) //adres bazowy pasjansa
#define OFS_PTR 0x8006D0 // ofset bazowego adresu który po dodaniu tworzy adres
#define ADR_PLOFS (ADR_PLPTR + OFS_PTR) // suma bazowego adresu i offsetu
#define OFS_WYNIK 0x16C // kolejny offset do adresu powstałego w wyniku dodania ofsetu 0x8006D0 by powstał adres dynamiczny
//////////////////////////////////////////////////////
//FUNKCJA
void FUNKCJA()
{
*( float * )( ADR_PLOFS + OFS_WYNIK ) = 9999; //
}
//SLEEP
void Pentelka()
{
FUNKCJA();
Sleep( 150 );
}
//BAZA
BOOL WINAPI DllMain( HINSTANCE module, DWORD dwReason, LPVOID lpvReserved )
{
//MessageBoxA(NULL, NULL, "Cheat zinjectowany", MB_OK);
if( dwReason == DLL_PROCESS_ATTACH )
{
CreateThread( NULL, NULL,( LPTHREAD_START_ROUTINE ) Pentelka, NULL, NULL, NULL );
}
return true;
}
a tu error
Kodzik.cpp( 18 )
: error C2440
: 'type cast'
: cannot convert from 'System::String ^' to 'float *' Cannot convert a managed type to an unmanaged type
Bardzo mi zależy ,nie moge sie z tym uporać za pomoc stawiam piwo :D