CSGO - Hile Skin Changer Yapımı (Detaylı)

Kuara

Üye
28 May 2023
133
62
Turan
Merhaba değerli TürkHackTeam üyeleri
Ben
Kuara


CSGO Oyununda biliyorsunuz ki hileyi herkes yapıyor ve oyunun tadı tuzu kalmaadığı zamanlar oluyor.
Öyle bir hile olsun ki başkasına oyunu zehir etmeden kendim zevk alayım dediğiniz bu hileyi yani Skin-Changer yapımını öğreteceğim.


Skin-Changer oyunda ki istediğimiz skini kullanmamızda yardımcı olan bir hiledir, yalnızca bizde gözükür öbür oyun arkadaşlarını görmez.
Oyuna renk katmak amaçlı ve para harcamadan istediğimiz skinleri nasıl kullanırız anlatmaya başlayım.



Konuda C++ Kullanacağız, Konu uzun olacağı için "Visual Studio" nasıl kurulur vb ufak şeylere deyinmek istemedim.
! Visual Studio Code kullanmıyoruz

! Visual Studio indirdikten sonra "c++" seçin ve indirmeye bırakın.




-- Şimdi offsets düzeltmemiz gerekiyor

1-Hazedumper Source: GitHub - frk1/hazedumper-rs: Source code of the hazedumper written in Rust
2-Hazedumper Config: GitHub - frk1/hazedumper: up to date csgo offsets and hazedumper config

1- Linke girip sağ tarafta bulunan "Version 2.4.4" kısmına basıyoruz, Windows.zip seçin.



Şimdi masaüstüne "hazedumper" adında klasör oluşturun.
İndirdiğimiz rar içine girin .exe uzantılı program bulacaksınız açtığımız klasöre aktarın.


2- Linke girin ve "config.json" adlı dosyanın içine girin.


"RAW" yazan butona basıyoruz ve kodlar boş bir sayfaya gelecek.


Açtığımız klasöre giriyoruz ve "config.json" adlı metin dosyası oluşturuyoruz.


"RAW" diyerek aldığımız kodları kopyalayıp "notepad++" uygulaması ile "config.json" metin dosyamıza yapıştırıp kaydediyoruz.

!! Notepad++ kullanmayı unutmayın


--CSGO Giriyoruz Alt-Tab attıktan sonra dosyamızdan .exe çalıştırıyoruz yüklendikten sonra dosyalara csgo adlı dosyalar gelecek.
! Oyunu tam ekran pencereliye alın .exe başlattığınızda oyun arayüzünde olmanız geerekiyor





-- Linkleri öğrenelim

3 - Offsets: hazedumper/csgo.hpp at master · frk1/hazedumper.
4 - Item Definitions: mp_items_prohibited - Valve Developer Community
5 - Skin IDs: CS:GO Skin ID List | Total CS:GO




Program açıldıktan sonra "Create a new project" diyoruz


"skinchanger" yazarak devam ediyoruz


Debug x64 kısmını resimdeki gibi değiştirin


"skinchanger" sağ tıklayıp Özellikler diyoruz


"C++ Dil Standardı" kısmını "ISO C++ Standart" yapıyoruz


Gelişmiş kısmından "Karakter Kümesi" diyoruz ve "Çok Baytlı Karakter Kümesi Kullan" diyoruz.,


"Kaynak Dosyaları" sağ tıklayın ekle diyim ve "main.cpp" yazarak enterlayın.

"Üst Bilgi Dosyaları" sağ tıklayın ekle diyin ve "memory.h" yazın enterlayın


"memory.h" verdiğim kodları yapıştırın

C++:
#pragma once
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <TlHelp32.h>


#include <cstdint>
#include <string_view>


class Memory
{
private:
    std::uintptr_t processId = 0;
    void* processHandle = nullptr;


public:
    // Constructor that finds the process id
    // and opens a handle
    Memory(const std::string_view processName) noexcept
    {
        ::PROCESSENTRY32 entry = { };
        entry.dwSize = sizeof(::PROCESSENTRY32);


        const auto snapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);


        while (::Process32Next(snapShot, &entry))
        {
            if (!processName.compare(entry.szExeFile))
            {
                processId = entry.th32ProcessID;
                processHandle = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);
                break;
            }
        }


        // Free handle
        if (snapShot)
            ::CloseHandle(snapShot);
    }


    // Destructor that frees the opened handle
    ~Memory()
    {
        if (processHandle)
            ::CloseHandle(processHandle);
    }


    // Returns the base address of a module by name
    const std::uintptr_t GetModuleAddress(const std::string_view moduleName) const noexcept
    {
        ::MODULEENTRY32 entry = { };
        entry.dwSize = sizeof(::MODULEENTRY32);


        const auto snapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, processId);


        std::uintptr_t result = 0;


        while (::Module32Next(snapShot, &entry))
        {
            if (!moduleName.compare(entry.szModule))
            {
                result = reinterpret_cast<std::uintptr_t>(entry.modBaseAddr);
                break;
            }
        }


        if (snapShot)
            ::CloseHandle(snapShot);


        return result;
    }


    // Read process memory
    template <typename T>
    constexpr const T Read(const std::uintptr_t& address) const noexcept
    {
        T value = { };
        ::ReadProcessMemory(processHandle, reinterpret_cast<const void*>(address), &value, sizeof(T), NULL);
        return value;
    }


    // Write process memory
    template <typename T>
    constexpr void Write(const std::uintptr_t& address, const T& value) const noexcept
    {
        ::WriteProcessMemory(processHandle, reinterpret_cast<void*>(address), &value, sizeof(T), NULL);
    }
};




main.cpp beraber kodlayacağız.


Hazırsanız başlayalım artık :)

C++:
#include "memory.h"




#include <thread>
#include <array>








int main()
{




}




int main()
{








    return 0;
}








{} Arasına şimdi güncel offset yerleştireceğiz bunları verdiğim linklerden 3. olana giriyoruz.


Şimdi size kelimeleri vericem o kelimeleri teker teker "ctrl+f" yaparak aratacaksınız ve en güncel offset bulacaksınız



