Re: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.02.25 06:36
Оценка:
Здравствуйте, snaphold, Вы писали:

S>А в чем сложности разобрать ядро винды или ios?

В теории — должен. Это как раз примерно то, в чём сильны нейросетки — построение нелинейных функций.
Ну, то есть понятно, что интересны не столько сами исходники, сколько комментарии к ним.
Скажем, для управляемого кода есть вполне себе вменяемые декомпиляторы, которые прекрасно восстанавливают исходники, в том числе и со сворачиванием определённых "паттернов" в идиоматический синтаксический сахар.
Но если код обфусцирован, то большого толку от этого нет — ну, вот видишь вы функцию ___f001 c некоторой сигнатурой; она вызывает функцию ___f002 с другой сигнатурой. Что это? Зачем? Почему она так делает?
Для задачек вроде "найти место, где код проверяет наличие лицензии, выкосить этот вызов, и скомпилировать обратно" этого, в принципе, достаточно.
А вот для восстановления логики разработчика — нет.
Мне лично кажется, что LLM тут должны помочь — как раз потому, что их можно натренировать на исходных паттернах, которые превращаются в некоторый бинарный код, и они смогут "узнавать" эти паттерны, и восстанавливать "смысл" кода в терминах этих паттернов.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
От: Философ Ад http://vk.com/id10256428
Дата: 10.02.25 06:59
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


Я так понимаю, что ты о рефлекторе и dot Peak'е говоришь. В управляемом коде есть имена функций и классов — потому и работает. В управляемом коде функции не инлайнятся — они инлайнятся на этапе JIT/NGEN.
Без метаинформации и после оптимизации сделать из бинарного кода человекочитаемый исходник — задача другого порядка.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[2]: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
От: snaphold  
Дата: 10.02.25 08:22
Оценка:
Здравствуйте, Sinclair, Вы писали:


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


а про какие паттерны имеешь ввиду? типа "а это запрос к контролеру диска из системных процессов"?
Re[3]: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.02.25 10:09
Оценка:
Здравствуйте, snaphold, Вы писали:

S>а про какие паттерны имеешь ввиду? типа "а это запрос к контролеру диска из системных процессов"?

Типа "вот мы вызываем функцию X, а сразу за ней (в зависимости от результата) — функцию Y. Выглядит так, что функция Y возврашает детали ошибки, на которую напоролась функция X".
И всякие "вот тут мы реализуем для вызова X retry policy с такими-то параметрами".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 10.02.25 19:14
Оценка:
Здравствуйте, snaphold, Вы писали:

N>>Можно начать с того, что сделать базу, что делает каждый из 100600 файлов в C:/Windows/win32/. Уже на этом этапе будет много интересных открытий.

S>а есть где-то инфа, что там интересное происходит?

А где оно ещё может происходить?

N>>Потом функциональная копия всего состава systinternals под public domain.

N>>Вот тогда может оказаться, что в большинство исходников лезть и не надо.
S>так systinternals вроде утилиты предоставляет удобные.

Без исходников. Без истории развития.
The God is real, unless declared integer.
Re: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
От: RonWilson Россия  
Дата: 11.02.25 08:10
Оценка:
Здравствуйте, snaphold, Вы писали:

S>А в чем сложности разобрать ядро винды или ios?


какой смысл, комментариев вроде такого (Windows код) же не будет, тогда для изучения слабо подходит:

STDMETHODIMP CButton::accDoDefaultAction(VARIANT varChild)
{
    long    lStyle;

    //
    // Validate
    //
    if (!ValidateChild(&varChild))
        return(E_INVALIDARG);

    lStyle = GetWindowLong(m_hwnd, GWL_STYLE);
    if (lStyle & WS_DISABLED)
        return(S_FALSE);

    switch (lStyle & BS_TYPEMASK)
    {
        case BS_PUSHBUTTON:
        case BS_DEFPUSHBUTTON:
            if (InTheShell(m_hwnd, SHELL_TRAY))
            {
                //
                // You can't just click the start button; it won't do
                // anything if the tray isn't active except take focus
                //
                PostMessage(m_hwnd, WM_SYSCOMMAND, SC_TASKLIST, 0L);
                break;
            }
            // FALL THRU

        case BS_PUSHBOX:
        case BS_OWNERDRAW:
        case BS_USERBUTTON:
        case BS_CHECKBOX:
        case BS_AUTOCHECKBOX:
        case BS_RADIOBUTTON:
        case BS_AUTORADIOBUTTON:
        case BS_3STATE:
        case BS_AUTO3STATE:

            // This used to be a PostMessage, but that hung powerpoint on 9x.
            // (ADG#186)
            //
            // PPT has a PeekMessage-based message loop. The first time around,
            // they don't filter messages and use PM_NOREMOVE, and get the
            // message. The second time, they filter on the message that they've
            // just got, and use PM_REMOVE to remove it this time. However, on
            // 9x, this failed - so the message remained in the queue, and got
            // processed over and over again...
            //
            // Seems to be a 9x-only quirk - messages are fine, but
            // BM_CLICK and a couple of other BM_ messages (GETSTATE?) have
            // this problem.
            //
            // Anyhow, using a SendMessage variant instead of PostMessage
            // bypasses the message queue, so it's not a problem. The Timeout
            // version is used to stop oleacc clients blocking if the target
            // takes a long time to do its stuff (eg. if it starts a modal
            // dialog).

            
//So using PostMessage on 9x can hang powerpoint, but using SendMessageTimeout on NT can cause the report dialog to hang.
#ifdef NTONLYBUILD
            PostMessage( m_hwnd, BM_CLICK, 0, 0 );
#else
            DWORD_PTR dwResult;
            SendMessageTimeout( m_hwnd, BM_CLICK, 0, 0, SMTO_NORMAL, SENDMESSAGE_TIMEOUT, & dwResult );
#endif
            return S_OK;
    }

    return E_NOT_APPLICABLE;
}