R 1
Roksam
[DEV]AB 1
[DEV]AB
emirhanHCL 1
emirhanHCL
berkmenoo 1
berkmenoo
Sevdamsın 1
Sevdamsın
TuZaKK 1
TuZaKK
Hikaye Ekle

[SOURCE/PY]MoveToDestPosition

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

@LunaUI 'ın daha önce paylaşmış olduğu "C++ MoveToDestPosition" kodlarının Python'a çevrilmiş halidir.
Adresler GF için 22.07.2026 tarihi itibariyle günceldir. Güncel adresler için teşekkürler @n9z3


Python:
import ctypes
import struct
import time
import win32api
import win32process

# ================================================================
# ADRESLER
# ================================================================
PROCESS_NAME = "metin2client.exe"

CPYTHON_CHARACTER_MANAGER = 0x2EACEC0
INSTANCE_OFFSET = 0x14
MOVE_TO_DEST_POSITION = 0x24CEA30

# ================================================================
PROCESS_ALL_ACCESS = 0x1F0FFF
MEM_COMMIT = 0x1000
MEM_RESERVE = 0x2000
MEM_RELEASE = 0x8000
PAGE_EXECUTE_READWRITE = 0x40


class MoveToDest(ctypes.Structure):
    _fields_ = [("x", ctypes.c_float),
                ("y", ctypes.c_float),
                ("z", ctypes.c_float)]


class RotaTest:
    def __init__(self, process_name=PROCESS_NAME):
        self.pid = self.get_pid(process_name)
        if not self.pid:
            print("[-] Process bulunamadi!")
            return

        self.h_process = ctypes.windll.kernel32.OpenProcess(PROCESS_ALL_ACCESS, False, self.pid)
        self.client = self.get_base_address()

        print(f"[+] PID: {self.pid}")
        print(f"[+] Client (Base): 0x{self.client:08X}")
        print(f"[+] CPythonCharacterManager: 0x{self.client + CPYTHON_CHARACTER_MANAGER:08X}")
        print(f"[+] MoveToDestPosition: 0x{self.client + MOVE_TO_DEST_POSITION:08X}")

    def get_pid(self, name):
        for pid in win32process.EnumProcesses():
            try:
                h = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, pid)
                exe = win32process.GetModuleFileNameEx(h, 0)
                if name.lower() in exe.lower():
                    return pid
            except:
                continue
        return None

    def get_base_address(self):
        modules = win32process.EnumProcessModules(self.h_process)
        return modules[0]

    def read(self, addr, fmt="<I"):
        buf = ctypes.create_string_buffer(struct.calcsize(fmt))
        rd = ctypes.c_size_t(0)
        ok = ctypes.windll.kernel32.ReadProcessMemory(
            self.h_process,
            ctypes.c_void_p(addr & 0xFFFFFFFF),
            buf,
            len(buf),
            ctypes.byref(rd)
        )
        if ok:
            return struct.unpack(fmt, buf.raw)[0]
        return 0

    def get_main_actor_ptr(self):
        cpython_mgr_ptr = self.client + CPYTHON_CHARACTER_MANAGER
        cpython_mgr = self.read(cpython_mgr_ptr)
        print(f"[DEBUG] CPythonCharacterManager: 0x{cpython_mgr:08X}")

        if not cpython_mgr:
            return 0

        instance = self.read(cpython_mgr + INSTANCE_OFFSET)
        print(f"[DEBUG] Instance: 0x{instance:08X}")

        return instance

    def execute_sc(self, sc_template, data=b''):
        total = len(sc_template) + len(data)
        remote = ctypes.windll.kernel32.VirtualAllocEx(
            self.h_process, 0, total,
            MEM_COMMIT | MEM_RESERVE,
            PAGE_EXECUTE_READWRITE
        )
        if not remote:
            return False

        remote_u32 = ctypes.c_uint32(remote).value
        sc = sc_template

        if data:
            data_addr = (remote_u32 + len(sc_template)) & 0xFFFFFFFF
            sc = sc_template.replace(b'\xAA\xAA\xAA\xAA', struct.pack('<I', data_addr))
            ctypes.windll.kernel32.WriteProcessMemory(self.h_process, remote, sc, len(sc), None)
            ctypes.windll.kernel32.WriteProcessMemory(self.h_process, remote + len(sc_template), data, len(data), None)
        else:
            ctypes.windll.kernel32.WriteProcessMemory(self.h_process, remote, sc, len(sc), None)

        ht = ctypes.windll.kernel32.CreateRemoteThread(self.h_process, None, 0, remote, 0, 0, None)
        if not ht:
            ctypes.windll.kernel32.VirtualFreeEx(self.h_process, remote, 0, MEM_RELEASE)
            return False

        result = ctypes.windll.kernel32.WaitForSingleObject(ht, 5000)
        ctypes.windll.kernel32.CloseHandle(ht)
        ctypes.windll.kernel32.VirtualFreeEx(self.h_process, remote, 0, MEM_RELEASE)
        return result == 0

    def move_to_dest(self, x, y, z):
        instance = self.get_main_actor_ptr()
        if not instance:
            print("[-] Instance bulunamadi!")
            return False

        fn_addr = self.client + MOVE_TO_DEST_POSITION
        print(f"[DEBUG] Fonksiyon: 0x{fn_addr:08X}")
        print(f"[DEBUG] Hedef: X={x}, Y={y}, Z={z}")
        sc = (
            b"\xB9" + struct.pack("<I", instance) +
            b"\xB8\xAA\xAA\xAA\xAA" +
            b"\x50" +
            b"\xB8" + struct.pack("<I", fn_addr) +
            b"\xFF\xD0" +
            b"\xC3"   
        )

        data = struct.pack("<fff", x, y, z)
        return self.execute_sc(sc, data)

    def run(self):
        print("[+] WalkToFarm baslatildi!")
        print("[+] Sabit koordinata gidiliyor...\n")

        target = MoveToDest()
        target.x = 3.5
        target.y = -1.3
        target.z = 31.3

        while True:
            success = self.move_to_dest(target.x, target.y, target.z)
            print(f"[+] Sonuc: {'Basarili' if success else 'Basarisiz'}\n")

            time.sleep(0.3)