KELİMELER
// Hizmetler
dwLocalPlayer
dwEntityList
dwClientState


// Player
m_mHyWWeapons


// Temel
m_flFallbackWear
m_nFallbackPaintKit
m_mFallbackSeed
m_nFallbackStatTrak
m_iItemDefinitionIndex
m_iItemIDHigh
m_iEntityQuality
m_iAccountID
m_OriginalOwnerXuidLow



Örnek 1.sonuç bizlere " constexpr ::std::ptrdiff_t dwLocalPlayer = 0xDE997C; " bunu vericeck kopyalayıp yapıştırıyoruz tamamını.


C++:
#include "memory.h"








int main()
{
    // Hizmetler
    constexpr ::std:trdiff_t dwLocalPlayer = 0xDE997C;
    constexpr ::std:trdiff_t dwEntityList = 0x4DFEF0C;
    constexpr ::std:trdiff_t dwClientState = 0x59F19C;




    // Player
    constexpr ::std:trdiff_t m_hMyWeapons = 0x2E08;




    // Temel
    constexpr ::std:trdiff_t m_flFallbackWear = 0x31E0;
    constexpr ::std:trdiff_t m_nFallbackPaintKit = 0x31D8;
    constexpr ::std:trdiff_t m_nFallbackSeed = 0x31DC;
    constexpr ::std:trdiff_t m_nFallbackStatTrak = 0x31E4;
    constexpr ::std:trdiff_t m_iItemDefinitionIndex = 0x2FBA;
    constexpr ::std:trdiff_t m_iItemIDHigh = 0x2FD0;
    constexpr ::std:trdiff_t m_iEntityQuality = 0x2FBC;
    constexpr ::std:trdiff_t m_iAccountID = 0x2FD8;
    constexpr ::std:trdiff_t m_OriginalOwnerXuidLow = 0x31D0;




}




int main()
{








    return 0;
}







Şimdi case silah ıd olarak geçer bunları verdiğim linklerden öğrenebilirsiniz

return skin ıd olarak geçer attığım linkleri araştırarak istediğiniz skinleri bulabilir ıdsını alabilirsiniz







C++:
// Silah - Skin
constexpr const int GetWeaponPaint(const short& itemDefinition)
{
    switch (itemDefinition)
    {
    case 1: return 711; // 1 ıd = deagle
    case 4: return 38; // 4 ıd = glock
    case 61: return 653; // 61 ıd = usp
    case 7: return 490; // 7ıd = ak
    case 9: return 344; // 9 ıd = awp
 
    }
}




C++:
int main()
{
    const auto memory = Memory{ "csgo.exe" };




    // Modül Adresleri
    const auto client = memory.GetModuleAddress("client.dll");
    const auto engine = memory.GetModuleAddress("engine.dll");








    // Hack Loop
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));




        const auto& localPlayer = memory.Read<std::uintptr_t>(client + offset::dwLocalPlayer);
        const auto& weapons = memory.Read<std::array<unsigned long, 8>>(localPlayer + offset::m_hMyWeapons);




        // Oyuncu Silah
        for (const auto& handle : weapons)
        {
            const auto& weapon = memory.Read<std::uintptr_t>((client + offset::dwEntityList + (handle & 0xFFF) * 0x10) - 0x10);




            // Silah Geçerliliği
            if (!weapon)
                continue;




            // Cilt Uygulama
            if (const auto paint = GetWeaponPaint(memory.Read<short>(weapon + offset::m_iItemDefinitionIndex)))
            {
                const bool shouldUpdate = memory.Read<std::int32_t>(weapon + offset::m_nFallbackPaintKit) != paint;




                // Silah Yedek Değerleri
                memory.Write<std::int32_t>(weapon + offset::m_iItemIDHigh, -1);




                memory.Write<std::int32_t>(weapon + offset::m_nFallbackPaintKit, paint);
                memory.Write<float>(weapon + offset::m_flFallbackWear, 0.1f);




                if (shouldUpdate)
                memory.Write<std::int32_t>(memory.Read<std::uintptr_t>(engine + offset::dwClientState) + 0x174, -1);
             
            }
        }
    }
 




    return 0;





-- Kaydediyoruz kısayol olarak Ctrl+S kullanabilirsiniz.
-- Build > Build Solution diyoruz Türkçe ise Derle > Çözümü Derle diyoruz ve kodlar çalışıyor kaydettiğimiz dosyalara .exe olarak gelecek.


--CSGO Açıyoruz ayarlardan tam ekran pencereliye alın ve kütüphaneden aim eğitim sunucularına girin.
--CSGO Çalışırken dosyalardan .exe uzantılı dosyamızı çalıştırıyoruz ve seçtiğmiz silahlara skinler geliyor
.









C++:
#include "memory.h"


#include <thread>
#include <array>


namespace offset
{
    // Hizmetler
    constexpr ::std::ptrdiff_t dwLocalPlayer = 0xDE997C;
    constexpr ::std::ptrdiff_t dwEntityList = 0x4DFEF0C;
    constexpr ::std::ptrdiff_t dwClientState = 0x59F19C;


    // Player
    constexpr ::std::ptrdiff_t m_hMyWeapons = 0x2E08;


    // Temel
    constexpr ::std::ptrdiff_t m_flFallbackWear = 0x31E0;
    constexpr ::std::ptrdiff_t m_nFallbackPaintKit = 0x31D8;
    constexpr ::std::ptrdiff_t m_nFallbackSeed = 0x31DC;
    constexpr ::std::ptrdiff_t m_nFallbackStatTrak = 0x31E4;
    constexpr ::std::ptrdiff_t m_iItemDefinitionIndex = 0x2FBA;
    constexpr ::std::ptrdiff_t m_iItemIDHigh = 0x2FD0;
    constexpr ::std::ptrdiff_t m_iEntityQuality = 0x2FBC;
    constexpr ::std::ptrdiff_t m_iAccountID = 0x2FD8;
    constexpr ::std::ptrdiff_t m_OriginalOwnerXuidLow = 0x31D0;
}


// Silah - Skin
constexpr const int GetWeaponPaint(const short& itemDefinition)
{
    switch (itemDefinition)
    {
    case 1: return 231; // Deagle ID = 1
    case 4: return 38; // Glock ID = 4
    case 61: return 653; // Usp ID = 61
    case 7: return 255; // Ak ID = 7
    case 9: return 662; // Awp ID = 9
    default: return 0;
    }
}


int main()
{
    const auto memory = Memory{ " csgo.exe" };


    // Modül Adresleri
    const auto client = memory.GetModuleAddress("client.dll");
    const auto engine = memory.GetModuleAddress("engine.dll");




    // Hack Loop
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));


        const auto& localPlayer = memory.Read<std::uintptr_t>(client + offset::dwLocalPlayer);
        const auto& weapons = memory.Read<std::array<unsigned long, 8>>(localPlayer + offset::m_hMyWeapons);


        // Oyuncu Silah
        for (const auto& handle : weapons)
        {
            const auto& weapon = memory.Read<std::uintptr_t>((client + offset::dwEntityList + (handle & 0xFFF) * 0x10) - 0x10);


            // Silah Geçerliliği
            if (!weapon)
                continue;


            // Cilt Uygulama
            if (const auto paint = GetWeaponPaint(memory.Read<short>(weapon + offset::m_iItemDefinitionIndex)))
            {
                const bool shouldUpdate = memory.Read<std::int32_t>(weapon + offset::m_nFallbackPaintKit) != paint;


                // Silah Yedek Değerleri
                memory.Write<std::int32_t>(weapon + offset::m_iItemIDHigh, -1);


                memory.Write<std::int32_t>(weapon + offset::m_nFallbackPaintKit, paint);
                memory.Write<float>(weapon + offset::m_flFallbackWear, 0.1f);


                //memory.Write<std::int32_t>(weapon + offset::m_nFallbackSeed, 0);
                //memory.Write<std::int32_t>(weapon + offset::m_nFallbackStatIrak, 1337);
                //memory.Write<std::int32_t>(weapon + offset::m_iAccountID, memory.Read<std::int32_t>(weapon + offset::m_OriginalOwnerXuidLow));


                if (shouldUpdate)
                memory.Write<std::int32_t>(memory.Read<std::uintptr_t>(engine + offset::dwClientState) + 0x174, -1);
             
            }
        }
    }
 


    return 0;
}





Normal konular aksine farklı konu açmak istedim. Türkçe kaynakları sınırlı olduğu için sizlere öğretmek amaçlı uğraştım her şey bana aittir.
Python ile yapılabilir eğer ki konu hoşunuza giderse onuda seve seve anlatırım.
Vesselam THT Ailesi İyi Forumlar :)


 
Son düzenleme:

Noxe

Katılımcı Üye
24 Nis 2023
644
770
(:
Eline sağlık bayağı emek içeren bir konu olmuş :)
Lakin konuya başlamadan önce ban sebebi olduğunu, böyle bir risk olduğunu belirtirsen daha iyi olur 💜
 

ACE Veen

Uzman üye
4 Şub 2023
1,087
544
Belirsiz
Merhaba değerli TürkHackTeam üyeleri
Ben
Kuara


CSGO Oyununda biliyorsunuz ki hileyi herkes yapıyor ve oyunun tadı tuzu kalmaadığı zamanlar oluyor.
Öyle bir hile olsun ki başkasına oyunu zehir etmeden kendim zevk alayım dediğiniz bu hileyi yani Skin-Changer yapımını öğreteceğim.


Skin-Changer oyunda ki istediğimiz skini kullanmamızda yardımcı olan bir hiledir, yalnızca bizde gözükür öbür oyun arkadaşlarını görmez.
Oyuna renk katmak amaçlı ve para harcamadan istediğimiz skinleri nasıl kullanırız anlatmaya başlayım.



Konuda C++ Kullanacağız, Konu uzun olacağı için "Visual Studio" nasıl kurulur vb ufak şeylere deyinmek istemedim.
! Visual Studio Code kullanmıyoruz

! Visual Studio indirdikten sonra "c++" seçin ve indirmeye bırakın.




-- Şimdi offsets düzeltmemiz gerekiyor

1-Hazedumper Source: GitHub - frk1/hazedumper-rs: Source code of the hazedumper written in Rust
2-Hazedumper Config: GitHub - frk1/hazedumper: up to date csgo offsets and hazedumper config

1- Linke girip sağ tarafta bulunan "Version 2.4.4" kısmına basıyoruz, Windows.zip seçin.



Şimdi masaüstüne "hazedumper" adında klasör oluşturun.
İndirdiğimiz rar içine girin .exe uzantılı program bulacaksınız açtığımız klasöre aktarın.


2- Linke girin ve "config.json" adlı dosyanın içine girin.


"RAW" yazan butona basıyoruz ve kodlar boş bir sayfaya gelecek.


Açtığımız klasöre giriyoruz ve "config.json" adlı metin dosyası oluşturuyoruz.


"RAW" diyerek aldığımız kodları kopyalayıp "notepad++" uygulaması ile "config.json" metin dosyamıza yapıştırıp kaydediyoruz.

!! Notepad++ kullanmayı unutmayın


--CSGO Giriyoruz Alt-Tab attıktan sonra dosyamızdan .exe çalıştırıyoruz yüklendikten sonra dosyalara csgo adlı dosyalar gelecek.
! Oyunu tam ekran pencereliye alın .exe başlattığınızda oyun arayüzünde olmanız geerekiyor





-- Linkleri öğrenelim

3 - Offsets: hazedumper/csgo.hpp at master · frk1/hazedumper.
4 - Item Definitions: mp_items_prohibited - Valve Developer Community
5 - Skin IDs: CS:GO Skin ID List | Total CS:GO




Program açıldıktan sonra "Create a new project" diyoruz


"skinchanger" yazarak devam ediyoruz


Debug x64 kısmını resimdeki gibi değiştirin


