Z jakich plików korzysta jaki program ustalisz programem FileMon (to nazwa skrócone od File Monitor). A poza tym pisząc Tweaka masz chyba na myśli Trainer skoro to do gry. Ustal sobie Cheat Engine jakie adresy są zmieniane, a także czy da się ustalić Pointer na nie. Jak znajdować Pointery w Cheat Engine masz pokazane na wilu stronach do wyszukania w google oraz w tutorialach video - oczywiście na YouTube, także po polsku można znaleźć. Ale nie jest to specjalnie trudne. Od siebie jako pomoc dołączam do tego posta własny trainer do starej gry "Horde" do (pobrania z: http://staregry.pl/?c=_gv&i=751), którą odpalsz pod DosBoxem (http://www.dosbox.com). Jak widzisz działa to na zasadzie wstrzyknięcia dllki do procesu DosBoxa, a dzięki wcześniejszym ustaleniom z Cheat Engfine wiem, że Crowns czyli waluta używana w tej grze siedzi pod następującym adresem Pointera i jest przesunięta o poniższy ofset - patrz niżej. Natomiast offset z energią jest zapisywany pod innym ofsetem pobieranym na podstawie offsetu dodanego do ImageBase (w tym przypadku ImageBase to standardowo $400000.
Stałe dla kasiory oraz energii
Crowns_Pointer = $74B6B0;
Crowns_Offset = $1B1E98;
Energy_Offset = $1BA966;
Wykrywanie wartości
procedure GetValuesAmount;
var
Read : Cardinal;
HProcess : THandle;
begin
AmountOfCrowns := PDWORD(PDWORD(Crowns_Pointer)^ + Crowns_Offset)^;
HProcess := OpenProcess(PROCESS_ALL_ACCESS, False, GamePid);
if HProcess > 0 then
begin
ReadProcessMemory(HProcess, Ptr($400000 + $34B6B0),
@Energy_Address, SizeOf(Energy_Address), Read);
CloseHandle(HProcess);
AmountOfEnergy := ReadValue2(GamePid, Energy_Address + Energy_Offset);
end;
end;
Mam nadzieję, że to coś Tobie pomoże. A kod tego Trainera w wersji z szukaniem charaktrystycznych Offsetów w pamięci (mało eleganckie ale nieraz jedyna metoda na stare Amigowe gry uruchamiane pod WinUAE jak na przykład ulubiona moja gra Sensible World of Soccer) i dodawaniu do nich określonej wartości aby znaleźć w pamięci zmieniające miejsce dane oraz metoda na wstrzykanie dllki do procesu przez prosty loader i moduł afxcodehook.pas pokazywałem tutaj już kiedyś w innym wątku. Tylko zastanawia mnie ta nazwa Tweaker, bo z Tweakerami do gier się nie spotkałem, jedynie raczej właśnie z różnego rodzaju Trainerami. A całośc napisałem oczywiście w polubionym ostatnio WinAPI aby prosty Trainer nie był spuchniętym rozmiarowo exeko - molochem. Dodatkowo aby plik exe był jeszcze mniejszy skorzystałem z modułów dostepnych na: http://kolmck.net/sys/SysDcu7.zip które kiedyś dla aplikacji WinAPI polecił mi Misiekd. Dzięki temu exek i dllka po spakowaniu są jeszcze mniejsze. Ale ma to miejsce tylko jeśli nie korzystamy z modułów VCL, bo inaczej programu nie skompilujemy.