- Katılım
- 8 Şub 2022
- Konular
- 110
- Mesajlar
- 675
- Online süresi
- 2mo 19d
- Reaksiyon Skoru
- 767
- Altın Konu
- 5
- Başarım Puanı
- 175
- Yaş
- 29
- MmoLira
- 16,253
- DevLira
- 0
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Source 'ye Bakma IDA PRO Ya At ögretimine Hoş Geldiniz 
IDA PRO : Yu Açıp Metin2client.bin i atınız sonra (SHIFT + 12 ile Ida dan String Kısmına Giriş Yapınız)
(CTRL F ile IDA da Arama Kısmına SendCharacter) yazıp cıkan string'e cift tıklayınız
IDA PRO : Yu Açıp Metin2client.bin i atınız sonra (SHIFT + 12 ile Ida dan String Kısmına Giriş Yapınız)
X ile fotoraf da gösterilen yerin üstüne X tusuna basarak Gidiniz (tek call cıkıcaktır cift tıklayınız)
Simdi ise Celestial World Sunucusunda Bulunan (char __thiscall sub_4DFB60(void *this, float *a2, float a3, char a4, char a5, char a6)) bizim kullanıcagımız kısım burası
baslangıcı copy paste yaparak alın : typedef void(__thiscall* TSendCharacterState)(void* pInstance, const Vector3& kPos, float Rotation, unsigned __int8 a4, unsigned __int8 a5, char a6); | Ida Pro decompiler cıktısında (void *this dedigi kızım yani 1 NetworkStream kısmı ) - ( 2 yazan ise vector3 yani float x,y,z) kısmıdır ( float a3 yazan ise rota dır) siz bana bunu sorucaksınız (float a3 nasıl oluyorda rota oluyor) cıktı kısmında arg da kullanılan dönüs acısını fmod ile a3 olarak kullanıldıgı icin biz burada anlıyoruz ki rotamız | float a2* yazan da aynı
*| Simdi Her packet her sucu da aynı olmaz |*
Hemen C++ örnegimi bırakıyorum size (Celestial World Sunucusu icin)
Hemen C++ örnegimi bırakıyorum size (Celestial World Sunucusu icin)
[CODE lang="cpp" title="C++ Send Character State Packet (Celestial World)"] static bool NetworkStreamCelestialWorldSendCharacterState(const Vector3& c_rkPPosDst, float fDstRot, unsigned __int8 eFunc, unsigned __int8 uArg, char none)
{
try
{
typedef void(__thiscall* TSendCharacterState)(void* pInstance, const Vector3& kPos, float Rotation, unsigned __int8 a4, unsigned __int8 a5, char a6);
TSendCharacterState SendCharacterState = (TSendCharacterState)(sdk_client + metin2client::C_SendCharacterStatePacket);
void* NetworkStream = sdk::iNetworkStreamInstance();
if (!NetworkStream || !SendCharacterState)
return false;
SendCharacterState(NetworkStream, c_rkPPosDst, fDstRot, eFunc, uArg, none);
return true;
}
catch (...)
{
return false;
}
}[/CODE]
simdi ise bizim normal packed imize baktıgımızda hangi arg ın eksik oldugunu göre biliyoruz (Gameforge (TR) Sunucusu)
Eyer ki Celestial World' ün bin'i biz ıda pro ya atıp ögrenmeseydik Range Wait çalısmicak ve client kapanıcaktı
[CODE lang="cpp" title="C++ Normal Packed"] static bool NetworkStreamSendCharacterStatePacket(const Vector3& c_rkPPosDst, float fDstRot, UINT eFunc, UINT uArg)
{
try
{
typedef void(__thiscall* tSendCharacterState)(void* pInstance, const Vector3& kPos, float z, UINT eFunc, UINT uArg);
tSendCharacterState Send = (tSendCharacterState)(sdk_client + metin2client::C_SendCharacterStatePacket);
void* NetworkStream = sdk::iNetworkStreamInstance();
if (!NetworkStream || !Send)
return false;
Send(NetworkStream, c_rkPPosDst, fDstRot, eFunc, uArg);
return true;
}
catch (...)
{
return false;
}
}[/CODE]
Siz Her Metin2 Source Sine Bakıp ona göre yazdıgınız da ise ezbere yapılmış bir kod yazıcaksınız o yüzden ida pro ya atıp istediginiz sunucuda packetleri rahatlıkla çalıstıra bilirsiniz
(Simdi ise Gecelim Farklı Yaklaşım ile)
SoloMt2 (Sunucusunun SendCharacterState'Sidir) burda farkındalık nedir (timeGetTime 'dır) | Celestial World Sunucusunda 40 Satır Kod varken (SoloMt2) packed inde ise 115 satır kod var yani siz arg'ı bile dogru yapsanız 3 <- yazan adım boyutunuz sabit kalıcak (2 yazan yine 5 saniye de bir konturol yapıcaktır) biz packed in icine extra bunları atlasın diye (Model Vector yani X Y Z mizi de packed'e giriyoruz ) Böylelikle Packed'imiz deki 8 adımı atllayıp 5 saniyeyi atlayıp 3 saniye kadar hasar vurdura biliyoruz
[CODE lang="cpp" title="C++ Alves - SoloMt2 (packed)"]static bool NetworkStreamAlves2SendCharacterState(const Vector3& c_rkPPosDst, float fDstRot, unsigned int eFunc, unsigned int uArg)
{
try
{
typedef void(__thiscall* TSendCharacterState)(void* pInstance, const Vector3& c_rkPPosDst, float Rotation, unsigned int a4, unsigned int a5);
TSendCharacterState SendCharacterState = (TSendCharacterState)(sdk_client + metin2client::C_SendCharacterStatePacket);
void* NetworkStream = sdk::iNetworkStreamInstance();
if (!NetworkStream || !SendCharacterState)
return false;
SendCharacterState(NetworkStream, c_rkPPosDst, fDstRot, eFunc, uArg);
return true;
}
catch (...)
{
return false;
}
}[/CODE]
[CODE lang="cpp" title="Kullanımı"] auto Teleport = [&](const Vector3& start, const Vector3& end)
{
std::vector<Vector3> dist = engine:
ivideTwoPointsByDistance(5, start, end);for (auto& point : dist)
{
engine::SendCharacterModel(point);
engine::NetworkStreamAlves2SendCharacterState(point, ent.Rotation, 0, 0);
}
engine::SendCharacterModel(end);
engine::NetworkStreamAlves2SendCharacterState(end, ent.Rotation, 0, 0);
};
Teleport(oldPosition, newpos);
engine::NetworkStreamSendAttackPacket(0, ent.VID);
Teleport(newpos, oldPosition);[/CODE]
[CODE lang="cpp" title="C++ uzaktan vurum :d"] static DWORD* GetMainActorPtr()
{
DWORD* CPythonCharacterManager = *(DWORD**)(sdk_client + metin2client::C_LocalPlayer);
if (!CPythonCharacterManager)return nullptr;
DWORD* Instance = *(DWORD**)((DWORD)CPythonCharacterManager + metin2client::C_LocalAddr);
if (!Instance)return nullptr;
return Instance;
}
template<typename T>
static void Write(DWORD offset, T value)
{
DWORD* pActor = GetMainActorPtr();
if (!pActor)
return;
*(T*)((DWORD)pActor + offset) = value;
}
static void SendCharacterModel(Vector3 pos)
{
try
{
sdk::Write<float>(metin2client::C_ModelCoordX, pos.x);
sdk::Write<float>(metin2client::C_ModelCoordY, -fabs(pos.y));
sdk::Write<float>(metin2client::C_ModelCoordZ, pos.z);
}
catch (...)
{
}
}[/CODE]
Ben Gibi ugrasmaktan sa direk asm kısmına hook atarak bypass laya bilirsiniz (Simdi ise Gecelim asm kısmına Sunucu : Gameforge TR)
[CODE lang="cpp" title="gameforge send chracter state"] void GameForge(const Vector3& c_rkPPosDst, float fDstRot, UINT eFunc, UINT uArg)
{
DWORD NetWorkStream = *(DWORD*)(sdk_client + 0x2BE46B4); // push :d
DWORD aaaaa = (sdk_client + 0x23CC370);
_asm
{
mov ecx, NetWorkStream
push uArg
push eFunc
push fDstRot
mov eax, c_rkPPosDst
push eax
call aaaaa
}
}[/CODE]
eskiden de arg diye adlandırıdık simdi de arg diye adlandırırız biz bu sekilde istediginzi packed'i kullana bilir rzv yapa bilirsiniz yada aynı sistemi kullanarak korumaları bypass llaya bilirsiniz tamamiyle hayal gücünüze baglı
adres bulunumu
- Katılım
- 13 Ocak 2020
- Konular
- 1,420
- Mesajlar
- 9,979
- Çözüm
- 81
- Online süresi
- 1y 1mo
- Reaksiyon Skoru
- 7,267
- Altın Konu
- 309
- TM Yaşı
- 6 Yıl 4 Ay 24 Gün
- Başarım Puanı
- 393
- MmoLira
- 6,144
- DevLira
- 15
Güzel konu eline sağlık
- Katılım
- 26 Mar 2024
- Konular
- 1,281
- Mesajlar
- 4,830
- Çözüm
- 91
- Online süresi
- 3mo 26d
- Reaksiyon Skoru
- 4,056
- Altın Konu
- 566
- Başarım Puanı
- 274
- Yaş
- 29
- MmoLira
- 136,792
- DevLira
- 450
Eline sağlık.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 335
- Cevaplar
- 18
- Görüntüleme
- 5K
- Cevaplar
- 13
- Görüntüleme
- 1K
- Cevaplar
- 3
- Görüntüleme
- 403










