GRY-Online.pl --> Archiwum Forum

Pisane trainera w C++ lub Delphi

19.01.2005
15:37
smile
[1]

MGS BigBoss [ Konsul ]

Pisane trainera w C++ lub Delphi

wie ktoś jak napisać lub ma kod źródłowy trainer napisanego w Delphi \ C++ Buldier

chciałem to przetworzyć by było w jakimś języku to napisane

19.01.2005
19:02
[2]

MGS BigBoss [ Konsul ]

^up^

19.01.2005
20:13
[3]

kun4 [ Konsul ]

Kiedys o czyms takim myslalem, ale doszedlem do wniosku ze musze najpierw wiedziec w jakim pliku jaka warytosc zmieniac,a reszta to juz jest pikus

20.01.2005
18:22
[4]

MGS BigBoss [ Konsul ]

niejest to takie trudne tu masz opisane
https://mgs.gry-online.pl/mg_artykuly.php?art=konstrukcja_trainera

nit niewie jak pisać w C++ lub Delphi ????

22.01.2005
08:49
[5]

MGS BigBoss [ Konsul ]

^up^

22.01.2005
15:27
[6]

MGS BigBoss [ Konsul ]

^up^

23.01.2005
12:20
[7]

MGS BigBoss [ Konsul ]

^up^

24.01.2005
13:31
smile
[8]

MGS BigBoss [ Konsul ]


nitk się nie intersował pisaniem trainera?

26.01.2005
11:39
[9]

MGS BigBoss [ Konsul ]

^up^

26.01.2005
11:40
[10]

Swidrygajłow [ ]

ja bym może i napisał ale to za nudne

26.01.2005
12:00
[11]

MGS BigBoss [ Konsul ]

Swidrygajłow ---> ale mi chodzi o to że to ja chce napisać tylko niewiem jak :| dał byś jakiegoś linka do źródła albo kursu

26.01.2005
12:03
[12]

Swidrygajłow [ ]

nie znam rzadnego kursu, kiedyś widziałem 1 bardzo prosty, z zupełnymi podstawami
poszukaj jakiejś książki, widizałem kiedyś "C++ Builder 3" i tam były podstawy
a w ogole przydałaby sie znajomość c++

02.02.2005
16:29
[13]

MGS_Saladin [ ]

^up^

02.02.2005
18:44
[14]

aka [ Chor��y ]

w linku znajdziesz źródła trainerów napisane w assemblerze.

Ogólnie zainteresuj się tymi funkcjami:
FindWindow
GetWindowThreadProcessId
OpenProcess
WriteProcessMemory
oraz ewentualnie:
CreateThread

02.02.2005
19:15
[15]

MGS_Saladin [ ]

a nic niema w języku C++ lub Delphi ?

03.02.2005
01:40
[16]

aka [ Chor��y ]

Na szybko napisałem taki program poglądowy, jak czegos nie wiesz to zajrzyj do MSDN lub innej rozpiski winapi.

#include <windows.h>
#include <iostream>
using namespace std;

DWORD ad = 0x0041D090;
DWORD val;
DWORD procid;
HWND hwnd;
HANDLE handle;
DWORD wat;
HANDLE watk;

DWORD WINAPI watek(void *) ‹
for (int i=0;i<10000;++i) ‹
Sleep(100);
WriteProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);

return 0;


int main()

hwnd = FindWindow(0, "Prog test");
GetWindowThreadProcessId(hwnd, &procid);
handle = OpenProcess(PROCESS_ALL_ACCESS, 0, procid);
ReadProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);
cout << val << endl;
val = 121;
WriteProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);
cout << val << endl;
watk = CreateThread(0,0,watek,0,0,&wat);
system("pause");
return 0;

03.02.2005
18:17
smile
[17]

MGS_Saladin [ ]

sory że zawracam gitare ale niejestem specjalistą :(

mam tego C++ Builder 6.0 Bulid 10.161 i takie małe pytanko. tak zaczyna się wstępnie kod:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)


//---------------------------------------------------------------------------



i wtym sęk że niedokońca wiem jak to powprowadzać.

wartości
------------------------------------
#include <windows.h>
#include <iostream>
using namespace std;
------------------------------------
wprowadzamy do pierwszej ramki za parametrem #include "Unit1.h":

niewiem tylko co z resztą zrobić :| czy mam stworzyć buttona i wrzucić reszte kodu? prosze o pokierowanie mnie :|

03.02.2005
20:56
[18]

MGS_Saladin [ ]

^up^

03.02.2005
21:57
smile
[19]

aka [ Chor��y ]

Na początku programu musisz wykonac:

hwnd = FindWindow(0, "tu_nazwa_okna_gry");
GetWindowThreadProcessId(hwnd, &procid);
handle = OpenProcess(PROCESS_ALL_ACCESS, 0, procid);

