ExtraForum - 1299 Private Serverlar - Server Dosya Paylaşımları
Would you like to react to this message? Create an account in a few clicks or log in to continue.
ExtraForum - 1299 Private Serverlar - Server Dosya Paylaşımları

Güncel Paylaşım Forumu !
 
AnasayfaGaleriAramaLatest imagesKayıt OlGiriş yap
Eğlence Başladı Rütbeni Seç! TIKLA
Moderatör Alımı Başladı TIKLA

 

 Trainer Yapımı [Visual Basic]

Aşağa gitmek 
+2
0 ®h Negatif
ALPA
6 posters
YazarMesaj
ALPA
Site Kurucusu
Site Kurucusu
ALPA


Mesaj Sayısı : 815
Nerden : Ankara
Kayıt tarihi : 02/03/09
Rep Puanı Rep Puanı : 32

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimeÇarş. Nis. 08, 2009 5:15 pm

Oyunlar Köleniz Olsun, Trainer Yapımı -1-

Merhaba arkadaşlar. Bu sitedeki ilk makalem. Dilerim sizlere faydalı bilgiler verebilirim. Belki bilen arkadaşlar vardır ama sitede aradım, bu konuyla ilgili bir makale bulamadım. Programcılığa başlamadan önce hep merak ederdim. "Ya bu trainer'leri nasıl yaparlar" diye.. Yani bir program ya da oyuna dışarıdan bir programla hükmediyorsun. Fakat bunun ne kadar kolay olduğunu birazdan göreceksiniz. Neyse, sözü fazla uzatıp, siz İ.Explorer'ınızı kill etmeden inşaata başlayalım.

Trainer yapımının mantığı tamamen RAM'den okuma / RAM'e yazma mantığına dayanıyor. Yani oyunlardaki değerler (para, altın, gümüş ve diğer materyaller) RAM'de o oyuna ait bir hafıza adresinde saklanıyor, siz de biricik Visual Basic'inizle bu adreslerdeki değerleri değiştirerek oyuna hükmediyorsunuz. Buradan anladığınız gibi trainer yapmak için iki aşamamız var. Bunlardan biri değerin saklandığı hafıza adresini bulmak, ikincisi de değeri değiştirmek...

Birinci aşama işin zor olan kısmı (biliyorsunuz, zor kelimesi görecelidir). Bunu bir program ile halledeceğiz. Aslında kodla yapmamız da mümkün ama onu da yazmaya kalkarsam baştan vazgeçersiniz Tebessüm Neyse bunu ikinci yazıya bırakalım. Hafıza adresini bulmak için kullanacağımız programın ismi GAMEWIZ32. Bu programı [Linkleri görebilmek için üye olun veya giriş yapın.] adresinden indirebilirsiniz. Kullanılışı gayet kolay. Türkçe dil desteği de var. İndireceğiniz zip'in içine programın tam açıklamasını yazdım. Bu arada belirteyim hafıza adresini bir kez buluyoruz, bu adres normal şartlarda değişmez (aşağıda yazdığım nedenler hariç) oyun her açıldığında aynı adresleri kullanır. Bu adresleri programı yazma aşamasında kullanacaz. Lafı fazla uzatmayalım, ben hafızayı yukarıdaki programla taradığınızı ve mevcut değerin hafıza adresini bulduğunuzu varsayıyorum ve tam gaz ikinci aşamaya (işin kolay kısmına) geçiyorum:

Sabredin, aklıma gelmişken küçük bi açıklama daha, hafıza adresleri tiplerine göre sınıflandırılır. Tıpkı Visual Basic'deki değişken tipleri gibi, çünkü bu değişkenler de RAM'de saklanır. Bunlar oyunlarda genelde byte, integer ve long'dur. Ben bu örnekte long kullanacam, en kalın kafalı olanıdır bu yüzden hiçbir oyunda sorun çıkarmaz sanıyorum. Yani bu kısım, oyundaki değerin oyun yazılırken nasıl tanımlandığına göre değişir. Bu değeri fazla abartmayın, oyun hata verip kapanabilir, örneğin oyunda en fazla 99 yazılacak yere 9999 yazarsanız oyun doğal olarak yalan olacaktır:) ama kalıcı bir sorun oluşturmaz. Yeniden açtığınızda çalışır. Tamam, tamam başlıyoruz.

'Bunu bir module kopyalayın çok işimize yarayacak;

'----------------MODÜL BAŞLANGICI--------------------------

'Önce Ram'e yazmak için gerekli api'leri deklare edelim.

Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF
Private Declare Function GetWindowThreadProcessId Lib "User32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long
Private Declare Function ReadProcessMem Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

'Şimdi de fonksiyonumuzu yazıyoruz.

Public Function Longyaz(Offset As Long, WindowName As String, Value As Long) As Boolean

Dim hwnd As Long
Dim ProcessID As Long
Dim ProcessHandle As Long

