
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
MGS BigBoss [ Konsul ]
^up^
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
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 ????
MGS BigBoss [ Konsul ]
^up^
MGS BigBoss [ Konsul ]
^up^
MGS BigBoss [ Konsul ]
^up^

MGS BigBoss [ Konsul ]
nitk się nie intersował pisaniem trainera?
MGS BigBoss [ Konsul ]
^up^
Swidrygajłow [ ]
ja bym może i napisał ale to za nudne
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
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++
MGS_Saladin [ ]
^up^
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
MGS_Saladin [ ]
a nic niema w języku C++ lub Delphi ?
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;

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 :|
MGS_Saladin [ ]
^up^

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
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 :(
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.

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ł
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 :)

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
MGS_Saladin [ ]
^up^
MGS_Saladin [ ]
^up^
MGS_Saladin [ ]
^up^
MGS_Saladin [ ]
^up^
MGS_Saladin [ ]
^up^
MGS_Saladin [ ]
^up^
ronn [ moralizator ]
^up^
MGS_Saladin [ ]
:)
ronn -> ty też czekasz na odpowieć

aka [ Chor��y ]
Na jakie pytanie oczekujesz odpowiedzi?
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
MGS_Saladin [ ]
niemuszą byś dosłownie te komponęty
zamiast komponentu EDIT może być MEMO
a zamiast TRACKBAR może być SCROLLBAR
MGS_Saladin [ ]
^up^
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.

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

aka [ Chor��y ]
Coś tam skleciłem.
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

aka [ Chor��y ]
Jeżeli sciągałeś to niedługo po moim poście to ściągnij jeszcze raz.
Poprawiłem to.
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;
------------------------------------------------------------------------
MGS_Saladin [ ]
^up^
MGS_Saladin [ ]
^up^
MGS_Saladin [ ]
^up^

aka [ Chor��y ]
Jak masz jakieś konkretne pytania to wal na GG.
Pozdro.