"skinchanger" sağ tıklayıp Özellikler diyoruz


"C++ Dil Standardı" kısmını "ISO C++ Standart" yapıyoruz


Gelişmiş kısmından "Karakter Kümesi" diyoruz ve "Çok Baytlı Karakter Kümesi Kullan" diyoruz.,


"Kaynak Dosyaları" sağ tıklayın ekle diyim ve "main.cpp" yazarak enterlayın.

"Üst Bilgi Dosyaları" sağ tıklayın ekle diyin ve "memory.h" yazın enterlayın


"memory.h" verdiğim kodları yapıştırın

C++:
#pragma once
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <TlHelp32.h>


#include <cstdint>
#include <string_view>


class Memory
{
private:
    std::uintptr_t processId = 0;
    void* processHandle = nullptr;


public:
    // Constructor that finds the process id
    // and opens a handle
    Memory(const std::string_view processName) noexcept
    {
        ::PROCESSENTRY32 entry = { };
        entry.dwSize = sizeof(::PROCESSENTRY32);


        const auto snapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);


        while (::Process32Next(snapShot, &entry))
        {
            if (!processName.compare(entry.szExeFile))
            {
                processId = entry.th32ProcessID;
                processHandle = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);
                break;
            }
        }


        // Free handle
        if (snapShot)
            ::CloseHandle(snapShot);
    }


    // Destructor that frees the opened handle
    ~Memory()
    {
        if (processHandle)
            ::CloseHandle(processHandle);
    }


    // Returns the base address of a module by name
    const std::uintptr_t GetModuleAddress(const std::string_view moduleName) const noexcept
    {
        ::MODULEENTRY32 entry = { };
        entry.dwSize = sizeof(::MODULEENTRY32);


        const auto snapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, processId);


        std::uintptr_t result = 0;


        while (::Module32Next(snapShot, &entry))
        {
            if (!moduleName.compare(entry.szModule))
            {
                result = reinterpret_cast<std::uintptr_t>(entry.modBaseAddr);
                break;
            }
        }


        if (snapShot)
            ::CloseHandle(snapShot);


        return result;
    }


    // Read process memory
    template <typename T>
    constexpr const T Read(const std::uintptr_t& address) const noexcept
    {
        T value = { };
        ::ReadProcessMemory(processHandle, reinterpret_cast<const void*>(address), &value, sizeof(T), NULL);
        return value;
    }


    // Write process memory
    template <typename T>
    constexpr void Write(const std::uintptr_t& address, const T& value) const noexcept
    {
        ::WriteProcessMemory(processHandle, reinterpret_cast<void*>(address), &value, sizeof(T), NULL);
    }
};




main.cpp beraber kodlayacağız.


Hazırsanız başlayalım artık :)

C++:
#include "memory.h"




#include <thread>
#include <array>








int main()
{




}




int main()
{








    return 0;
}








{} Arasına şimdi güncel offset yerleştireceğiz bunları verdiğim linklerden 3. olana giriyoruz.


Şimdi size kelimeleri vericem o kelimeleri teker teker "ctrl+f" yaparak aratacaksınız ve en güncel offset bulacaksınız



KELİMELER
// Hizmetler
dwLocalPlayer
dwEntityList
dwClientState


// Player
m_mHyWWeapons


// Temel
m_flFallbackWear
m_nFallbackPaintKit
m_mFallbackSeed
m_nFallbackStatTrak
m_iItemDefinitionIndex
m_iItemIDHigh
m_iEntityQuality
m_iAccountID
m_OriginalOwnerXuidLow



Örnek 1.sonuç bizlere " constexpr ::std::ptrdiff_t dwLocalPlayer = 0xDE997C; " bunu vericeck kopyalayıp yapıştırıyoruz tamamını.


C++:
#include "memory.h"








int main()
{
    // Hizmetler
    constexpr ::std:trdiff_t dwLocalPlayer = 0xDE997C;
    constexpr ::std:trdiff_t dwEntityList = 0x4DFEF0C;
    constexpr ::std:trdiff_t dwClientState = 0x59F19C;




    // Player
    constexpr ::std:trdiff_t m_hMyWeapons = 0x2E08;




    // Temel
    constexpr ::std:trdiff_t m_flFallbackWear = 0x31E0;
    constexpr ::std:trdiff_t m_nFallbackPaintKit = 0x31D8;
    constexpr ::std:trdiff_t m_nFallbackSeed = 0x31DC;
    constexpr ::std:trdiff_t m_nFallbackStatTrak = 0x31E4;
    constexpr ::std:trdiff_t m_iItemDefinitionIndex = 0x2FBA;
    constexpr ::std:trdiff_t m_iItemIDHigh = 0x2FD0;
    constexpr ::std:trdiff_t m_iEntityQuality = 0x2FBC;
    constexpr ::std:trdiff_t m_iAccountID = 0x2FD8;
    constexpr ::std:trdiff_t m_OriginalOwnerXuidLow = 0x31D0;




}




int main()
{








    return 0;
}







Şimdi case silah ıd olarak geçer bunları verdiğim linklerden öğrenebilirsiniz

return skin ıd olarak geçer attığım linkleri araştırarak istediğiniz skinleri bulabilir ıdsını alabilirsiniz







/
C++:
/ Silah - Skin
constexpr const int GetWeaponPaint(const short& itemDefinition)
{
    switch (itemDefinition)
    {
    case 1: return 711; // 1 ıd = deagle
    case 4: return 38; // 4 ıd = glock
    case 61: return 653; // 61 ıd = usp
    case 7: return 490; // 7ıd = ak
    case 9: return 344; // 9 ıd = awp
 
    }
}




