- Yasaklandı
- #1
İnsanların senin sesiyle dalga geçmesini umursama
Banlı Üye
Selam ben Arda tekrardan bugün sizle Ders 2'de yapcaklarımızı kısaca anlatayım önceki çektiğimiz pointerı hemen kullanmıcaz ilk başda amacımız basit tanımlar HWND , HANDLE gibi tanımları öğrenmek hadi başlayalım o zaman
Bildiğiniz gibi C++ içerisinde bazı terimler var ancak bu terimler "Windows.h" adlı kütüphane içinde yer alıyor En basitinden;
FindWindowA = Bir pencereyi bulmamızı sağlar
HANDLE = Bir şeyi ele almak gibi düşünebilirsiniz örnek olarak HANDLE gameHandle = OpenProcess(PROCESS_ALL_ACCESS,FALSE,procID);
process id = procID = bu kısaca bir işlem kimliği gibi düşünebilirsiniz yani özetlemek gerekirsek oyun penceresi görmek gibi
GetWindowThreadProcessID = Bunuda bir pencerenin procIDsini alıp az önceki gibi HANDLE atmak gibi düşünebilirsiniz
Evet farkındayım birazcık detayına inmedim ancak bunlar zamanla öğreneceğiniz şeyler şimdi size basit bir Bir modülün ana addresini alma kodunu göstereyim
C++:
DWORD GetModuleBaseAddress(char* moduleName, DWORD ProcessID)
{
DWORD baseAddress = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessID);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
MODULEENTRY32 modEntry32 = { 0 };
modEntry32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hSnapshot, &modEntry32))
{
do
{
if (!strcmp(modEntry32.szModule, moduleName))
{
baseAddress = (DWORD)modEntry32.modBaseAddr;
break;
}
} while (Module32Next(hSnapshot, &modEntry32));
}
CloseHandle(hSnapshot);
}
return baseAddress;
}
[CENTER]
Bunuda main fonksiyonumuza çağırmak için şöyle basit bir kodla çağırıyoruz gibi düşünebilirsiniz
ACModule = GetModuleBaseAddress((char*)"ac_client.exe", procID);
Ancak unutmayın ACModule global bir değişken olarak tanıyın aksi takdirde öyle bir parametre olmadığını söylicektir
Evet basit kodlardan bahsettiğimize göre son olarak basit bir kod yazıp dahada iyi kavramaya çalışalım
Öncelikle vs 2019 üzerinde bir console projesi açınız C++ dilinde
Ardından bir proje oluşturup şu şekilde özellikler kısmında şunları açınız
Evet kütüphanelerimiz bağladık ardından global değişkenlerimizi tanımlıyoruz başlıca şunlar
Şimdi diceksiniz neden AssaultCubeAmmo olarak bir değişken tanımlayıp atama yaptırma çalıştın arkadaşlar önceki videoda aldığımız pointerı kullanıcaz tekrardan ama sadece manual olarak eklicez ve geçici addresi alıcaz burda sadece pointer bu iş için kullanıyoruz diğer derslerde size pointer ve offsetsleri kullanıp yapmayı göstericem
Evet şimdi Cheat Engine adlı programına dönüp eski dersden aldığım pointer otomatik olarak eklicem tam olarak böyle
Evet kalıcı addresim benim tam olarak bu 029FA320 sizde farklı çıkabilir lütfen copy paste yapmaya çalışmayın
Son olarak addresimi böyle ekliyorum
Evet kodumuzun son hali böyle mantığı zaten dediklerimi anlattım birazcık incelerseniz anlarsınız
Evet son olarak WriteProcessMemory olayını yapıcam evet üstte anlatmadım olayını ancak ReadProcessMemory ve WriteProcessMemory mantığını bir dahaki konuda anlatıcam şu anlık sadece görün
Arkadaşlar (PVOID)&AssaultCubeAmmoyu direk olarak (PVOID)AssaultCubeAmmo yapın bende şimdi fark ettim sorry
Bu arada int maxammo diye bir int değeri açtım global ordakini değerini referans olarak alıyorum gibi düşünün evet bakalım kodumuzu deneyelim
Gördüğünüz gibi kodumuz çalışıyor neyse bu derslik bu kadar diyelim basit bir kod yazdık tanımları anlamanız ve mantığı çözmeniz açısından
Notlar : Büyük ihtimalle anlamayanlar yapamıcaklar olucak o yüzden bir discord açtım paylaşmam yasak o yüzden yardıma ihtiyacı olan arkadaşlar bu discordu eklesin yardım ederiz Discord : sure sure#0644 [/CENTER]