- Mesaj
- 172
- Çözümler
- 1
- Beğeni
- 191
- Puan
- 729
- Ticaret Puanı
- 0
Anti Waithack:
"battle.cpp" açın ve include listesine aşağıdaki kodu ekleyin
Örnek;
Şimdi bu kodu aratın;
ve altındaki fonksiyonda dahil olmak üzere aşağıda verdiğim kod bloğu ile değiştirin
Yapıştırdığınızda 3 define da aktif olur kapatmak için başına "//"(comment tag) koymanız yeterlidir.
gibi
Oluşacak görüntü
ilk hali:
Yeni Hali;
Sonuç:
Anti Safezone:
*char_battle.cpp
Bulun:
Altına ekleyin:
Anti Ghostmode:
Uyarı!: Bu önlem yapılan testlerde oyuncu öldüğünde oyundan atabilir.
*input_main.cpp
Bulun:
Altına ekleyin:
Anti Wallhack:
*input_main.cpp
Bulun:
Üstüne ekleyin:
Anti Long name generator:
*input_login.cpp
Bulun:
Altına ekleyin:
#Güncelleme 1
-Client taraflı-
PythonPlayerModule.cpp
*Sahte item oluşturma fonkiyonu
PythonItemModule.cpp
*Sahte item oluşturma fonkiyonu
PythonCharacterModule.cpp
*Gm dedektör fonksiyonu
Bu fonksiyonlar kullanılmıyor, bu satırları silin.
-Server taraflı-
Anti Maden botu
*char.cpp
Ara:
Üstüne ekle:
Su olmayan yerde balık tutma fix
*char.cpp
Bul:
Üstüne ekle:
Bul:
Altına ekle:
*char.h
Bul:
Üstüne ekle:
Anti renkli pazar
*input_main.cpp
Bul:
Üstüne ekle:
Anti Drophack
*char_item.cpp
Bul:
Üstüne ekle:
#Güncelleme 2
-Server taraflı-
Anti Fishbot
*fishing.cpp
Ara:
Altına ekle:
*char.cpp
Ara:
Üstüne ekle:
Ara:
Üstüne ekle:
*char.h
Ara:
Altına ekle:
Ara:
Altına ekle:
Anti Guild Maker(düşük seviyede)
*input_main.cpp
Ara:
Altına ekle:
Anti Teleport Hack'i aktif etme
Uyarı: Bu sistem maymun zindanı gibi yerlerde ışınlanırken oyundan düşürüyor.
*input_main.cpp
Bul:
Değiştir:
-Client taraflı-
Anti py injection
*EterPack/EterPackManager.cpp
Ara:
Bul:
Değiştir:
Anti Anti Stun & Anti Sanal GM Efekti
*PythonCharacterManagerModule.cpp
Silin:
Anti Attackspeed & Anti Movespeed
*PythonCharacterModule.cpp
Aşağıdaki satırları silin:
Bu konu altındaki başlıklar genel olarak kullanılan hileleri engellemek için yeterlidir
Daha iyi bir koruma için ve bot, hile ve macro scriptlerini engellemek için modül yada fonksiyon isimlerini değiştirmenizide öneririm
Aşağıda net modülünün adını değiştirmek için basit bir anlatım var
*PythonNetworkStreamModule.cpp
Ara:
Modül adını kendinize göre değiştirin, örnek olarak:
Şimdi, Tüm python dosyalarını Notepad++ ile açın
CTRL+H ye basın ve Gelen ekrandan Değiştir butonuna basın
"Aranan" kısmına bunu yazın: import net
"Değiştir" kısmına bunu yazın: import mt2net as net
"battle.cpp" açın ve include listesine aşağıdaki kodu ekleyin
Kod:
#include "db.h"
Örnek;
Şimdi bu kodu aratın;
Kod:
bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
ve altındaki fonksiyonda dahil olmak üzere aşağıda verdiğim kod bloğu ile değiştirin
Kod:
#define ENABLE_SYSCHAT_NOTICE
#define ENABLE_SYSLOG_NOTICE
#define ENABLE_BAN_WAITHACK
bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
{
if (ch->m_kAttackLog.dwVID == victim->GetVID())
{
if (current_time - ch->m_kAttackLog.dwTime < GET_ATTACK_SPEED(ch))
{
INCREASE_SPEED_HACK_COUNT(ch);
if (test_server)
{
sys_log(0, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d",
ch->GetName(),
current_time - ch->m_kAttackLog.dwTime,
GET_ATTACK_SPEED(ch),
ch->m_speed_hack_count);
ch->ChatPacket(CHAT_TYPE_INFO, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d",
ch->GetName(),
current_time - ch->m_kAttackLog.dwTime,
GET_ATTACK_SPEED(ch),
ch->m_speed_hack_count);
}
SET_ATTACK_TIME(ch, victim, current_time);
SET_ATTACKED_TIME(ch, victim, current_time);
return true;
}
}
SET_ATTACK_TIME(ch, victim, current_time);
if (victim->m_AttackedLog.dwPID == ch->GetPlayerID())
{
if (current_time - victim->m_AttackedLog.dwAttackedTime < GET_ATTACK_SPEED(ch))
{
INCREASE_SPEED_HACK_COUNT(ch);
if (ch->m_speed_hack_count > 50)
{
#ifdef ENABLE_SYSLOG_NOTICE
sys_log(0, "%s Attack Speed HACK! time (delta, limit)=(%u, %u), hack_count = %d",
ch->GetName(),
current_time - victim->m_AttackedLog.dwAttackedTime,
GET_ATTACK_SPEED(ch),
ch->m_speed_hack_count);
#endif
#ifdef ENABLE_SYSCHAT_NOTICE
ch->ChatPacket(CHAT_TYPE_INFO, "Attack Speed Hack(%s), (delta, limit)=(%u, %u), hack_count = %d",
ch->GetName(),
current_time - victim->m_AttackedLog.dwAttackedTime,
GET_ATTACK_SPEED(ch),
ch->m_speed_hack_count);
#endif
#ifdef ENABLE_BAN_WAITHACK
std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("UPDATE account.account SET status= 'BLOCK' WHERE id = %d", ch->GetDesc()->GetAccountTable().id));
#endif
ch->GetDesc()->DelayedDisconnect(3);
}
SET_ATTACKED_TIME(ch, victim, current_time);
return true;
}
}
SET_ATTACKED_TIME(ch, victim, current_time);
return false;
}
Yapıştırdığınızda 3 define da aktif olur kapatmak için başına "//"(comment tag) koymanız yeterlidir.
Kod:
//#define ENABLE_BAN_WAITHACK
gibi
Oluşacak görüntü
ilk hali:
Yeni Hali;
Sonuç:
Anti Safezone:
*char_battle.cpp
Bulun:
Kod:
bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
{
if (test_server)
sys_log(0, "[TEST_SERVER] Attack : %s type %d, MobBattleType %d", GetName(), bType, !GetMobBattleType() ? 0 : GetMobAttackRange());
//PROF_UNIT puAttack("Attack");
if (!CanMove())
return false;
Kod:
SECTREE *sectree = NULL;
SECTREE *vsectree = NULL;
sectree = GetSectree();
vsectree = pkVictim->GetSectree();
if (sectree && vsectree){
if (sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) || vsectree->IsAttr(pkVictim->GetX(), pkVictim->GetY(), ATTR_BANPK)) {
if (GetDesc()) {
LogManager::instance().HackLog("ANTISAFEZONE", this);
GetDesc()->DelayedDisconnect(3);
}
}
}
Anti Ghostmode:
Uyarı!: Bu önlem yapılan testlerde oyuncu öldüğünde oyundan atabilir.
*input_main.cpp
Bulun:
Kod:
if (!test_server) //2012.05.15 ±è¿ë¿í : Å×¼·¿¡¼* (¹«Àû»óÅ·Î) ´Ù¼ö ¸ó½ºÅÍ »ó´ë·Î ´Ù¿îµÇ¸é¼* °ø°İ½Ã ÄŞº¸ÇÙÀ¸·Î Á×´Â ¹®Á¦°¡ ÀÖ¾ú´Ù.
Kod:
if (ch->IsPC() && ch->IsDead()) {
if (ch->GetDesc()) {
LogManager::instance().HackLog("GHOSTMODE", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
}
Anti Wallhack:
*input_main.cpp
Bulun:
Kod:
const float fDist = DISTANCE_SQRT((ch->GetX() - pinfo->lX) / 100, (ch->GetY() - pinfo->lY) / 100);
Kod:
PIXEL_POSITION pos = ch->GetXYZ();
if (!SECTREE_MANAGER::instance().GetMovablePosition(c h->GetMapIndex(), pos.x, pos.y, pos)) {
if (ch->GetDesc()) {
LogManager::instance().HackLog("WALLHACK", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
}
Anti Long name generator:
*input_login.cpp
Bulun:
Kod:
if (true == g_BlockCharCreation)
{
d->Packet(&packFailure, sizeof(packFailure));
return;
}
Kod:
if (strlen(pinfo->name) > 12){
d->Packet(&packFailure, sizeof(packFailure));
return;
}
#Güncelleme 1
-Client taraflı-
PythonPlayerModule.cpp
Kod:
{ "SetItemData", playerSetItemData, METH_VARARGS },
PythonItemModule.cpp
Kod:
{ "CreateItem", itemCreateItem, METH_VARARGS },
PythonCharacterModule.cpp
Kod:
{ "IsGameMaster", chrIsGameMaster, METH_VARARGS },
Bu fonksiyonlar kullanılmıyor, bu satırları silin.
-Server taraflı-
Anti Maden botu
*char.cpp
Ara:
Kod:
if (mining::GetRawOreFromLoad(chLoad->GetRaceNum()) == 0)
return;
Kod:
if (GetMapIndex() != chLoad->GetMapIndex() || DISTANCE_APPROX(GetX() - chLoad->GetX(), GetY() - chLoad->GetY()) > 1000)
return;
Su olmayan yerde balık tutma fix
*char.cpp
Bul:
Kod:
void CHARACTER::fishing()
Üstüne ekle:
Kod:
bool CHARACTER::IsNearWater() const
{
if (!GetSectree())
return false;
for (int x = -1; x <= 1; ++x)
{
for (int y = -1; y <= 1; ++y)
{
if (IS_SET(GetSectree()->GetAttribute(GetX() + x * 100, GetY() + y * 100), ATTR_WATER))
return true;
}
}
return false;
}
Bul:
Kod:
if (m_pkFishingEvent)
{
fishing_take();
return;
}
Altına ekle:
Kod:
if (!IsNearWater())
return;
*char.h
Bul:
Kod:
void fishing();
Üstüne ekle:
Kod:
bool IsNearWater() const;
Anti renkli pazar
*input_main.cpp
Bul:
Kod:
if (uiBytes < sizeof(TPacketCGMyShop) + iExtraLen)
return -1;
Kod:
if (strstr(p->szSign, ("|c")) || strstr(p->szSign, ("|C"))){
LogManager::instance().HackLog("COLORFUL_SHOP", ch);
return (iExtraLen);
}
Anti Drophack
*char_item.cpp
Bul:
Kod:
LPCHARACTER owner = funcFindOwnership.owner;
Kod:
if (!owner) {
LogManager::instance().HackLog("DROPHACK", this);
return false;
}
#Güncelleme 2
-Server taraflı-
Anti Fishbot
*fishing.cpp
Ara:
Kod:
int ret = Compute(info->fish_id, ms, &item_vnum, GetFishingLevel(ch));
Kod:
if (!ch->GetLastFishTime())
ch->SetLastFishTime(ms);
else {
if (ch->GetFishHackCount() == 3) {
ch->ResetFishHackCount();
LogManager::instance().HackLog("FISHBOT", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
else {
if ((ms == ch->GetLastFishTime()) || (abs(ch->GetLastFishTime() - ms) < 70) || (abs(ms - ch->GetLastFishTime()) < 70))
ch->UpdateFishHackCount();
else
ch->ResetFishHackCount();
}
}
if (test_server)
ch->ChatPacket(CHAT_TYPE_INFO, "/HACK-TEST/ Last: %d Now: %d HackCount: %d", ch->GetLastFishTime(), ms, ch->GetFishHackCount());
*char.cpp
Ara:
Kod:
m_dwMountTime = 0;
Kod:
m_iLastFishTime = 0;
m_iFishHackCount = 0;
Ara:
Kod:
void CHARACTER::ResetChatCounter()
Kod:
void CHARACTER::SetLastFishTime(int time)
{
m_iLastFishTime = time;
}
int CHARACTER::GetLastFishTime()
{
return m_iLastFishTime;
}
int CHARACTER::GetFishHackCount()
{
return m_iFishHackCount;
}
void CHARACTER::UpdateFishHackCount()
{
m_iFishHackCount += 1;
}
void CHARACTER::ResetFishHackCount()
{
m_iFishHackCount = 0;
}
*char.h
Ara:
Kod:
DWORD GetSkipComboAttackByTime() const;
Kod:
int GetFishHackCount();
void UpdateFishHackCount();
void ResetFishHackCount();
void SetLastFishTime(int time);
int GetLastFishTime();
Ara:
Kod:
DWORD m_dwSkipComboAttackByTime;
Kod:
int m_iFishHackCount;
int m_iLastFishTime;
Anti Guild Maker(düşük seviyede)
*input_main.cpp
Ara:
Kod:
if (ch->GetGold() < 200000)
return;
Kod:
if (ch->GetLevel() < 40)
{
LogManager::instance().HackLog("GUILDMAKER", ch);
ch->GetDesc()->DelayedDisconnect(3);
return;
}
Anti Teleport Hack'i aktif etme
Uyarı: Bu sistem maymun zindanı gibi yerlerde ışınlanırken oyundan düşürüyor.
*input_main.cpp
Bul:
Kod:
if( false == LC_IsEurope() )
{
const PIXEL_POSITION & warpPos = ch->GetWarpPosition();
if (warpPos.x == 0 && warpPos.y == 0)
LogManager::instance().HackLog("Teleport", ch); // ºÎÁ¤È®ÇÒ ¼ö ÀÖÀ½
}
sys_log(0, "MOVE: %s trying to move too far (dist: %.1fm) Riding(%d)", ch->GetName(), fDist, ch->IsRiding());
ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ());
ch->Stop();
return;
Kod:
const PIXEL_POSITION & warpPos = ch->GetWarpPosition();
if (warpPos.x == 0 && warpPos.y == 0)
LogManager::instance().HackLog("Teleport", ch); // ºÎÁ¤È®ÇÒ ¼ö ÀÖÀ½
sys_log(0, "MOVE: %s trying to move too far (dist: %.1fm) Riding(%d)", ch->GetName(), fDist, ch->IsRiding());
ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ());
ch->Stop();
ch->GetDesc()->DelayedDisconnect(0);
return;
-Client taraflı-
Anti py injection
*EterPack/EterPackManager.cpp
Ara:
Kod:
bool CEterPackManager::GetFromFile(CMappedFile & rMappedFile, const char * c_szFileName, LPCVOID * pData)
Kod:
#ifndef _DEBUG
//const char *pcExt = strchr(c_szFileName, '.');
//if (pcExt &&
// _strnicmp(pcExt, ".py", 3) == 0 && // python ½ºÅ©¸³Æ® Áß
// stricmp(c_szFileName, "logininfo.py") != 0 && // ·Î±×ÀÎ Á¤º¸ ÆÄÀÏÀÌ ¾Æ´Ï°í
// strnicmp(c_szFileName, "locale", 6) != 0
// )
//{
// return false;
//}
#endif
Kod:
const char *pcExt = strchr(c_szFileName, '.');
if (_strnicmp(pcExt, ".py", 3) == 0){
PostQuitMessage(0);
}
Anti Anti Stun & Anti Sanal GM Efekti
*PythonCharacterManagerModule.cpp
Silin:
Kod:
{ "SetAffect", chrmgrSetAffect, METH_VARARGS },
Anti Attackspeed & Anti Movespeed
*PythonCharacterModule.cpp
Aşağıdaki satırları silin:
Kod:
{ "SetMoveSpeed", chrSetMoveSpeed, METH_VARARGS },
{ "SetAttackSpeed", chrSetAttackSpeed, METH_VARARGS },
Bu konu altındaki başlıklar genel olarak kullanılan hileleri engellemek için yeterlidir
Daha iyi bir koruma için ve bot, hile ve macro scriptlerini engellemek için modül yada fonksiyon isimlerini değiştirmenizide öneririm
Aşağıda net modülünün adını değiştirmek için basit bir anlatım var
*PythonNetworkStreamModule.cpp
Ara:
Kod:
PyObject* poModule = Py_InitModule("net", s_methods);
Kod:
PyObject* poModule = Py_InitModule("mt2net", s_methods);
Şimdi, Tüm python dosyalarını Notepad++ ile açın
CTRL+H ye basın ve Gelen ekrandan Değiştir butonuna basın
"Aranan" kısmına bunu yazın: import net
"Değiştir" kısmına bunu yazın: import mt2net as net
Dosya Eklentileri
En son bir moderatör tarafından düzenlenmiş: