[Beta Release] PacketX - Новый Packet Hacker (L2Off+L2J)
Что программа может:
- Патчит lineage2, шифрует / дешифрует трафик, не шифрует трафик, проходящий через PacketX.
- Поддержка подключаемых модулей (Планируется много функций, позволяющих повеселиться в игре или сделать ингейм бота)
- Возможность модификации входящих пакетов с сервера, используя брейкпоинты
- Исправлена информация об игроках / НПС
- Можно установить брейкпоинты на пакеты клиента или сервера
- Удалено сообщение при Логине, если Вы установили брейкпоинт на Key Packet (в любом случае, сообщение было бесполезно)
- Проходящий через PacketX трафик не шифруется, и может быть легко прочитан
- Исправлены некоторые игровые ошибки, которые появлялись при работе PacketX
- Своевременное обновление Сервер / Клиент ключей.
- Пользовательские команды начинаются с '??'
(Пример использования команд: ??say тест)
- Ведутся логи плагинов.
- Существует возможность расшифровки при полиморфном шифровании.
- PacketX может прослушивать любой порт. По умолчанию стоит 555 порт.
- Возможен обход некоторых трюков, которые используются при блокировки L2Phx.
- Обход смены login/game портов. PacketX автоматически обнаруживает смену портов в игре или непосредственно при логине.
Работа с пакетами:
- Брейкпоинты — одна из самых главных возможностей PacketX, с их помощью можно модифицировать пакеты до того как они будут отправлены серверу или клиенту.
- Таким образом можно изменить что-нибудь в игре, и модифицировать все, что нам доступно.
- Кода брейкпоинт срабатывает, Вы можете изменить данные, которые находятся в очереди на получение/отправку.
- Использование брейкпоинтов в игре может быть очень полезным, так как позволяет изменять все, что отправляется клиенту / серверу.
- Мы можем остановить и изменить пакет, который еще не был принят клиентом или отправлен серверу.
- Логирование игроков — Вы можете получить Object id, name, title, координаты, Heading, verhicle Id и многое другое.
- Логирование NPS — Вы можете получить Object Id, Npc Id, Name, Title, координаты, Heading и многое другое.
- Расшифровка пакетов в native mode — это позволяет расшифровывать пакеты в c++ без использования .net фреймворка, что ускоряет процесс расшифровки.
- Отладка server/client в режиме реального времени — Вы можете наблюдать за всем, что прорисходит.
- Логи шифрования/расшифровывания в режиме реального времени.
- Перенаправление подключения к lineage2
- Поддержка нескольких версий клиента.
- Инъект Клиентских/Серверных пакетов. Возможность отправлять произвольные пакеты Клиенту/Серверу, возможность включать/отключать шифрование пакетов и размер заголовков (возможность устанавливать автоматическую отправку пакетов).
- Вы можете самостоятельно создавать плагины на .net фреймворке и использовать их во время игры.
- Работает с официальными серверами (l2off) и l2j
И многое-многое другое.
Эта версия PacketX стабильная, и Вы можете устанавливать флуд-пакетами 0мсек.
В состав PacketX входит:
L2Crypt.dll - Шифровщик/расшифровщик
WinsockRedirect.dll — перенаправляет соединение на proxy-сервер для работы с пакетами
xBot.dll — плагин, разработанный создателем PacketX'a
Исходный код xBot:
Код:
using System;
using System.Collections.Generic;
using System.Text;
using L2PacketX.src.Lineage2.Packets;
using L2PacketX.src.Lineage2;
namespace xBot
{
public class xBot : L2PacketX.src.PluginSystem.PacketXPlugin
{
Random rnd = new Random();
public override string PluginName
{
get
{
return "xBot";
}
}
public override void EntryPoint()
{
AddLog("xBot Plugin is loaded!", true);
}
public override void onEnterWorld(L2PacketX.src.ConnectedClient client)
{
AddLog("Entering world", true);
}
public override void onLogout(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
L2Say say = new L2Say();
say.Message = "Bye bye world...";
Say(say, client, TargetHost.Server);
AddLog("Logging out", true);
}
public override void onValidatePosition(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Validating Position", true);
}
public override void onPacketXCommand(L2PacketX.src.ConnectedClient client, string cmd, PlayerInfo player)
{
AddLog("Executing command: " + cmd, true);
if (cmd.StartsWith("say "))
{
L2Say say = new L2Say();
say.Message = cmd.Substring(4);
Say(say, client, TargetHost.Server);
}
else if (cmd.StartsWith("rndwalk"))
{
L2Position pos = new L2Position();
pos.TargetX = (client.playerInfo.X + rnd.Next(-100, 100));
pos.TargetY = (client.playerInfo.Y + rnd.Next(-100, 100));
pos.TargetZ = client.playerInfo.Z;
pos.CurX = client.playerInfo.X;
pos.CurY = client.playerInfo.Y;
pos.CurZ = client.playerInfo.Z;
MoveToPosition(pos, client, TargetHost.Server);
}
else if (cmd.StartsWith("kill_all"))
{
for (int i = 0; i < client.Npcs.Count; i++)
{
L2Die die = new L2Die();
die.ObjectId = client.Npcs.Values[i].ObjectId;
this.Die(die, client);
}
for (int i = 0; i < client.Players.Count; i++)
{
if (client.playerInfo.ObjectId == client.Players.Values[i].ObjectId)
continue; //don't kill ourself
L2Die die = new L2Die();
die.ObjectId = client.Players.Values[i].ObjectId;
this.Die(die, client);
}
}
else if (cmd.StartsWith("clean"))
{
for (int i = 0; i < client.Npcs.Count; i++)
{
this.DeleteObject(client.Npcs.Values[i].ObjectId, client);
}
for (int i = 0; i < client.Players.Count; i++)
{
if (client.playerInfo.ObjectId == client.Players.Values[i].ObjectId)
continue; //don't kill ourself
this.DeleteObject(client.Players.Values[i].ObjectId, client);
}
}
else if (cmd.StartsWith("lvlup"))
{
L2SocialAction action = new L2SocialAction();
action.ActionId = (int)SocialActions.Hello;
action.ObjectId = player.ObjectId;
SocialAction(action, client, TargetHost.Server);
}
else if (cmd.StartsWith("injectgame "))
{
List<Byte> bytes = new List<Byte>();
string byteStr = cmd.Substring(11);
for (int i = 0; i < byteStr.Length / 3; i++)
bytes.Add(Byte.Parse(byteStr[i * 3].ToString() + byteStr[(i * 3) + 1].ToString(), System.Globalization.NumberStyles.HexNumber));
InjectPayload(bytes.ToArray(), client, TargetHost.Game, true);
}
}
public override void onRequestAttack(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Requestion to attack", true);
}
public override void onRequestStartPledgeWar(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestReplyStartPledgeWar(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestStopPledgeWar(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestReplyStopPledgeWar(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestSurrenderPledgeWar(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestReplySurrenderPledgeWar(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestUnEquipItem(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestTrade(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onAddTradeItem(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onTradeDone(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestLinkHtml(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Requesting html", true);
}
public override void onRequestBBSwrite(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestJoinPledge(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestAnswerJoinPledge(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestWithdrawalPledge(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestOustPledgeMember(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestGetItemFromPet(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestAllianceInformation(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestCrystallizeItem(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestPrivateStoreManageSell(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onSetPrivateStoreListSell(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestSellItem(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestMagicSkillList(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onAppearing(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Appearing", true);
}
public override void onSendWareHouseDepositList(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onSendWareHouseWithDrawList(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestShortCutRegister(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestShortCutDelete(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestBuyItem(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestDismissPledge(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestJoinParty(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestAnswerJoinParty(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestWithDrawalParty(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestOustPartyMember(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onRequestDismissParty(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onCannotMoveAnymore(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Cannot move anymore", true);
}
public override void onRequesTargetCancel(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Cancelling target", true);
}
public override void onClanSetTitle(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onProtocolVersion(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Sending protocol version", true);
}
public override void onMovingToPosition(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Moving to position", true);
}
public override void onDismisspartyroom(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onCommunityBoard(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Opening community board", true);
}
public override void onCharacterSelect(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Selecting character", true);
}
public override void onNewCharacter(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Creating character", true);
}
public override void onInventory(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Opening inventory", true);
}
public override void onSelectTarget(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Selecting target", true);
}
public override void onRequestDropItem(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Dropping item", true);
}
public override void onRequestUseItem(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onBypassHandler(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onAuthLogin(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
AddLog("Logging in", true);
}
public override void onRequestUseSkill(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
public override void onSay(L2PacketX.src.ConnectedClient client, PlayerInfo player)
{
}
}
}
Скачать: [Ссылки могут видеть только зарегистрированные пользователи. ]
Разработчик: DragonHunter
Написано на C++/C#
Как использовать:
Запустить L2PacketX.exe.
Перейти на вкладку Server и нажать 'Listen Proxy'.
Нажать на кнопку '...' и выбрать l2.exe.
Нажать 'Start & Inject' и игра запустится.
Логиньтесь и получайте удовольствие*
Если при нажатии 'Inject' или 'Start & Inject' появляются ошибки, для исправления надо:
1. Скачать msvcr100d.dll отсюда [Ссылки могут видеть только зарегистрированные пользователи. ]
2. Переместить файл в C:\Windows\System
3. Попробовать снова запустить L2PacketX.
Re: [Beta Release] PacketX - Новый Packet Hacker (L2Off+L2J)
Спасибо, особенно Брейкпоинт порадовал. Я так понимаю, что возможно и обойти слабенькую шифрацию? Или серв не сможет дешифровать её, если сменить её в пакете?
Re: [Beta Release] PacketX - Новый Packet Hacker (L2Off+L2J)
Цитата:
Сообщение от ProHacked228
Спасибо, особенно Брейкпоинт порадовал. Я так понимаю, что возможно и обойти слабенькую шифрацию? Или серв не сможет дешифровать её, если сменить её в пакете?
Все зависит от того, шифруются данные до того как программа их перехватит или после.
________________
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';