'Önce oyunun pencere numarasını bulalım;
hwnd = FindWindow(vbNullString, WindowName)

If hwnd = 0 Then 'Oyun şuanda açık değilse
MsgBox "Oyun şuanda açık değil!", vbCritical, "Yazma Hatası" 'Eğer isterseniz bu satırı kaldırabilirsiniz, oyun açık değilse zaten trainer bi işe yaramaz:)
Exit Function

End If

GetWindowThreadProcessId hwnd, ProcessID

ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)

If ProcessHandle = 0 Then

Exit Function

End If

WriteProcessMemory ProcessHandle, Offset, Value, 4, 0& 'Değeri yazıyoruz
CloseHandle ProcessHandle 'Yazma işlemi bitti, pencere kulbunu kapatıyoruz


End Function
'------------------MODÜL BURAYA KADAR--------------------------


KULLANILIŞI:

Ben bu makalede örnek olarak STRONGHOLD CRUSADER oyununun üç tane değerini yazıyorum. Çok sevdiğim bir strateji oyunudur. Her oyunun mantığı aynı. Modül değişmeyecek, değişen yalnızca hafıza adresleri ve oyunun pencere yazısı. Forma üç tane textbox koyun. Text1, Text2 ve Text3. Bunların yanına birer'de label, son olarak da command butonu. Benim örneğime göre;

Text1=Altın,
Text2=Ağaç,
Text3=Taş

Temsil edecek. Modülün kullanılışı tek satır. Değiştirmek istediğimiz her değer için bu tek satırı tekrarlayacaz.

KULLANIM: Longyaz hafıza_adresi, oyunun_pencere_yazısı, yazılacak_değer

Şöyle ki,


Private Sub Command1_Click()

Longyaz &HD5E104, "Crusader", text1.text 'Altın için
Longyaz &HD5E0D0, "Crusader", text2.text 'Ağaç için
Longyaz &HD5E0D8, "Crusader", text3.text 'Taş için

End Sub


İşte bu kadar, Şimdi değerleri text kutularına girip command1'e bastığımızda yazdığımız değerler kadar altın, ağaç ve taş kazandık. (Oyunun açık olması gerekir)

AÇIKLAMALAR:

- Unutmamanız geren birinci kural, gamewiz32 programıyla bulunan hafıza adresinin başına &H ibaresini getirmeniz. Örneğin altın için bulduğumuz hafıza adresi D5E104'dü. Ama burda kullanılışı &HD5E104 olacaktır.

- İkinci kuralımız bazı oyunların hafıza adresleri değişken olabilmesi. Bunun nasıl çözüldüğünü henüz bilmiyorum. Eğer bilen arkadaşlar varsa bana bildirseler sevinirim. Örneğin, Need For Speed Underground oyununda Sınırsız Nitro'nun hafıza adresini buluyorum fakat oyun her başladığında bu adres değişiyor. Doğal olarak trainer'ım ikinciye çalışmıyor. Ama aynı oyunun İngilizce traineri var elimde ve her seferinde sorunsuz çalışıyor. Demek yapılabiliyormuş.

Bunula birlikte işletim sistemleri değişince hafıza adresleri de değişiklik gösterebilir. Ben denemedim ama Windows Milennium'da bu tür bir farklılık var sanıyorum. Yani siz genellikle trainer'i kullanacaklara yazdığınız platformu kullananmalarını önerin.

Hafıza adresi bir de oyunun versiyonuna göre değişiklik gösterir. Diyelim siz oyunun 1.0 versiyonuna bir trainer yazdınız, bu trainer, exe dosya farklı olacağından 1.1 versiyonda çalışmaz.

Kısacası, oyundaki değerlerin hafıza adreslerinin yukarıdaki üç nedenden ötürü değişiklik göstermesi halinde, yazdığınız trainer bir işe yaramaz.

- Oyunun pencere yazısı dedik onu açıklamadık. Ya ne çok açıklama yaptım dimi? Neyse arkadaşlar idare edin. Bu sitede ilk makalemiz. Hem bilmeyen arkadaşlar için de yararlı olur. Pencere yazısını bulmak için, oyunu çalıştırıp simge durumuna küçültün, daha sonra fare imleci ile görev çubuğundaki simgenin üzerine gelin. Açıklama kutusu gelecektir. Bu yazıyı tırnak içinde aynen yazmalısınız. Tek bir karakter hatası = trainerin çalışmaması demektir
Sayfa başına dön Aşağa gitmek
http://www.weyyo.com
0 ®h Negatif
Sponsor
Sponsor
0 ®h Negatif


Mesaj Sayısı : 328
Nerden : Visual Basic'ten
Kayıt tarihi : 22/04/09
Rep Puanı Rep Puanı : 19

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimeCuma Mayıs 01, 2009 8:30 pm

