Здравствуйте, snaphold, Вы писали:
S>А в чем сложности разобрать ядро винды или ios?
В теории — должен. Это как раз примерно то, в чём сильны нейросетки — построение нелинейных функций.
Ну, то есть понятно, что интересны не столько сами исходники, сколько комментарии к ним.
Скажем, для управляемого кода есть вполне себе вменяемые декомпиляторы, которые прекрасно восстанавливают исходники, в том числе и со сворачиванием определённых "паттернов" в идиоматический синтаксический сахар.
Но если код обфусцирован, то большого толку от этого нет — ну, вот видишь вы функцию ___f001 c некоторой сигнатурой; она вызывает функцию ___f002 с другой сигнатурой. Что это? Зачем? Почему она так делает?
Для задачек вроде "найти место, где код проверяет наличие лицензии, выкосить этот вызов, и скомпилировать обратно" этого, в принципе, достаточно.
А вот для восстановления логики разработчика — нет.
Мне лично кажется, что LLM тут должны помочь — как раз потому, что их можно натренировать на исходных паттернах, которые превращаются в некоторый бинарный код, и они смогут "узнавать" эти паттерны, и восстанавливать "смысл" кода в терминах этих паттернов.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
Здравствуйте, Sinclair, Вы писали:
S>Скажем, для управляемого кода есть вполне себе вменяемые декомпиляторы, которые прекрасно восстанавливают исходники, в том числе и со сворачиванием определённых "паттернов" в идиоматический синтаксический сахар.
Я так понимаю, что ты о рефлекторе и dot Peak'е говоришь. В управляемом коде есть имена функций и классов — потому и работает. В управляемом коде функции не инлайнятся — они инлайнятся на этапе JIT/NGEN.
Без метаинформации и после оптимизации сделать из бинарного кода человекочитаемый исходник — задача другого порядка.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[2]: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
S>Скажем, для управляемого кода есть вполне себе вменяемые декомпиляторы, которые прекрасно восстанавливают исходники, в том числе и со сворачиванием определённых "паттернов" в идиоматический синтаксический сахар.
а про какие паттерны имеешь ввиду? типа "а это запрос к контролеру диска из системных процессов"?
Re[3]: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
Здравствуйте, snaphold, Вы писали:
S>а про какие паттерны имеешь ввиду? типа "а это запрос к контролеру диска из системных процессов"?
Типа "вот мы вызываем функцию X, а сразу за ней (в зависимости от результата) — функцию Y. Выглядит так, что функция Y возврашает детали ошибки, на которую напоролась функция X".
И всякие "вот тут мы реализуем для вызова X retry policy с такими-то параметрами".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
Здравствуйте, snaphold, Вы писали:
N>>Можно начать с того, что сделать базу, что делает каждый из 100600 файлов в C:/Windows/win32/. Уже на этом этапе будет много интересных открытий. S>а есть где-то инфа, что там интересное происходит?
А где оно ещё может происходить?
N>>Потом функциональная копия всего состава systinternals под public domain. N>>Вот тогда может оказаться, что в большинство исходников лезть и не надо. S>так systinternals вроде утилиты предоставляет удобные.
Без исходников. Без истории развития.
The God is real, unless declared integer.
Re: Сможет ли deepseek разобрать винду, чтобы сделать исходники?
Здравствуйте, 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 THRUcase 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;
}