to powoduje ze masz w handle uchwyt do procesu i teraz:
to odczytuje pamiec
ReadProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);
a to zapisuje
WriteProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);

gdzie ad zawiera adres val wartos do zapisu/odczytu

aby jakąś wartość zamrozić aby nie spadało np. życie
tworzysz watek
watk = CreateThread(0,0,watek,0,0,&wat);

gdzie 'watek' to funkcja watku, moze wygladac tak:

DWORD WINAPI watek(void *) ‹
for (;;) ‹
Sleep(100);
WriteProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);

return 0;


a konczysz ten watek:
TerminateThread(watk,0);

Cały interface musisz zrobic sam, ja nie używam buildera.
Jeśli sobie z tym nie radzisz proponuje szukac gotowego trainera, a samemu pouczyc sie programowania lub dac sobie spokój.

Pozdrawiam

04.02.2005
15:37
[20]

MGS_Saladin [ ]

oki dokładna struktura mnie narazie nieinteresuje najpierw trzeba sprawić by ruszyło by dało się skompilować

możesz mi przedstawić to na rysunku bo niewiem :| ale się niepoddaje a jeśli chodzi o gotowe projekty trainera to nigdzie niewidać po prostu jakaś czystka i tyle piszą jedynie na tema trainera w asemblerze a to mija się z celem :(

04.02.2005
19:49
[21]

aka [ Chor��y ]

W linku masz ten program skompilowany.
Sam możesz go kompilować tak: bcc32.exe "con train.cpp"

programme test.exe <- to jest program ktory on modyfikuje, jego czesc oznaczoną 1
wciskasz przycisk iles razy a nastepnie odpalasz ten trainer i on zamraża wartosc.

Naprawde prponuje zacząć nauke programawania od podstaw.

04.02.2005
22:52
smile
[22]

MGS_Saladin [ ]

stukrotne dzięki :)

przetworzyłem po swojemu trainer by wyglądał tak jak ja chce tylko mam malutki problem bo niewiem jak wyeliminować wiersz poleceń by zakażdym razem jak nacisne buttona by się niepokazywał

05.02.2005
01:40
[23]

aka [ Chor��y ]

W pliku unit1.cpp to jest wykasuj:
#include <iostream>
using namespace std;
cout << "to bylo w tej komorce -> " << val << endl;
cout << "to bedzie w tej komorce -> " << val << endl;
system("pause");
bo to odnosi sie do konsoli.

I musisz jakoś zrobić, aby to wywołanie:
TerminateThread(watk, 0);
było wywoływane np. po ponownym nacisnieciu przycisku lub drugi przycisk który bedzie to wywolywal.
Bo naciskasz przycisk i zamrazasz wartosc i nie mozesz od razu usuwac watku bo nie bedzie zamrazac.


Ps. musisz linkowac VCL statycznie, bo inaczej wymaga dll do uruchomienia i u mnie nie działa :)

05.02.2005
10:09
smile
[24]

MGS_Saladin [ ]

dzięki

zostało mi juz tylko przestawienie tego z Bottona do innych komponentów:
Edit
CheckBox
TrackBar
i chyba tyle i biore się do roboty

05.02.2005
15:24
[25]

MGS_Saladin [ ]

^up^

05.02.2005
17:48
[26]

MGS_Saladin [ ]

^up^

05.02.2005
23:18
[27]

MGS_Saladin [ ]

^up^

06.02.2005
12:12
[28]

MGS_Saladin [ ]

^up^

06.02.2005
21:19
[29]

MGS_Saladin [ ]

^up^

07.02.2005
13:43
[30]

MGS_Saladin [ ]

^up^

07.02.2005
13:48
[31]

ronn [ moralizator ]

^up^

08.02.2005
06:41
[32]

MGS_Saladin [ ]

:)

ronn -> ty też czekasz na odpowieć

08.02.2005
10:52
smile
[33]

aka [ Chor��y ]

Na jakie pytanie oczekujesz odpowiedzi?

09.02.2005
10:10
[34]

MGS_Saladin [ ]

tak wygląda teraz mój kod:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include "Unit1.h"
#include <windows.h>
DWORD ad;
DWORD val;
DWORD procid;
HWND hwnd;
HANDLE handle;
DWORD wat;
HANDLE watk;
//------
DWORD WINAPI watek(void *) ‹
for (;;) ‹
Sleep(100);
WriteProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);
//-- te cztery linijki byly przed val = 400;
// hwnd = FindWindow(0, "Metal Gear Solid PC");
// GetWindowThreadProcessId(hwnd, &procid);
// handle = OpenProcess(PROCESS_ALL_ACCESS, 0, procid);
// ReadProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)


//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)

