Перейти к содержанию

ncsSpawN

Заблокирован
  • Публикаций

    1092
  • Зарегистрирован

  • Посещение

  • Победитель дней

    15
  • Отзывы

    0%

Весь контент ncsSpawN

  1. ncsSpawN

    Rip Interlude.Ru.Com под StressWeb 13

    Это не мой проект я только там работаю )
  2. ncsSpawN

    la2onix - продажа

    Какова цена ?
  3. По моему исходники It.su будут по свежее Чем данный компил.
  4. Скорее всего в пакете реквест байпас стоит защита. либо ещё где-то.
  5. Зачем старье, чем вам Acis не подходит ?
  6. Мы тоже не стоим на месте, естественно все что выкладывают на форум попадает в список фикс листа. Иногда приходится отложить, когда есть более критический баг, в следствии теряется время. Также очень много попадает фейк информации связанной с дюпом и её приходится в приоритетном режиме опровергать. На все эти мелочи теряется время, но не смотря на это все рано или поздно попадает в фикс лист. Хотелось бы утвердить что именно лежит на форуме что вы оставили и это нужно зафиксить. И хотелось бы услышать минусы как со стороны клиента что именно не хватает сборке для того чтоб можно было сделать выводы и исправить это положение.
  7. Я бы так не сказал, как по мне та же скория хорошо расписана. По сравнению того что в шаре it.su А так можно брать ту же люцеру2 убрать фризы, утечку, убрать нахрен фастмапы сделав небольшую оптимизацию, профиксить пару уязвимостей. И готов качественный исходник.
  8. Пишите на форум, что не так работает реализуем. Мы же тоже на месте не стоим.
  9. Адренали или l2phx Для обоих нужен будет скрипт перехвата пакета say2 и записывать в txt
  10. ncsSpawN

    Дюп от ncs.SpawN

    Закрытие известных дюпов на стороне сервера затрудняет задачу раздюпа самого сервера и заставляет человека искать что-то новое, защита на стороне клиента также затрудняет уже поиск этих дюпов, ну а аудит и мониторинг реализует определенные уровни защиты по которым разработчик должен по базово их отслеживать и фиксить. Естественно все логи должен предоставить сам администратор проекта непосредственно разработчику сервера. Как видим по этой схеме каждый вносит свой вклад даже тот кто пытается взломать) По этому не стоит ленится и каждый должен выполнять свою функцию как и разработчик сервера так и разработчик клиент защиты так и сам читер, и только тогда защита будет с каждым разом все совершенней и совершенней.
  11. ncsSpawN

    Дюп от ncs.SpawN

    Да тут нечего спорить, защита должна быть 3 стихий: воды, огня и ветра. В народе говоря: 1 На уровне сервера, 2 На уровне клиента. 3 Аудит и мониторинг. Если все это качественно будет реализовано, то не какой взлом не страшен. Естественно тут каждый должен внести свой вклад в это.
  12. ncsSpawN

    Дюп от ncs.SpawN

    Ну если найду что-то ещё сам то может выложу ещё)
  13. ncsSpawN

    Дюп от ncs.SpawN

    Почему же, нужно давать мотивацию и надежду другим людям) Мало ли кто тоже найдет что-то интересное и выложит в шару.
  14. ncsSpawN

    Дюп от ncs.SpawN

    Даже не представляете на сколько, всегда можно найти рано или поздно что то новое, в основном все дырки прикрыты, а вот дырки при определенных условиях продумать все просто невозможно. Для этого нужен уже высокий искусственный интеллект чтоб просчитал все и профиксил все баги. Ну а затем поработил весь мир)
  15. ncsSpawN

    Дюп от ncs.SpawN

    Если бы не DeadForz я бы не начал разбирать офлайн трейд и не нашел бы то что нашел, отдельная благодарность DeadForz ) Ну а остальные уязвимости не имею право разглашать так как автор не я )
  16. ncsSpawN

    Дюп от ncs.SpawN

    И так решил выложить в шару фикс уязвимости для дюпа через offline trade. Так как автором дюпа являюсь я и имею полное право на его разглашение, я решил выложить его в шару по собственному желанию и доброй воли для forummaxi.ru Данная уязвимость работает на многих сборках. И так приступим ... Теория: Как же работает команда .offline ? Она добавляет игрока в список оффлайн трейдеров, ставит setActiveChar значение null и отправляет клиенту пакет LeaveWorld. Вроде бы не чего странного ? Но а что если взять и заблокировать пакет LeaveWorld ?) К примеру скриптом для l2phx: procedure Init; //Вызывается при включении скрипта begin end; procedure Free; //Вызывается при выключении скрипта begin end; begin if FromServer and (pck[1]=#$7e) then pck:=#$30; end. В итоге мы получаем фейк чара, он не может отсылать пакеты, но если его бафнуть мы видим что он онлайн. Суть дальше кому нужно поймет. Теперь практика: public boolean doOffline() { synchronized (this) { if (isOfflineTrade() || inObserverMode()) { return false; } setOfflineTrade(true); setEndOfflineTime(false, 0); leaveParty(); sendMessage(Message.getMessage(this, Message.MessageId.MSG_OFFLINE_MODE_ON)); ThreadPoolManager.getInstance().scheduleAi(new Runnable() { public void run() { sendPacket(LeaveWorld.STATIC_PACKET); deleteMe(); updateOnlineStatus(); } }, 5000, true); return true; } } Фикс: Просто добавляем getClient().closeNow(); public boolean doOffline() { synchronized (this) { if (isOfflineTrade() || inObserverMode()) { return false; } setOfflineTrade(true); setEndOfflineTime(false, 0); leaveParty(); sendMessage(Message.getMessage(this, Message.MessageId.MSG_OFFLINE_MODE_ON)); ThreadPoolManager.getInstance().scheduleAi(new Runnable() { public void run() { sendPacket(LeaveWorld.STATIC_PACKET); deleteMe(); getClient().closeNow(); updateOnlineStatus(); } }, 5000, true); return true; } } И это не единственная уязвимость которая есть на многих сборках) Лучшая защита от этого всего это аудит и мониторинг. Спасибо! =)
  17. Ошибки в дп и или в ядре? За дп я не отвечал, на l2code исправлено. А по ядру провал также давно исправлен. Патч на тестовый сервер доступен на нашем сайте, если нужно выдам адм.
  18. Старое... На данный момент актуальное ядро 3.7
  19. package custom.core; import org.apache.log4j.Logger; import ru.catssoftware.gameserver.Announcements; import ru.catssoftware.gameserver.datatables.ItemTable; import ru.catssoftware.gameserver.handler.IItemHandler; import ru.catssoftware.gameserver.handler.IVoicedCommandHandler; import ru.catssoftware.gameserver.handler.ItemHandler; import ru.catssoftware.gameserver.handler.VoicedCommandHandler; import ru.catssoftware.gameserver.model.L2ItemInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PlayableInstance; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; import ru.catssoftware.gameserver.util.PcAction; import ru.catssoftware.tools.random.Rnd; public class VipBag implements IVoicedCommandHandler, IItemHandler { private final static int ITEM_ACTIVE_ID = 3481; //Ид предмета активации. private final static boolean VB_HERO = true; // Включить выдачу Геройства. private final static int VB_HERO_CHANCE = 50; // Шанс получения Геройства. private final static int VB_HERO_DAYS = 1; // На сколько дней выдавать Геройство. private final static boolean VB_PA = true; // Включить выдачу Премиум Аккаунта. private final static int VB_PA_CHANCE = 50; // Шанс получения Премиум Аккаунта. private final static int VB_PA_DAYS = 1; // На сколько дней выдавать Премиум Аккаунта. private final static boolean VB_ARMOR = true; // Включить выдачу одной из Брони по рандуму. private final static int VB_ARMOR_CHANCE = 50; // Шанс получения Брони. private static final int VB_ARMOR_IDS[] = {58,59,60,61}; // ИДы Брони указывать через запятую. private final static boolean VB_COL = true; // Включить выдачу Монеты. private final static int VB_COL_CHANCE = 50; // Шанс получения Монет. private final static int VB_COL_ID = 4037; // ИД Монет. private final static int VB_COL_COUNT = 1000; // Количество Монет. private final static boolean VB_TATOO = true; // Включить выдачу Донат Тату. private final static int VB_TATOO_CHANCE = 50; // Шанс получения Донат Тату. private final static int VB_TATOO_ID = 62; // ИД Донат Тату. private static final Logger _log = Logger.getLogger(VipBag.class.getName()); private static int ITEM_IDS[] = {ITEM_ACTIVE_ID}; public VipBag() { _log.info(""); _log.info(" ######################################################"); _log.info(" ###### VipBag by ncs.SpawN Loading... ######"); _log.info(" ###### ICQ 4555-7-8898 ######"); _log.info(" ######################################################"); _log.info(""); ItemHandler.getInstance().registerItemHandler(this); VoicedCommandHandler.getInstance().registerVoicedCommandHandler(this); } @Override public boolean useVoicedCommand(String command, L2PcInstance player, String params) { command = command+" "+params; if(command.startsWith("ag_vipbag")) { String choise = command.substring(9).trim(); if(choise.startsWith("edit")) { int chance = Rnd.get(100); L2ItemInstance coin = player.getInventory().getItemByItemId(ITEM_IDS[0]); int flag = Integer.parseInt(choise.substring(4).trim()); //_log.info("hello2: "+flag+""); if (coin != null && coin.getCount() > 0) { if(flag == 1 && VB_HERO != false) { if (player.isHero() != false) { player.sendMessage("Вы Уже имеете Геройство."); showWelcome(player); } else { if (chance < VB_HERO_CHANCE) { //player.setHero(VB_HERO_DAYS); PcAction.addHeroStatus(player,VB_HERO_DAYS); Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Геройство\" и ему повезло!"); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } else { Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Геройство\" и ему не повезло..."); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } } } if(flag == 2 && VB_PA != false) { if (player.getPremiumService() > 0) { player.sendMessage("Вы Уже имеете Премиум Аккаунт."); showWelcome(player); } else { if (chance < VB_PA_CHANCE) { //player.storePremium(VB_PA_DAYS); PcAction.addPremiumServices(player,player.getAccountName(),VB_PA_DAYS); //player.setPremiumService(VB_PA_DAYS); Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Премиум Аккаунт\" и ему повезло!"); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } else { Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Премиум Аккаунт\" и ему не повезло..."); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } } } if(flag == 3 && VB_ARMOR != false) { if (chance < VB_ARMOR_CHANCE) { int armor_id = Rnd.get(VB_ARMOR_IDS.length); String _ItemName = ItemTable.getInstance().getItemName(VB_ARMOR_IDS[armor_id]); player.addItem("ag_vipbag_", VB_ARMOR_IDS[armor_id], 1, player, true); Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Броня\" и ему повезло c "+_ItemName+"!"); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } else { Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Броня\" и ему не повезло..."); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } } if(flag == 4 && VB_COL != false) { if (chance < VB_COL_CHANCE) { String _ItemName = ItemTable.getInstance().getItemName(VB_COL_ID); player.addItem("ag_vipbag_", VB_COL_ID, VB_COL_COUNT, player, true); Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Монеты\" и ему повезло с "+_ItemName+" "+VB_COL_COUNT+" штук!"); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } else { Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Монеты\" и ему не повезло..."); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } } if(flag == 5 && VB_TATOO != false) { if (chance < VB_TATOO_CHANCE) { String _ItemName = ItemTable.getInstance().getItemName(VB_TATOO_ID); player.addItem("ag_vipbag_", VB_TATOO_ID, 1, player, true); Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Донат Тату\" и ему повезло с "+_ItemName+"!"); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } else { Announcements.getInstance().announceToAll("Игрок " + player.getName() + " везунчик и получил шанс испаытать удачу он выбрал \"Донат Тату\" и ему не повезло..."); player.destroyItemByItemId("ag_vipbag_", ITEM_IDS[0], 1, player, true); } } } else { player.sendMessage("Не достаточное количество предметов!"); } return true; } else { return false; } } return true; } private void showWelcome(L2PcInstance player) { if(player.isParalyzed() || player.getUserKey().on == 1) { player.sendActionFailed(); return; } NpcHtmlMessage nhm = new NpcHtmlMessage(player.getObjectId()); String build = "<html><body><center>"; build += "Получить приз!<br1>"; if(VB_HERO) { build += "<button value=\"Геройство\" action=\"bypass -h voice_ag_vipbag edit 1\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br1>"; } if(VB_PA) { build += "<button value=\"Премиум Аккаунт\" action=\"bypass -h voice_ag_vipbag edit 2\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br1>"; } if(VB_ARMOR) { build += "<button value=\"Броня\" action=\"bypass -h voice_ag_vipbag edit 3\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br1>"; } if(VB_COL) { build += "<button value=\"Монеты\" action=\"bypass -h voice_ag_vipbag edit 4\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br1>"; } if(VB_TATOO) { build += "<button value=\"Донат Тату\" action=\"bypass -h voice_ag_vipbag edit 5\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br1>"; } build += "</center></body></html>"; nhm.setHtml(build); player.sendPacket(nhm); } public void useItem(L2PlayableInstance playable, L2ItemInstance item, int ctrl) { if (!playable.isPlayer()) return; L2PcInstance player = (L2PcInstance) playable; showWelcome(player); } public void useItem(L2PlayableInstance playable, L2ItemInstance item, boolean animation) { } public int[] getItemIds() { return ITEM_IDS; } private static VipBag _instance = null; public static VipBag getInstance() { if (_instance == null) _instance = new VipBag(); return _instance; } private static final String VOICED_COMMANDS[] = { "ag_vipbag" }; @Override public String[] getVoicedCommandList() { return VOICED_COMMANDS; } public static void main (String... arguments ) { new VipBag(); } @Override public String getDescription(String command) { return null; } }
  20. Не в обиду конечно, но как по мне ту и ту защиту можно обойти. Переписав тот же пакетхак, ведь исходы же есть. А это уже большой минус... По сути защита должна быть определенно на самом сервере. А то что стоит на вашем компьютаре и к ней имеется полный доступ всегда можно обойти. Вопрос остается в трудоемкости, времени, и знаний. Ну и какая с этого будет польза.
  21. Lexical error at line 26, column 75 Lexical error at line 72, column 138
  22. ncsSpawN

    сборка it.su

    Но сама ирония в том что над сборкой ит.су работал также фокстрот разработчик pwsoft)
  23. ncsSpawN

    сборка it.su

    Я бы не сказал что это все что нужно для старта, там много работы ещё, но сборка действительно хорошая. Как некоторые тут писали на форуме что европвп и ит.су давно отказались от этого высера, странно почему же тогда сейчас она доработанная стоит на кетре и на европвп.
×
×
  • Создать...