Jump to content
Sign in to follow this  
Gamaz

Баг с CREST фото картинок клана Крит

Recommended Posts

Недавно увидил как зиливают по 1к картинок в папку CREST и людей ничанаиет критить в гиране

как удаляешь папку с 0 создаешь  всe ок потом опять приходит читер и снова заливает просит шмот и скилы

есть вариант без исходов фиксануть как то?

ставил папке права READ  а она снова создается удалял также не помогает автоматически появляется

можно как то в линуксе заблочить создание этой папки или нет

сборка  PWSOFT 2018

не убирать же создания клана совсем с сервера

Share this post


Link to post
Share on other sites

либо как-то запретить залив в папку CREST как временное решение у меня Дэбиан8  стоит

Share this post


Link to post
Share on other sites

chmod 444/111 либо писать скрипт для клана который запретит менять логотип для клана в течении 30 минут после последнего раза

Share this post


Link to post
Share on other sites

а кто сталкивался с подобным ?

я вот думаю поставить флаг  i на папку атрибут

или как-то ограничить залив с 1 IP  не чаще чем раз в час

Share this post


Link to post
Share on other sites

Забань запись в папку со значками да и все. Без исходов ниче ты там не сделаешь. Кланам кому надо вручную выстави картинки в эту папку.

Share this post


Link to post
Share on other sites

страно что все кто смотрит на него улетают в криты а он не улетает сам

я думал может есть какие-то багнутые картинки от которых криты идут

Share this post


Link to post
Share on other sites
1 минуту назад, Gamaz сказал:

страно что все кто смотрит на него улетают в криты а он не улетает сам

я думал может есть какие-то багнутые картинки от которых криты идут

Конечно есть, гугли баг "критуем посонов"

Share this post


Link to post
Share on other sites

вот такой кстати крит всегда

 

CreateTexture failed(D3DERR_INVALIDCALL).
Texture (Param:USize=16,VSize=1,NumMips=1,FirstMip=0,D3DFormat=827611204,Texture=191130f8

History: FD3DTexture::Cache <- FD3DRenderInterface::CacheTexture <- FD3DRenderInterface::HandleCombinedMaterial <- FD3DRenderInterface::SetSimpleMaterial <- FD3DRenderInterface::SetMaterial <- FCanvasUtil::Flush <- FCanvasUtil::BeginPrimitive <- FCanvasUtil::DrawTile <- UCanvas::DrawNormalText <- UCanvas::DrawTextToCanvas <- FDynamicActor::Render <- Actor <- TranslucentRendering <- RenderLevel <- FLevelSceneNode::Render <- FPlayerSceneNode::Render <- UGameEngine::Draw <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- MainLoop

Share this post


Link to post
Share on other sites
Posted (edited)

Ну очевидно же, используют баг "критуем посонов"

(Param:USize=16,VSize=1

На сервере фикс элементарный просто обработчик поправить пакета на установку картинки.

Edited by Rogue

Share this post


Link to post
Share on other sites
Posted (edited)
15 минут назад, Gamaz сказал:

да. Тебе в принципе надо просто проверить байты на конкретных позициях которые приехали, чтобы картинка всегда была 16 на 12, а если данные не такие то скипать такую картинку.

Edited by Rogue

Share this post


Link to post
Share on other sites

ну исходы нужны же

Share this post


Link to post
Share on other sites

Ну скилловые ребята могут и на компиле сделать, через декомпил класса.

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)

1. Декомпилим "RequestSetPledgeCrest", в вашем случае он должен быть гдето в net\sf\l2j\gameserver\network\clientpackets. Либо берем из шареных исходников, подозреваю что врядли будут какието бркейченжи. Вопрос: Как декомпилить? Ответ: гугл с запросом "java decompiller" вам поможет

2. В пакете RequestSetPledgeCrest есть два поля, длинна и собственно говоря байтовый массив с картинкой. Скорее всего все проверки на "валидность" там ограничиваються только проверкой длинны. (что-то вроде if (length == 0 || length >256))

3. В декомпилированом\взятом из исходников классе можно добавить метод проверки на валидность, какойнибудь bool isValidCrestData(byte[] array)

4. в теле метода разбираем полученый байтовый массив на структуру DDS

//buf - обычный байтбуффер из array
int magic = buf.getInt();
int size = buf.getInt();
int flags = buf.getInt();
int height = buf.getInt();
int width = buf.getInt();
int pitch = buf.getInt();
int depth = buf.getInt();
int mipMapCount = buf.getInt();
int alphaBitDepth = buf.getInt();
int reserved1 = buf.getInt();
int surface = buf.getInt();
int colorSpaceLowValue = buf.getInt();
int colorSpaceHighValue = buf.getInt();
int destBltColorSpaceLowValue = buf.getInt();
int destBltColorSpaceHighValue = buf.getInt();
int srcOverlayColorSpaceLowValue = buf.getInt();
int srcOverlayColorSpaceHighValue = buf.getInt();
int srcBltColorSpaceLowValue = buf.getInt();
int srcBltColorSpaceHighValue = buf.getInt();
int pfSize = buf.getInt();
int pfFlags = buf.getInt();
int pfFourCC = buf.getInt();
int pfRGBBitCount = buf.getInt();
int pfRBitMask = buf.getInt();
int pfGBitMask = buf.getInt();
int pfBBitMask = buf.getInt();
int pfABitMask = buf.getInt();
int ddsCaps1 = buf.getInt();
int ddsCaps2 = buf.getInt();
int ddsCaps3 = buf.getInt();
int ddsCaps4 = buf.getInt();
int textureStage = buf.getInt();

PS. Имена полей условные, структуру взял из сборки которая попалась под руку.

5. Далее проверяяем на валидность

int size = 256;

if (magic != 0x20534444) {
  return false;
}
if (size != 0x7C) {
  return false;
}
if (flags != 0x81007) {
  return false;
}
if (height % 4 != 0 || height > 64 || height < 4) {
  return false;
}
if (width % 4 != 0 || width > 64 || width < 4) {
  return false;
}
if (pfFlags != 0x04 || pfFourCC != 0x31545844 || pfSize != 0x20) {
  return false;
}
if (mipMapCount != 0x00) {
  return false;
}
if (pitch != (size - 0x80)) {
  return false;
}
if (depth != 0x00) {
  return false;
}
if (ddsCaps1 != 0x00) {
  return false;
}
if (ddsCaps2 != 0x00) {
  return false;
}
if (ddsCaps3 != 0x00) {
  return false;
}
if (ddsCaps4 != 0x00) {
  return false;
}
return true

PS. Код для примера и понимания сути, фил фри пилить любые удобные обвертки итд

6. Соотвественно после проверок на длинну ( в пакете) вызываем полученый метод isValidCrestData

7. Компилим класс javac'ом обратно, передав в класспас нужные либы ( подозреваю что скопиленого ядра и какогонибудь mysql адаптера будет достаточно), тут уже нужно смотреть по зависимостям в пакете. 

Edited by lvlkoo

Share this post


Link to post
Share on other sites
Posted (edited)

учитывая что isValidCrestData(ибо я его и писал) есть только у меня, автору это ни о чем не скажет.....

Ты так выражаешься и описываешь, якобы сам это делал. Стыд и срам, а не сообщение.

Edited by Deazer

Share this post


Link to post
Share on other sites
Posted (edited)

смысл вы ему объясняете когда ему нужно готовое решение, что бы за него кто то сделал))

Edited by Infinitys

Share this post


Link to post
Share on other sites

Хех, я думал эту уязвимость уже все давно закрыли - ибо в свое время ее активно юзали.

Share this post


Link to post
Share on other sites
56 минут назад, Deazer сказал:

учитывая что isValidCrestData(ибо я его и писал) есть только у меня, автору это ни о чем не скажет.....

Ты так выражаешься и описываешь, якобы сам это делал. Стыд и срам, а не сообщение.

Слушай, к чему этот ликбез? Там вполне понятно написано

1 час назад, lvlkoo сказал:

структуру взял из сборки которая попалась под руку.

С учётом того, что твой декомпил пошел по рукам ещё до того когда я декомпил и правил купленное у тебя ядро - я абсолютно не исключаю того факта что это твой код, написанный тобой, "позаимствованный" у тебя. К тому же в твоей реализации это смотрится намного лучше (вот прям специально посмотрел). 

Я готов тебе постоянно повторять, что ты ахуенен как разработчик, но максимально хуевен в альтруизме.

Очередной пример - эта тема. Если в пример приводят твой код нужно гордиться, а не плескаться жельчью

 

Я нигде не обмолвился словом что это мой код, твой код, чей-то другой код, это пост попытки помощи человеку. Пожалуйста, задумайся наконец-то над этим. 

Share this post


Link to post
Share on other sites
Posted (edited)

Кстати выше приведенный код корректно проверит только клановые значки, но не значки альянса и тем более не значки на клановый щит (есть ли они в IL я не помню)