if __name__ == "__main__":
    bot = RotaTest()
    if bot.pid:
        bot.run()
    else:
        print("[-] Baslatilamadi.")
 

Ekli dosyalar

  • rota.py
    rota.py
    5.8 KB · Görüntüleme: 0
@LunaUI 'ın daha önce paylaşmış olduğu "C++ MoveToDestPosition" kodlarının Python'a çevrilmiş halidir.
Adresler GF için 22.07.2026 tarihi itibariyle günceldir. Güncel adresler için teşekkürler @n9z3


Python:
import ctypes
import struct
import time
import win32api
import win32process

# ================================================================
# ADRESLER
# ================================================================
PROCESS_NAME = "metin2client.exe"

CPYTHON_CHARACTER_MANAGER = 0x2EACEC0
INSTANCE_OFFSET = 0x14
MOVE_TO_DEST_POSITION = 0x24CEA30

# ================================================================
PROCESS_ALL_ACCESS = 0x1F0FFF
MEM_COMMIT = 0x1000
MEM_RESERVE = 0x2000
MEM_RELEASE = 0x8000
PAGE_EXECUTE_READWRITE = 0x40


class MoveToDest(ctypes.Structure):
    _fields_ = [("x", ctypes.c_float),
                ("y", ctypes.c_float),
                ("z", ctypes.c_float)]