C++:
int main()
{
    const auto memory = Memory{ "csgo.exe" };




    // Modül Adresleri
    const auto client = memory.GetModuleAddress("client.dll");
    const auto engine = memory.GetModuleAddress("engine.dll");








    // Hack Loop
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));




        const auto& localPlayer = memory.Read<std::uintptr_t>(client + offset::dwLocalPlayer);
        const auto& weapons = memory.Read<std::array<unsigned long, 8>>(localPlayer + offset::m_hMyWeapons);




        // Oyuncu Silah
        for (const auto& handle : weapons)
        {
            const auto& weapon = memory.Read<std::uintptr_t>((client + offset::dwEntityList + (handle & 0xFFF) * 0x10) - 0x10);




            // Silah Geçerliliği
            if (!weapon)
                continue;




            // Cilt Uygulama
            if (const auto paint = GetWeaponPaint(memory.Read<short>(weapon + offset::m_iItemDefinitionIndex)))
            {
                const bool shouldUpdate = memory.Read<std::int32_t>(weapon + offset::m_nFallbackPaintKit) != paint;




                // Silah Yedek Değerleri
                memory.Write<std::int32_t>(weapon + offset::m_iItemIDHigh, -1);




                memory.Write<std::int32_t>(weapon + offset::m_nFallbackPaintKit, paint);
                memory.Write<float>(weapon + offset::m_flFallbackWear, 0.1f);




                if (shouldUpdate)
                memory.Write<std::int32_t>(memory.Read<std::uintptr_t>(engine + offset::dwClientState) + 0x174, -1);
             
            }
        }
    }
 




    return 0;





-- Kaydediyoruz kısayol olarak Ctrl+S kullanabilirsiniz.
-- Build > Build Solution diyoruz Türkçe ise Derle > Çözümü Derle diyoruz ve kodlar çalışıyor kaydettiğimiz dosyalara .exe olarak gelecek.


--CSGO Açıyoruz ayarlardan tam ekran pencereliye alın ve kütüphaneden aim eğitim sunucularına girin.
--CSGO Çalışırken dosyalardan .exe uzantılı dosyamızı çalıştırıyoruz ve seçtiğmiz silahlara skinler geliyor
.









C++:
#include "memory.h"


#include <thread>
#include <array>


namespace offset
{
    // Hizmetler
    constexpr ::std::ptrdiff_t dwLocalPlayer = 0xDE997C;
    constexpr ::std::ptrdiff_t dwEntityList = 0x4DFEF0C;
    constexpr ::std::ptrdiff_t dwClientState = 0x59F19C;


    // Player
    constexpr ::std::ptrdiff_t m_hMyWeapons = 0x2E08;


    // Temel
    constexpr ::std::ptrdiff_t m_flFallbackWear = 0x31E0;
    constexpr ::std::ptrdiff_t m_nFallbackPaintKit = 0x31D8;
    constexpr ::std::ptrdiff_t m_nFallbackSeed = 0x31DC;
    constexpr ::std::ptrdiff_t m_nFallbackStatTrak = 0x31E4;
    constexpr ::std::ptrdiff_t m_iItemDefinitionIndex = 0x2FBA;
    constexpr ::std::ptrdiff_t m_iItemIDHigh = 0x2FD0;
    constexpr ::std::ptrdiff_t m_iEntityQuality = 0x2FBC;
    constexpr ::std::ptrdiff_t m_iAccountID = 0x2FD8;
    constexpr ::std::ptrdiff_t m_OriginalOwnerXuidLow = 0x31D0;
}


// Silah - Skin
constexpr const int GetWeaponPaint(const short& itemDefinition)
{
    switch (itemDefinition)
    {
    case 1: return 231; // Deagle ID = 1
    case 4: return 38; // Glock ID = 4
    case 61: return 653; // Usp ID = 61
    case 7: return 255; // Ak ID = 7
    case 9: return 662; // Awp ID = 9
    default: return 0;
    }
}


int main()
{
    const auto memory = Memory{ " csgo.exe" };


    // Modül Adresleri
    const auto client = memory.GetModuleAddress("client.dll");
    const auto engine = memory.GetModuleAddress("engine.dll");




    // Hack Loop
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));


        const auto& localPlayer = memory.Read<std::uintptr_t>(client + offset::dwLocalPlayer);
        const auto& weapons = memory.Read<std::array<unsigned long, 8>>(localPlayer + offset::m_hMyWeapons);


        // Oyuncu Silah
        for (const auto& handle : weapons)
        {
            const auto& weapon = memory.Read<std::uintptr_t>((client + offset::dwEntityList + (handle & 0xFFF) * 0x10) - 0x10);


            // Silah Geçerliliği
            if (!weapon)
                continue;


            // Cilt Uygulama
            if (const auto paint = GetWeaponPaint(memory.Read<short>(weapon + offset::m_iItemDefinitionIndex)))
            {
                const bool shouldUpdate = memory.Read<std::int32_t>(weapon + offset::m_nFallbackPaintKit) != paint;


                // Silah Yedek Değerleri
                memory.Write<std::int32_t>(weapon + offset::m_iItemIDHigh, -1);


                memory.Write<std::int32_t>(weapon + offset::m_nFallbackPaintKit, paint);
                memory.Write<float>(weapon + offset::m_flFallbackWear, 0.1f);


                //memory.Write<std::int32_t>(weapon + offset::m_nFallbackSeed, 0);
                //memory.Write<std::int32_t>(weapon + offset::m_nFallbackStatIrak, 1337);
                //memory.Write<std::int32_t>(weapon + offset::m_iAccountID, memory.Read<std::int32_t>(weapon + offset::m_OriginalOwnerXuidLow));


                if (shouldUpdate)
                memory.Write<std::int32_t>(memory.Read<std::uintptr_t>(engine + offset::dwClientState) + 0x174, -1);
             
            }
        }
    }
 


    return 0;
}





Normal konular aksine farklı konu açmak istedim. Türkçe kaynakları sınırlı olduğu için sizlere öğretmek amaçlı uğraştım her şey bana aittir.
Python ile yapılabilir eğer ki konu hoşunuza giderse onuda seve seve anlatırım.
Vesselam THT Ailesi İyi Forumlar :)


elinize emeğinize sağlık kaliteli bir konu olmul
 

gaspbtw

Yeni üye
30 May 2023
9
0
Çok güzel olmuş ellerine sağlık fakat bir sorum olacak, Adımları uyguladığımız takdirde vac veya normal ban yeme ihtimalimiz yüksek mi?
 

Knaves98

Yeni üye
29 May 2023
2
0
Merhaba değerli TürkHackTeam üyeleri
Ben
Kuara


CSGO Oyununda biliyorsunuz ki hileyi herkes yapıyor ve oyunun tadı tuzu kalmaadığı zamanlar oluyor.
Öyle bir hile olsun ki başkasına oyunu zehir etmeden kendim zevk alayım dediğiniz bu hileyi yani Skin-Changer yapımını öğreteceğim.


Skin-Changer oyunda ki istediğimiz skini kullanmamızda yardımcı olan bir hiledir, yalnızca bizde gözükür öbür oyun arkadaşlarını görmez.
Oyuna renk katmak amaçlı ve para harcamadan istediğimiz skinleri nasıl kullanırız anlatmaya başlayım.



Konuda C++ Kullanacağız, Konu uzun olacağı için "Visual Studio" nasıl kurulur vb ufak şeylere deyinmek istemedim.
! Visual Studio Code kullanmıyoruz

! Visual Studio indirdikten sonra "c++" seçin ve indirmeye bırakın.




-- Şimdi offsets düzeltmemiz gerekiyor

1-Hazedumper Source: GitHub - frk1/hazedumper-rs: Source code of the hazedumper written in Rust
2-Hazedumper Config: GitHub - frk1/hazedumper: up to date csgo offsets and hazedumper config

1- Linke girip sağ tarafta bulunan "Version 2.4.4" kısmına basıyoruz, Windows.zip seçin.



Şimdi masaüstüne "hazedumper" adında klasör oluşturun.
İndirdiğimiz rar içine girin .exe uzantılı program bulacaksınız açtığımız klasöre aktarın.


2- Linke girin ve "config.json" adlı dosyanın içine girin.


"RAW" yazan butona basıyoruz ve kodlar boş bir sayfaya gelecek.


Açtığımız klasöre giriyoruz ve "config.json" adlı metin dosyası oluşturuyoruz.


"RAW" diyerek aldığımız kodları kopyalayıp "notepad++" uygulaması ile "config.json" metin dosyamıza yapıştırıp kaydediyoruz.

!! Notepad++ kullanmayı unutmayın


--CSGO Giriyoruz Alt-Tab attıktan sonra dosyamızdan .exe çalıştırıyoruz yüklendikten sonra dosyalara csgo adlı dosyalar gelecek.
! Oyunu tam ekran pencereliye alın .exe başlattığınızda oyun arayüzünde olmanız geerekiyor





-- Linkleri öğrenelim

3 - Offsets: hazedumper/csgo.hpp at master · frk1/hazedumper.
4 - Item Definitions: mp_items_prohibited - Valve Developer Community
5 - Skin IDs: CS:GO Skin ID List | Total CS:GO




Program açıldıktan sonra "Create a new project" diyoruz


"skinchanger" yazarak devam ediyoruz


Debug x64 kısmını resimdeki gibi değiştirin


"skinchanger" sağ tıklayıp Özellikler diyoruz


"C++ Dil Standardı" kısmını "ISO C++ Standart" yapıyoruz


Gelişmiş kısmından "Karakter Kümesi" diyoruz ve "Çok Baytlı Karakter Kümesi Kullan" diyoruz.,


"Kaynak Dosyaları" sağ tıklayın ekle diyim ve "main.cpp" yazarak enterlayın.

"Üst Bilgi Dosyaları" sağ tıklayın ekle diyin ve "memory.h" yazın enterlayın


"memory.h" verdiğim kodları yapıştırın

C++:
#pragma once
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <TlHelp32.h>


#include <cstdint>
#include <string_view>


class Memory
{
private:
    std::uintptr_t processId = 0;
    void* processHandle = nullptr;


public:
    // Constructor that finds the process id
    // and opens a handle
    Memory(const std::string_view processName) noexcept
    {
        ::PROCESSENTRY32 entry = { };
        entry.dwSize = sizeof(::PROCESSENTRY32);


        const auto snapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);


        while (::Process32Next(snapShot, &entry))
        {
            if (!processName.compare(entry.szExeFile))
            {
                processId = entry.th32ProcessID;
                processHandle = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);
                break;
            }
        }


        // Free handle
        if (snapShot)
            ::CloseHandle(snapShot);
    }


    // Destructor that frees the opened handle
    ~Memory()
    {
        if (processHandle)
            ::CloseHandle(processHandle);
    }


    // Returns the base address of a module by name
    const std::uintptr_t GetModuleAddress(const std::string_view moduleName) const noexcept
    {
        ::MODULEENTRY32 entry = { };
        entry.dwSize = sizeof(::MODULEENTRY32);


        const auto snapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, processId);


        std::uintptr_t result = 0;


        while (::Module32Next(snapShot, &entry))
        {
            if (!moduleName.compare(entry.szModule))
            {
                result = reinterpret_cast<std::uintptr_t>(entry.modBaseAddr);
                break;
            }
        }


        if (snapShot)
            ::CloseHandle(snapShot);


        return result;
    }


    // Read process memory
    template <typename T>
    constexpr const T Read(const std::uintptr_t& address) const noexcept
    {
        T value = { };
        ::ReadProcessMemory(processHandle, reinterpret_cast<const void*>(address), &value, sizeof(T), NULL);
        return value;
    }


    // Write process memory
    template <typename T>
    constexpr void Write(const std::uintptr_t& address, const T& value) const noexcept
    {
        ::WriteProcessMemory(processHandle, reinterpret_cast<void*>(address), &value, sizeof(T), NULL);
    }
};




main.cpp beraber kodlayacağız.


Hazırsanız başlayalım artık :)

C++:
#include "memory.h"




#include <thread>
#include <array>








int main()
{




}




int main()
{








    return 0;
}








{} Arasına şimdi güncel offset yerleştireceğiz bunları verdiğim linklerden 3. olana giriyoruz.