Edited by Gaikotsu

Share this post


Link to post
Share on other sites
1 минуту назад, Gaikotsu сказал:

Кстати выше приведенный код корректно проверит только клановые значки, но не значки альянса

С уважением скину " код господина дизера" для проверки альянсовых значков. Но он опять оборет всех, разплескивая свою желчь.

Share this post


Link to post
Share on other sites
Posted (edited)
1 час назад, lvlkoo сказал:

Слушай, к чему этот ликбез? Там вполне понятно написано

С учётом того, что твой декомпил пошел по рукам ещё до того когда я декомпил и правил купленное у тебя ядро - я абсолютно не исключаю того факта что это твой код, написанный тобой, "позаимствованный" у тебя. К тому же в твоей реализации это смотрится намного лучше (вот прям специально посмотрел). 

Я готов тебе постоянно повторять, что ты ахуенен как разработчик, но максимально хуевен в альтруизме.

Очередной пример - эта тема. Если в пример приводят твой код нужно гордиться, а не плескаться жельчью

 

Я нигде не обмолвился словом что это мой код, твой код, чей-то другой код, это пост попытки помощи человеку. Пожалуйста, задумайся наконец-то над этим. 

Пиши код сам! Решайте поступившие тебе задачи самостоятельно.

С какой радости я должен вообще заниматься альтруизмом, я что Мать Тереза ? Или Махатма Ганди ? Нет, я бы вообще скосил всех тупых, убогих и больных. И если у кого есть мой декомил 2018 года, пусть качают и смотрят самостоятельно. Я ни тебе и ни кому либо еще не разрешал делиться своим кодом или его частями, а тем более публично.  Тебе ясен ликбез или нет ?

И Вот мое решение, сидите и переписывайте. Нормальное, с комментариями и так далее 

 

735f60602ff13c4545f89bf3d137594c.png

 

PS Весь ТВОЙ альтруизм заключается в том что бы просто скопипастить чужой код и высрать его на форуме, что бы очередной даун у тебя заказал "фиксы" которые ты очередной раз спи*шь и продашь чужой труд. Ты не альтруист, ты клоп.

Edited by Deazer
  • Like 1

Share this post


Link to post
Share on other sites
32 минуты назад, Deazer сказал:

 

 я что Мать Тереза ? Или Махатма Ганди ? Нет, я бы вообще скосил всех тупых, убогих и больных.

Это эмоции или ты на полном серьёзе ? 

Share this post


Link to post
Share on other sites
5 минут назад, ammy сказал:

Это эмоции или ты на полном серьёзе ? 

Ты уметь в флейм нет ? Я делал громадное кол-во публикаций эксклюзивных абсолютно. Это вроде очевидно. Я постоянно анпакаю патчи, я первый шарил актуальные ПТСки, я делалю кучу гайдов и ничего за это никогда не просил. Нет ни кнопок доната, ни просьб о финансовых поддержках.

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

По поводу больных, убогих и тупых - флейм нет ? Слышал про такое нет ?

И еще раз повторюсь, ничего не имею против тупых или кривых или собак или любые карбоновые виды жизни.

Share this post


Link to post
Share on other sites
Только что, Deazer сказал:

Ты уметь в флейм нет ? Я делал громадное кол-во публикаций эксклюзивных абсолютно. Это вроде очевидно. Я постоянно анпакаю патчи, я первый шарил актуальные ПТСки, я делалю кучу гайдов и ничего за это никогда не просил. Нет ни кнопок доната, ни просьб о финансовых поддержках.

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

По поводу больных, убогих и тупых - флейм нет ? Слышал про такое нет ?

И еще раз повторюсь, ничего не имею против тупых или кривых или собак или любые карбоновые виды жизни.

Я уже старый ))) Надеюсь будет мир во всём мире, а тебя понять можно так как это твой код, твоя структура и твоё потраченное время.

Я думаю что ни кто не форуме не претендует на твоё творение, человек просто на просто любыми путями решил помочь (не согласовал с тобой) что выложит твой код а именно декомпил так как он давно уже на руках, так же кстати и 09.20 года на руках классик + ИЛ на зарубежном форуме, могу ошибаться с датой ревизии (+ как заверят пират сборка отвязана). 

Надеюсь что все на этом форуме будут соблюдать самообладание.

p.s всем бобра :D

Share this post


Link to post
Share on other sites

Это лишняя инфа, код обфусцирован. Собрать его обратно даже если и получиться, работать с ним будет невозможно. Так что тебя ввели в заблуждение.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...