All streams
Search
Write a publication
Pull to refresh
67
0
Aleksey R. @kITerE

system programming

Send message

Поживем-увидим, но будем надеяться, что бан будет не на пользователя, а на конкретное письмо. Опять же: суть вышеописанных изменений в методах детекта, а не в политике наложения банов.

Видимо, истец был совсем плох в отстаивании своей позиции.

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


Возможно суд постановил, что публикация в интернете это уже факт тиражирования. Или логотип подразумевался печати на одежде, которая "товар народного потребления".


Производство изобразительной, печатной, сувенирной и другой тиражированной продукции и товаров народного потребления
Вы можете заказать такой портрет и повесить, например, у себя дома в коридоре, демонстрируя гостям одновременно свое остроумие и величие).

А на рабочий стол машины, на которой я разрабатываю коммерческое ПО можно?
А в офис повесить можно, учитывая гостей-коммерческих клиентов?
А в кафе/парикмахерскую/etc?


А то получается, что объект в общественном достоянии и (вроде как) все в равных правах могу его использовать и популяризировать. Но оказываются что опять есть те, кто "ровнее", а остальные недостойны упоминать великие произведения.

Хм… А публикация на хабре, который зарабатывает деньги, изображения картины тоже, получается, преследуемое деяние?


Придётся удалить с сайта все фотографии, где виден рисунок, и больше нельзя использовать воспроизведение картины Гейнсборо «Дама в голубом» без разрешения Эрмитажа. То же самое повторил апелляционный суд.

— Если кто-то сфотографирует и сделает книгу, это еще и материальный ущерб музею. Неужели мы хотим, чтобы на музеях зарабатывали случайные люди, которые часто даже не умеют правильно подписать картину?

Microsoft говорит, что в Windows 10 pro атака блокируется "из коробки"


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

Рискуя показаться наивным: почему не делать так?
То есть, например, для распределенных команд, не имеющих возможности собраться вживую, метод не подходит совсем?

Впрочем, вероятность изменения паттерна функции на порядок меньше, чем вероятность изменения порядка полей. Так что мы решили остановиться на втором методе.

  1. На чем основывался расчет вероятности? Есть какая-то статистика по изменениям паттернов кода и перетасовке полей?
  2. Почему не использовать каскад методов: если не получилось найти паттерн в коде функции, тот искать по смещениям?
Как бы то ни было, смена подхода с «выпускайте патч как можно быстрее» на «закрывайте уязвимость надежно» — это хорошие новости.

Отличная новость, ведь и у пользователей будет больше времени успеть накатить патч.

Было бы здорово иметь такое приложение и для десктопа.

https://www.thomasmaurer.ch/about/


Thomas Maurer works as a Senior Cloud Advocate at Microsoft. As part of the Azure engineering team (Cloud + AI), he engages with the community and customers around the world to share his knowledge and collect feedback to improve the Azure platform. Thomas helps the community and companies to transform their business to the cloud and make Azure the best cloud platform to run their applications.

Жуть какая-то, а не декомпилятор: на 3-х мегабайтной DLL'ке упал с нехваткой памяти (на хосте 24 гигабайта). Над 2-х мегабатной ntdll.dll работал 3198.20s (53 минуты), в пике выедал 12 гигабайт оперативы.


В результате:


// Address range: 0x18002f0a0 - 0x18002f0df
int64_t RtlDetermineDosPathNameType_U(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5) {
    // 0x18002f0a0
    g1005 = a4;
    g1008 = a2;
    g1006 = a1;
    g1000 = a5 & -0x10000 | 92;
    g1007 = a3 & -0x10000 | 47;
    int16_t v1 = a4;
    if (v1 == 92) {
        // 0x18002f0d4
        return g1002;
    }
    if (v1 == 47) {
        // 0x18002f0d4
        return g1002;
    }
    if (v1 == 0 || *(int16_t *)(a4 + 2) != 58) {
        // 0x18002f0ce
        g1002 = 5;
        return 5;
    }
    // 0x18002f0c1
    if (*(int16_t *)(a4 + 4) != 92) {
        // bb
        g1002 = function_18002f107(a1, a2, 47, a4);
    }
    // 0x18002f0c8
    g1002 = 2;
    return 2;
}

// Address range: 0x18002f107 - 0x18002f113
int64_t function_18002f107(int64_t a1, int64_t a2, int64_t a3, int64_t a4) {
    // 0x18002f107
    g1005 = a4;
    g1007 = a3;
    g1008 = a2;
    g1006 = a1;
    g1002 = 3;
    return 3;
}

Как декомпилирует эту же функцию гидра (потребляя ~ 1 гигабайт при анализе файла)
ulonglong RtlDetermineDosPathNameType_U(short *param_1)