Şimdi size kelimeleri vericem o kelimeleri teker teker "ctrl+f" yaparak aratacaksınız ve en güncel offset bulacaksınız



KELİMELER
// Hizmetler
dwLocalPlayer
dwEntityList
dwClientState


// Player
m_mHyWWeapons


// Temel
m_flFallbackWear
m_nFallbackPaintKit
m_mFallbackSeed
m_nFallbackStatTrak
m_iItemDefinitionIndex
m_iItemIDHigh
m_iEntityQuality
m_iAccountID
m_OriginalOwnerXuidLow



Örnek 1.sonuç bizlere " constexpr ::std::ptrdiff_t dwLocalPlayer = 0xDE997C; " bunu vericeck kopyalayıp yapıştırıyoruz tamamını.


C++:
#include "memory.h"








int main()
{
    // Hizmetler
    constexpr ::std:trdiff_t dwLocalPlayer = 0xDE997C;
    constexpr ::std:trdiff_t dwEntityList = 0x4DFEF0C;
    constexpr ::std:trdiff_t dwClientState = 0x59F19C;




    // Player
    constexpr ::std:trdiff_t m_hMyWeapons = 0x2E08;




    // Temel
    constexpr ::std:trdiff_t m_flFallbackWear = 0x31E0;
    constexpr ::std:trdiff_t m_nFallbackPaintKit = 0x31D8;
    constexpr ::std:trdiff_t m_nFallbackSeed = 0x31DC;
    constexpr ::std:trdiff_t m_nFallbackStatTrak = 0x31E4;
    constexpr ::std:trdiff_t m_iItemDefinitionIndex = 0x2FBA;
    constexpr ::std:trdiff_t m_iItemIDHigh = 0x2FD0;
    constexpr ::std:trdiff_t m_iEntityQuality = 0x2FBC;
    constexpr ::std:trdiff_t m_iAccountID = 0x2FD8;
    constexpr ::std:trdiff_t m_OriginalOwnerXuidLow = 0x31D0;




}




int main()
{








    return 0;
}







Şimdi case silah ıd olarak geçer bunları verdiğim linklerden öğrenebilirsiniz

return skin ıd olarak geçer attığım linkleri araştırarak istediğiniz skinleri bulabilir ıdsını alabilirsiniz







/
C++:
/ Silah - Skin
constexpr const int GetWeaponPaint(const short& itemDefinition)
{
    switch (itemDefinition)
    {
    case 1: return 711; // 1 ıd = deagle
    case 4: return 38; // 4 ıd = glock
    case 61: return 653; // 61 ıd = usp
    case 7: return 490; // 7ıd = ak
    case 9: return 344; // 9 ıd = awp
 
    }
}




C++:
int main()
{
    const auto memory = Memory{ "csgo.exe" };




    // Modül Adresleri
    const auto client = memory.GetModuleAddress("client.dll");
    const auto engine = memory.GetModuleAddress("engine.dll");








    // Hack Loop
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));




        const auto& localPlayer = memory.Read<std::uintptr_t>(client + offset::dwLocalPlayer);
        const auto& weapons = memory.Read<std::array<unsigned long, 8>>(localPlayer + offset::m_hMyWeapons);




        // Oyuncu Silah
        for (const auto& handle : weapons)
        {
            const auto& weapon = memory.Read<std::uintptr_t>((client + offset::dwEntityList + (handle & 0xFFF) * 0x10) - 0x10);




            // Silah Geçerliliği
            if (!weapon)
                continue;




            // Cilt Uygulama
            if (const auto paint = GetWeaponPaint(memory.Read<short>(weapon + offset::m_iItemDefinitionIndex)))
            {
                const bool shouldUpdate = memory.Read<std::int32_t>(weapon + offset::m_nFallbackPaintKit) != paint;




                // Silah Yedek Değerleri
                memory.Write<std::int32_t>(weapon + offset::m_iItemIDHigh, -1);




                memory.Write<std::int32_t>(weapon + offset::m_nFallbackPaintKit, paint);
                memory.Write<float>(weapon + offset::m_flFallbackWear, 0.1f);




                if (shouldUpdate)
                memory.Write<std::int32_t>(memory.Read<std::uintptr_t>(engine + offset::dwClientState) + 0x174, -1);
             
            }
        }
    }
 




    return 0;





-- Kaydediyoruz kısayol olarak Ctrl+S kullanabilirsiniz.
-- Build > Build Solution diyoruz Türkçe ise Derle > Çözümü Derle diyoruz ve kodlar çalışıyor kaydettiğimiz dosyalara .exe olarak gelecek.


--CSGO Açıyoruz ayarlardan tam ekran pencereliye alın ve kütüphaneden aim eğitim sunucularına girin.
--CSGO Çalışırken dosyalardan .exe uzantılı dosyamızı çalıştırıyoruz ve seçtiğmiz silahlara skinler geliyor
.









C++:
#include "memory.h"


#include <thread>
#include <array>


namespace offset
{
    // Hizmetler
    constexpr ::std::ptrdiff_t dwLocalPlayer = 0xDE997C;
    constexpr ::std::ptrdiff_t dwEntityList = 0x4DFEF0C;
    constexpr ::std::ptrdiff_t dwClientState = 0x59F19C;


    // Player
    constexpr ::std::ptrdiff_t m_hMyWeapons = 0x2E08;


    // Temel
    constexpr ::std::ptrdiff_t m_flFallbackWear = 0x31E0;
    constexpr ::std::ptrdiff_t m_nFallbackPaintKit = 0x31D8;
    constexpr ::std::ptrdiff_t m_nFallbackSeed = 0x31DC;
    constexpr ::std::ptrdiff_t m_nFallbackStatTrak = 0x31E4;
    constexpr ::std::ptrdiff_t m_iItemDefinitionIndex = 0x2FBA;
    constexpr ::std::ptrdiff_t m_iItemIDHigh = 0x2FD0;
    constexpr ::std::ptrdiff_t m_iEntityQuality = 0x2FBC;
    constexpr ::std::ptrdiff_t m_iAccountID = 0x2FD8;
    constexpr ::std::ptrdiff_t m_OriginalOwnerXuidLow = 0x31D0;
}