Teşekkürler fkat herkesin yapabileceği birşey değil:(
Sayfa başına dön Aşağa gitmek
http://www.extra.yetkin-forum.com
ßLinKo
Geveze KO Team
Geveze KO Team
ßLinKo


Mesaj Sayısı : 254
Nerden : •4NK4R4•
Kayıt tarihi : 24/04/09
Rep Puanı Rep Puanı : 36

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimeCuma Mayıs 01, 2009 8:35 pm

pek zor değil yapamadıysan yrdm ederim Tebessüm
Sayfa başına dön Aşağa gitmek
https://goo.gl/NBRKZb
mamilim90
Level 83
Level 83
mamilim90


Mesaj Sayısı : 218
Nerden : Uzaydan : )
Kayıt tarihi : 26/04/09
Rep Puanı Rep Puanı : 0

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimePtsi Mayıs 18, 2009 6:16 pm

et bn ilk deneyişimde yapamadım fakaT çOK kolay:D ama bi türlü Ölümsüzlk falan onları yapamadım
Sayfa başına dön Aşağa gitmek
0 ®h Negatif
Sponsor
Sponsor
0 ®h Negatif


Mesaj Sayısı : 328
Nerden : Visual Basic'ten
Kayıt tarihi : 22/04/09
Rep Puanı Rep Puanı : 19

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimePtsi Mayıs 18, 2009 6:43 pm

Tebessüm :)Saol
Sayfa başına dön Aşağa gitmek
http://www.extra.yetkin-forum.com
CeRKeS
Level 45
Level 45
avatar


Mesaj Sayısı : 87
Kayıt tarihi : 04/05/09
Rep Puanı Rep Puanı : 2

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimePaz Mayıs 24, 2009 10:26 am

koxpun mantıgına çok benzio bence koxpda bole turetildi.
Sayfa başına dön Aşağa gitmek
mamilim90
Level 83
Level 83
mamilim90


Mesaj Sayısı : 218
Nerden : Uzaydan : )
Kayıt tarihi : 26/04/09
Rep Puanı Rep Puanı : 0

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimePaz Mayıs 24, 2009 5:23 pm

CeRKeS demiş ki:
koxpun mantıgına çok benzio bence koxpda bole turetildi.

Koxp bOle OLmaz:D
Sayfa başına dön Aşağa gitmek
CeRKeS
Level 45
Level 45
avatar


Mesaj Sayısı : 87
Kayıt tarihi : 04/05/09
Rep Puanı Rep Puanı : 2

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimeSalı Mayıs 26, 2009 6:44 pm

mantıq sace Tebessüm
Sayfa başına dön Aşağa gitmek
CeRKeS
Level 45
Level 45
avatar


Mesaj Sayısı : 87
Kayıt tarihi : 04/05/09
Rep Puanı Rep Puanı : 2

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimeSalı Mayıs 26, 2009 6:45 pm

Mesela GoLd Bar Prosu Wardı Bi ara
Sayfa başına dön Aşağa gitmek
SessizAdam
Sponsor
Sponsor
SessizAdam


Mesaj Sayısı : 571
Kayıt tarihi : 09/05/09
Rep Puanı Rep Puanı : 47

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimeSalı Mayıs 26, 2009 7:20 pm

ßLinKoda Trojenlisini Yaptı:
[Linkleri görebilmek için üye olun veya giriş yapın.]

Mutlu Mutlu

________Kullanıcı İmzası_________
[Linkleri görebilmek için üye olun veya giriş yapın.]

[Linkleri görebilmek için üye olun veya giriş yapın.]
Sayfa başına dön Aşağa gitmek
mamilim90
Level 83
Level 83
mamilim90


Mesaj Sayısı : 218
Nerden : Uzaydan : )
Kayıt tarihi : 26/04/09
Rep Puanı Rep Puanı : 0

Trainer Yapımı [Visual Basic] Empty
MesajKonu: Geri: Trainer Yapımı [Visual Basic]   Trainer Yapımı [Visual Basic] Icon_minitimeÇarş. Mayıs 27, 2009 7:22 am

SessizAdam demiş ki:
ßLinKoda Trojenlisini Yaptı:
[Linkleri görebilmek için üye olun veya giriş yapın.]

Mutlu Mutlu
o Gold bar bugu ne işe yarıo indiriremedm link silinmiş rapidden
Sayfa başına dön Aşağa gitmek
 
Trainer Yapımı [Visual Basic]
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Visual Basic'te Analog Saat Yapımı
» Visual Basic DİZİLER
» Visual Basic Nedir?
» Visual Basic Derleyici
» Visual Basic Değişkenler.

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ExtraForum - 1299 Private Serverlar - Server Dosya Paylaşımları :: Kodlama & Programlama :: Visual Basic-
Buraya geçin:  

weyyo

knight online serverlar

metin2 serverlar

silkroad serverlar