{
  short sVar1;

                    /* 0x2f0a0  905  RtlDetermineDosPathNameType_U */
  if ((*param_1 != 0x5c) && (*param_1 != 0x2f)) {
    if ((*param_1 == 0) || (param_1[1] != 0x3a)) {
      return 5;
    }
    if ((param_1[2] != 0x5c) && (param_1[2] != 0x2f)) {
      return 3;
    }
    return 2;
  }
  if ((param_1[1] != 0x5c) && (param_1[1] != 0x2f)) {
    return 4;
  }
  if ((param_1[2] != 0x3f) && (param_1[2] != 0x2e)) {
    return 1;
  }
  sVar1 = param_1[3];
  if ((sVar1 != 0x5c) && (sVar1 != 0x2f)) {
    return (ulonglong)((-(uint)(sVar1 != 0) & 0xfffffffa) + 7);
  }
  return 6;
}

Как оно должно примерно выглядеть (https://doxygen.reactos.org/d0/d23/sdk_2lib_2rtl_2path_8c.html#a1513c153ef5a711f294d8f3254c0212b)


RTL_PATH_TYPE NTAPI RtlDetermineDosPathNameType_U   (   IN PCWSTR   Path    )
{
    if (IS_PATH_SEPARATOR(Path[0]))
    {
        if (!IS_PATH_SEPARATOR(Path[1])) return RtlPathTypeRooted;
        if ((Path[2] != L'.') && (Path[2] != L'?')) return RtlPathTypeUncAbsolute;
        if (IS_PATH_SEPARATOR(Path[3])) return RtlPathTypeLocalDevice;
        if (Path[3]) return RtlPathTypeUncAbsolute;
        return RtlPathTypeRootLocalDevice;
    }
    else
    {
        if (!(Path[0]) || (Path[1] != L':')) return RtlPathTypeRelative;
        if (IS_PATH_SEPARATOR(Path[2])) return RtlPathTypeDriveAbsolute;
        return RtlPathTypeDriveRelative;
    }
}

Листинг функции
0:000> u 0x18002f0a0
ntdll!RtlDetermineDosPathNameType_U:
00000001`8002f0a0 6641b85c00      mov     r8w,5Ch
00000001`8002f0a5 66ba2f00        mov     dx,2Fh
00000001`8002f0a9 66443901        cmp     word ptr [rcx],r8w
00000001`8002f0ad 7425            je      ntdll!RtlDetermineDosPathNameType_U+0x34 (00000001`8002f0d4)
00000001`8002f0af 663911          cmp     word ptr [rcx],dx
00000001`8002f0b2 7420            je      ntdll!RtlDetermineDosPathNameType_U+0x34 (00000001`8002f0d4)
00000001`8002f0b4 66833900        cmp     word ptr [rcx],0
00000001`8002f0b8 7414            je      ntdll!RtlDetermineDosPathNameType_U+0x2e (00000001`8002f0ce)
00000001`8002f0ba 668379023a      cmp     word ptr [rcx+2],3Ah
00000001`8002f0bf 750d            jne     ntdll!RtlDetermineDosPathNameType_U+0x2e (00000001`8002f0ce)
00000001`8002f0c1 6644394104      cmp     word ptr [rcx+4],r8w
00000001`8002f0c6 753f            jne     ntdll!RtlDetermineDosPathNameType_U+0x67 (00000001`8002f107)
00000001`8002f0c8 b802000000      mov     eax,2
00000001`8002f0cd c3              ret
00000001`8002f0ce b805000000      mov     eax,5
00000001`8002f0d3 c3              ret
00000001`8002f0d4 6644394102      cmp     word ptr [rcx+2],r8w
00000001`8002f0d9 0f8503180800    jne     ntdll!RtlDetermineDosPathNameType_U+0x81842 (00000001`800b08e2)
00000001`8002f0df 668379043f      cmp     word ptr [rcx+4],3Fh
00000001`8002f0e4 7514            jne     ntdll!RtlDetermineDosPathNameType_U+0x5a (00000001`8002f0fa)
00000001`8002f0e6 0fb74106        movzx   eax,word ptr [rcx+6]
00000001`8002f0ea 66413bc0        cmp     ax,r8w
00000001`8002f0ee 0f85fe170800    jne     ntdll!RtlDetermineDosPathNameType_U+0x81852 (00000001`800b08f2)
00000001`8002f0f4 b806000000      mov     eax,6
00000001`8002f0f9 c3              ret
00000001`8002f0fa 668379042e      cmp     word ptr [rcx+4],2Eh
00000001`8002f0ff 74e5            je      ntdll!RtlDetermineDosPathNameType_U+0x46 (00000001`8002f0e6)
00000001`8002f101 b801000000      mov     eax,1
00000001`8002f106 c3              ret
00000001`8002f107 66395104        cmp     word ptr [rcx+4],dx
00000001`8002f10b 74bb            je      ntdll!RtlDetermineDosPathNameType_U+0x28 (00000001`8002f0c8)
00000001`8002f10d b803000000      mov     eax,3
00000001`8002f112 c3              ret

Хм… как раз сегодня дошли руки до подкаста Noise Security Bit #0x25 (о Ghidra и прочих дизассемблерах) (автор — matrosov):


Авторский поток сознания на тему инструментов для обратного анализа. В частности сравниваются наиболее популярные инструменты такие как: IDA, Ghidra и прочие Binary Ninja.

Совпадение или статья своего рода "ответка"?

но тачпад просто ужасен, даже после обновления прошивки.

Почти по всех обзорах тачпад назвали неудобным. При этом аргумент видел только один, что слишком большой (легко коснуться при наборе текста). А что именно с ним не так?

Сейчас (~месяц назад мониторил цены) хромобук с e-bay с доставкой будет стоить ~250$


Но для меня Pinebook более привлекателен своей нестандартной (для декстопа) ARM-архитектурой. Плюс, уверен, через пару месяцев можно будет держать под рукой флешку со стабильно работающей OpenBSD. В общем — не паханное поле экспериментов, при этом выполняя необходимые от него задачи.


А в целом, да, безусловно, покупка такого девайса подразумевает немалую долю авантюры))

Это скорее альтернатива им, чем убийца.


Сравнивать сложно хотя бы потому, что хромобуки идут на x86-64 архитектуре, а Pinebook'и это ARM64: даже по объему памяти сопоставлять смысла мало. Нужно смотреть на конкретных задач, учитывая личную вкусовщину (например, мне приятней поддержать небольшую компанию, чем какой-нибудь условный Acer).


Если навскидку посмотреть на сравнимый по цене ASUS Chromebook C223, то в перспективе использования полноценного Linux разу напрягает размер встроенной eMMC в 16GB и размер экрана 11.6".


14-ти дюймовые хромобуки, судя по https://www.google.com/chromebook/shop/, начинаются от 249$

А клавиатура огорчает отсутствием ряда клавиш с Home, PgUp, PgDn и End — нет смысла брать специально для работы в IDE, будет неудобно перемещаться по тексту.

Я смог привыкнуть на 13-ти дюймовом dell, через какое-то время Fn+ нажимаются уже не задумываясь.

Мне кажется, что игра будет временным эксклюзивом платформы (около года побудет систем-селером), а затем выпустят порты на другие платформы.

Один из них — Hellblade II: Senua's Saga.

Трейлер:


Было схожее предложение — рядом с кнопкой «опубликовать» добавить кнопку «запрос ревью». Причем вне зависимости от песочницы, поскольку сомнения могут возникнуть у автора любого уровня. Вопрос только кто и куда рецензировать будет. Сейчас можно модераторам в личку написать просьбу глянуть неопубликованное, но у модераторов и так работы хватает.

Не знал, что уже было. Но и текущие изменения проходят под девизом "Развитие по спирали".
По поводу того, кто будет, то мне виделось по аналогии с песочницей: кто имеет желание, тот и будет ревьювить. Хорошо бы мотивировать людей на это, например плюсами в карму (как за появление хорошей статьи, так и за не появление сырой)


Более общая идея — "Хабр Критика", куда можно кидать ссылки на черновики статей и не только. Предназначена для собирания или воспитания критиков, которые умеют правильно давать фидбек. Рецензии востребованы не только на заготовки статей, поэтому можно не ограничиваться статьями.

Искренне плюсую :)


Нужно ли копировать функционал, Гугльдока, который позволяет коллективную работу — доступы «только комментарии» или «соавтор», история и подсветка изменений?

Тут скорее вопрос в поиске соавторов. А с готовым коллективом, согласен, уже есть инструменты кооперативной работы.

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


  • Хабр Preview
    Новый раздел: уже не песочница, но еще не публикация.
    Смысл: предварительная публикация (в одном тематическом хабе) для оценки заинтересованным и компетентными членами сообщества (например: только для зарегистрированных пользователей).
    Фактически это возможность показать свой черновик перед публикацией не широкой публике, а узкому кругу для получения фидбэка.
    При текущей ситуации много хороших новых публикаций немного не дотягивают по уровню, авторам сыпется [не-]обоснованный негатив, статья убирается из публикации, но сил и настроения на доработку хватает не всем.


  • Кооператив Хабр
    Поиск возможных соавторов для формирования большой полезной публикации. Опять же, опираясь на черновик или план публикации, поиск заинтересованных людей, которые хотят стать соавторами. Коллективный блог на уроне одной публикации.


Information

Rating
Does not participate
Registered
Activity