// Silah - Skin
constexpr const int GetWeaponPaint(const short& itemDefinition)
{
    switch (itemDefinition)
    {
    case 1: return 231; // Deagle ID = 1
    case 4: return 38; // Glock ID = 4
    case 61: return 653; // Usp ID = 61
    case 7: return 255; // Ak ID = 7
    case 9: return 662; // Awp ID = 9
    default: return 0;
    }
}


int main()
{
    const auto memory = Memory{ " csgo.exe" };


    // Modül Adresleri
    const auto client = memory.GetModuleAddress("client.dll");
    const auto engine = memory.GetModuleAddress("engine.dll");




    // Hack Loop
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));


        const auto& localPlayer = memory.Read<std::uintptr_t>(client + offset::dwLocalPlayer);
        const auto& weapons = memory.Read<std::array<unsigned long, 8>>(localPlayer + offset::m_hMyWeapons);


        // Oyuncu Silah
        for (const auto& handle : weapons)
        {
            const auto& weapon = memory.Read<std::uintptr_t>((client + offset::dwEntityList + (handle & 0xFFF) * 0x10) - 0x10);


            // Silah Geçerliliği
            if (!weapon)
                continue;


            // Cilt Uygulama
            if (const auto paint = GetWeaponPaint(memory.Read<short>(weapon + offset::m_iItemDefinitionIndex)))
            {
                const bool shouldUpdate = memory.Read<std::int32_t>(weapon + offset::m_nFallbackPaintKit) != paint;


                // Silah Yedek Değerleri
                memory.Write<std::int32_t>(weapon + offset::m_iItemIDHigh, -1);


                memory.Write<std::int32_t>(weapon + offset::m_nFallbackPaintKit, paint);
                memory.Write<float>(weapon + offset::m_flFallbackWear, 0.1f);


                //memory.Write<std::int32_t>(weapon + offset::m_nFallbackSeed, 0);
                //memory.Write<std::int32_t>(weapon + offset::m_nFallbackStatIrak, 1337);
                //memory.Write<std::int32_t>(weapon + offset::m_iAccountID, memory.Read<std::int32_t>(weapon + offset::m_OriginalOwnerXuidLow));


                if (shouldUpdate)
                memory.Write<std::int32_t>(memory.Read<std::uintptr_t>(engine + offset::dwClientState) + 0x174, -1);
             
            }
        }
    }
 


    return 0;
}





Normal konular aksine farklı konu açmak istedim. Türkçe kaynakları sınırlı olduğu için sizlere öğretmek amaçlı uğraştım her şey bana aittir.
Python ile yapılabilir eğer ki konu hoşunuza giderse onuda seve seve anlatırım.
Vesselam THT Ailesi İyi Forumlar :)


Eline Sağlık Emeğine Sağlık
 

Kuara

Üye
28 May 2023
133
62
Turan
Teşekkürler knk 😁
rica ederim
Eline sağlık bayağı emek içeren bir konu olmuş :)
Lakin konuya başlamadan önce ban sebebi olduğunu, böyle bir risk olduğunu belirtirsen daha iyi olur 💜
Teşekkür ederim, güncel kaldığı sürece ban yeme riski az ama haklısınız belirtmem gerekiyordu.
elinize emeğinize sağlık kaliteli bir konu olmul
Teşekkür ederim
Çok güzel olmuş ellerine sağlık fakat bir sorum olacak, Adımları uyguladığımız takdirde vac veya normal ban yeme ihtimalimiz yüksek mi?
Teşekkür ederim, güncel olduğu sürece ban yeme riski azdır ve bu biraz şansa da kalır aynı hileyi kullanıp ban yiyen ve yemeyen çok kişi var. Genel olarak herhangi bir sorun yok ben denedim bu hileyi ara ara yaptım aynısını aylar geçti ve sorun olmadı ama gelen güncellemeler ne gösterir bilemeyiz.
Eline Sağlık Emeğine Sağlık
Teşekkür ederim
 

Noxe

Katılımcı Üye
24 Nis 2023
644
770
(:
rica ederim

Teşekkür ederim, güncel kaldığı sürece ban yeme riski az ama haklısınız belirtmem gerekiyordu.

Teşekkür ederim

Teşekkür ederim, güncel olduğu sürece ban yeme riski azdır ve bu biraz şansa da kalır aynı hileyi kullanıp ban yiyen ve yemeyen çok kişi var. Genel olarak herhangi bir sorun yok ben denedim bu hileyi ara ara yaptım aynısını aylar geçti ve sorun olmadı ama gelen güncellemeler ne gösterir bilemeyiz.

Teşekkür ederim
Ben teşekkür ederim asıl :)
 

gaspbtw

Yeni üye
30 May 2023
9
0
default bıçağın id'si 42 ve ben bunu başka bıçaklarla değiştirmek istiyorum napmalıyım?

case 42: return 12; (crimson web) falan denedim de diğer bıçakların idlerini falan bulamadım kafam karıştı yardımcı olursanız sevinirim.
 

Rebelkan

Blue Team Lider Yrd.
12 Şub 2019
1,973
892
Hakiki emek vermişsin. Güzel olmuş. Oyun oynamasam da ilgimi çekti. 🔥
 

Kuara

Üye
28 May 2023
133
62
Turan
default bıçağın id'si 42 ve ben bunu başka bıçaklarla değiştirmek istiyorum napmalıyım?

case 42: return 12; (crimson web) falan denedim de diğer bıçakların idlerini falan bulamadım kafam karıştı yardımcı olursanız sevinirim.
bıçak değiştiremezsin bu yöntemle onun işi daha uzun.
Çok emek vermişsin güzel olmuş eline sağlık dostum.
teşekkür ederim
teşekkür ederim
eline emeğine sağlık.
teşekkür ederim
Hakiki emek vermişsin. Güzel olmuş. Oyun oynamasam da ilgimi çekti. 🔥
teşekkür ederim sağ olun :)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.