hwnd = FindWindow(0, "Metal Gear Solid PC");
GetWindowThreadProcessId(hwnd, &procid);
handle = OpenProcess(PROCESS_ALL_ACCESS, 0, procid);
ReadProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);
DWORD ad = 0x0078E808;
val = 400;
WriteProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);
watk = CreateThread(0,0,watek,0,0,&wat);
TerminateThread(watk, 0);

//---------------------------------------------------------------------------


teraz działa to na zasadzie naciśnięcia BOTTON'a a jeszcze chciał bym by ten sam adres działał na komponecie TRACKBAR by po przesunięciu skazówki wartości się zmieniały

i komponent EDIT by w okienku wpisywać się dało ile dokładnie chcemy

09.02.2005
10:24
[35]

MGS_Saladin [ ]

niemuszą byś dosłownie te komponęty

zamiast komponentu EDIT może być MEMO
a zamiast TRACKBAR może być SCROLLBAR

09.02.2005
20:18
[36]

MGS_Saladin [ ]

^up^

09.02.2005
22:41
[37]

aka [ Chor��y ]

Tak na szybko to Ci nie pomogę. Nie używam Buildera.
Wstawiasz komponent na forme klikasz 2 razy i wprowadzasz odpowiedni kod. Z tego co się orientuję to borland robi całkiem dobrego Helpa, musisz zacząć go czytać.
Wychodzi na to, że sam nic nie umiesz i chcesz abym Ci go napisał a Ty tylko poustawiasz sobie kompinenty tak jak chcesz. Nieładnie.
Jak znajde kiedyś czas i chęci to zainstaluje Buildera i pomyśle.
Tyle.

10.02.2005
01:06
smile
[38]

MGS_Saladin [ ]

niejestem dobry w programowaniu a chciałem napisać w tym języku bo daje duże możliwości

ale mimo wszystko dzięki

10.02.2005
14:48
smile
[39]

aka [ Chor��y ]

Coś tam skleciłem.

10.02.2005
23:34
[40]

MGS_Saladin [ ]

dzięki

a jeszcze jedno malutkie pytanie odnośnie Edit - jak zrobić by było na bierząco wyświetlane jaka wartość jest tzn.

w grze mam 100 zyc w programie pisze 100
strace 20 i mam 80 a w programie tez bedzie pisac 80

zalezy mi przede wszystkim na komponęcie Edit

10.02.2005
23:58
smile
[41]

aka [ Chor��y ]

Jeżeli sciągałeś to niedługo po moim poście to ściągnij jeszcze raz.
Poprawiłem to.

11.02.2005
10:30
[42]

MGS_Saladin [ ]

hmm

niewiem dlaczego ale twoje projekty u mnie niedają się kompilować powycinałem pokombinowałem z tym by działało na Builderze ale tego jak się samo odświerza niemoge znaleść :| tego jakoś niewidze :| możesz przedstawić tylko ten sam kod który wyświetla wartość do Edita ? na przykładzie Buttona? tzn:

Po naciśnięciu Buttona wartość w Edit się pobiera z gry

a to moja walka z C++:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#pragma package(smart_init)
#pragma resource "*.dfm"
#include <iostream.h>
#include "Unit1.h"
#include <windows.h>
DWORD ad;
DWORD val;
DWORD procid;
HWND hwnd;
HANDLE handle;
DWORD wat;
HANDLE watk;
//------
DWORD WINAPI watek(void *) ‹
for (;;) ‹
Sleep(100);
WriteProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)


//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)

hwnd = FindWindow(0, "Metal Gear Solid PC");
GetWindowThreadProcessId(hwnd, &procid);
handle = OpenProcess(PROCESS_ALL_ACCESS, 0, procid);
ReadProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);

DWORD ad = 0x0078E80e;
val=
WriteProcessMemory(handle, (void*)ad, &val, sizeof(val), 0);
watk = CreateThread(0,0,watek,0,0,&wat);
TerminateThread(watk, 0);

//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar2Change(TObject *Sender)

val = TrackBar2->Position;
Edit1->Text = val;

//---------------------------------------------------------------------------
void __fastcall TForm1::Edit3Change(TObject *Sender)

if (Edit3->Text.Length() > 0) ‹
val = StrToInt(Edit3->Text);
TrackBar2->Position = val;


------------------------------------------------------------------------

19.02.2005
12:45
[43]

MGS_Saladin [ ]

^up^

26.02.2005
13:57
[44]

MGS_Saladin [ ]

^up^

03.03.2005
19:47
[45]

MGS_Saladin [ ]

^up^

03.03.2005
21:15
smile
[46]

aka [ Chor��y ]

Jak masz jakieś konkretne pytania to wal na GG.

Pozdro.

© 2000-2025 GRY-OnLine S.A.