class RotaTest:
    def __init__(self, process_name=PROCESS_NAME):
        self.pid = self.get_pid(process_name)
        if not self.pid:
            print("[-] Process bulunamadi!")
            return

        self.h_process = ctypes.windll.kernel32.OpenProcess(PROCESS_ALL_ACCESS, False, self.pid)
        self.client = self.get_base_address()

        print(f"[+] PID: {self.pid}")
        print(f"[+] Client (Base): 0x{self.client:08X}")
        print(f"[+] CPythonCharacterManager: 0x{self.client + CPYTHON_CHARACTER_MANAGER:08X}")
        print(f"[+] MoveToDestPosition: 0x{self.client + MOVE_TO_DEST_POSITION:08X}")

    def get_pid(self, name):
        for pid in win32process.EnumProcesses():
            try:
                h = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, pid)
                exe = win32process.GetModuleFileNameEx(h, 0)
                if name.lower() in exe.lower():
                    return pid
            except:
                continue
        return None

    def get_base_address(self):
        modules = win32process.EnumProcessModules(self.h_process)
        return modules[0]

    def read(self, addr, fmt="<I"):
        buf = ctypes.create_string_buffer(struct.calcsize(fmt))
        rd = ctypes.c_size_t(0)
        ok = ctypes.windll.kernel32.ReadProcessMemory(
            self.h_process,
            ctypes.c_void_p(addr & 0xFFFFFFFF),
            buf,
            len(buf),
            ctypes.byref(rd)
        )
        if ok:
            return struct.unpack(fmt, buf.raw)[0]
        return 0

    def get_main_actor_ptr(self):
        cpython_mgr_ptr = self.client + CPYTHON_CHARACTER_MANAGER
        cpython_mgr = self.read(cpython_mgr_ptr)
        print(f"[DEBUG] CPythonCharacterManager: 0x{cpython_mgr:08X}")

        if not cpython_mgr:
            return 0

        instance = self.read(cpython_mgr + INSTANCE_OFFSET)
        print(f"[DEBUG] Instance: 0x{instance:08X}")

        return instance

    def execute_sc(self, sc_template, data=b''):
        total = len(sc_template) + len(data)
        remote = ctypes.windll.kernel32.VirtualAllocEx(
            self.h_process, 0, total,
            MEM_COMMIT | MEM_RESERVE,
            PAGE_EXECUTE_READWRITE
        )
        if not remote:
            return False

        remote_u32 = ctypes.c_uint32(remote).value
        sc = sc_template

        if data:
            data_addr = (remote_u32 + len(sc_template)) & 0xFFFFFFFF
            sc = sc_template.replace(b'\xAA\xAA\xAA\xAA', struct.pack('<I', data_addr))
            ctypes.windll.kernel32.WriteProcessMemory(self.h_process, remote, sc, len(sc), None)
            ctypes.windll.kernel32.WriteProcessMemory(self.h_process, remote + len(sc_template), data, len(data), None)
        else:
            ctypes.windll.kernel32.WriteProcessMemory(self.h_process, remote, sc, len(sc), None)

        ht = ctypes.windll.kernel32.CreateRemoteThread(self.h_process, None, 0, remote, 0, 0, None)
        if not ht:
            ctypes.windll.kernel32.VirtualFreeEx(self.h_process, remote, 0, MEM_RELEASE)
            return False

        result = ctypes.windll.kernel32.WaitForSingleObject(ht, 5000)
        ctypes.windll.kernel32.CloseHandle(ht)
        ctypes.windll.kernel32.VirtualFreeEx(self.h_process, remote, 0, MEM_RELEASE)
        return result == 0

    def move_to_dest(self, x, y, z):
        instance = self.get_main_actor_ptr()
        if not instance:
            print("[-] Instance bulunamadi!")
            return False

        fn_addr = self.client + MOVE_TO_DEST_POSITION
        print(f"[DEBUG] Fonksiyon: 0x{fn_addr:08X}")
        print(f"[DEBUG] Hedef: X={x}, Y={y}, Z={z}")
        sc = (
            b"\xB9" + struct.pack("<I", instance) +
            b"\xB8\xAA\xAA\xAA\xAA" +
            b"\x50" +
            b"\xB8" + struct.pack("<I", fn_addr) +
            b"\xFF\xD0" +
            b"\xC3"  
        )

        data = struct.pack("<fff", x, y, z)
        return self.execute_sc(sc, data)

    def run(self):
        print("[+] WalkToFarm baslatildi!")
        print("[+] Sabit koordinata gidiliyor...\n")

        target = MoveToDest()
        target.x = 3.5
        target.y = -1.3
        target.z = 31.3

        while True:
            success = self.move_to_dest(target.x, target.y, target.z)
            print(f"[+] Sonuc: {'Basarili' if success else 'Basarisiz'}\n")

            time.sleep(0.3)


if __name__ == "__main__":
    bot = RotaTest()
    if bot.pid:
        bot.run()
    else:
        print("[-] Baslatilamadi.")
Rica ederim yardımım dokunuyorsa sizlere
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst