Как стать автором
Поиск
Написать публикацию
Обновить
11
0
Даниил @kin4stat

Пользователь

Отправить сообщение

Турецкие ключи прекрасно покупаются на неназываемых площадках

Но надо делать его через смс и вложения. Ага, гениальная стратегия.

Где нашли дырку, там и пролезли, разве нет?

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

…ноль.

Я дартаньян, вы все пи…, вот вам пугало, смотрите, любуйтесь!

Не смешно самому?

А в чем вообще смысл статьи? Пожаловаться на 32 битную компиляцию?

Вы бы еще задали ему «Летели два верблюда - один лысый, другой налево. Сколько весит килограмм асфальта если ежику 4 года?»

Управление производительностью с Python 3.12 или Как с помощью профилировщика имитировать бурную деятельность в поисках проблемного участка кода

150 ватт? Не смешите мои подковы!

У меня 12700kf греется под 210, а официально 170 написано, если не ошибаюсь. А тут процессор «в 2 раза мощнее», и всего 150

Куча непонятных телодвижений и танцев с бубном, ради непонятно чего.

Краткий гайд: берем minhook, берем Си, используем обычный ассемблер встраиваемый в код MSVC. Готово. И никаки танцев с бубном с отладчиками, реверс тулзами, и ручной записи опкодов в память, чтобы просто их транслировать в байты

В Notepad++ можно включить зацикленный поиск, чтобы обойти весь документ

Я конечно не эксперт в линукс тематике, но был ли смысл брать сырую обертку раста для драйверов в линуксе, которая еще и работает с версии ядра 6.1? Не лучше было бы все таки на Си написать, чтобы был бэкпорт в старые версии ядра(если такое вообще возможно)?

Текст выглядит как типичный пример «Школьнику втюхали рекламу раста и теперь он везде трубит у нас тут blazingly fast and ultra mega extra safe code»

Ее ответ ограничен в токенах(4096). 4 английских символа - 1 токен(на сайте написано). Подозреваю что надо рассматривать это как байты UTF-8 символа, тогда +- сходится, вроде

Ввести законы чтобы стало всем хорошо? Нее

Ввести законы чтобы потом их временно отключать? - Yea, haha

или бекэнд на плюсах, в которых это единственный +- адекватный способ сериализации данных

400 ватт на 12700….

Чем охлаждать такое чудо? Трехсекционные водянки 300вт отводят максимум.

Оригинальный автор молодец, но слишком перестарался с разгоном. На черте в 1.32 вольта можно было бы уже и остановится - дальше каждые 100мгц разгона могут стоит 30вт тепловыделения, что не есть нормально. 1.39 на i5 - сумасшествие.

У меня у самого 12700kf, и моя башня мягко говоря в шоке, от стокового процессора.(200вт в пике)

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

Это костыль.

Почему же? Позволяет например, абстрагироваться от конечной "хукаемой" функции, и написать шаблонную лямбду, которая решит все сама. Как пример, хук на все LoadLibrary. Пример конечно абстрактный, можно было-бы полезть в недра kernel32.dll, и найти там функцию LdrLoadDll, и поставить хук на нее, но все же. На практике даже такие функции иногда полезны.

auto dispatch_load_calls = [](const auto& hook, auto str_ptr, auto&&... args) {
    auto in_cef_module = [](std::uintptr_t addr) {
        auto dll = reinterpret_cast<std::uintptr_t>(GetModuleHandleA("libcef.dll"));

        auto ntheader = reinterpret_cast<IMAGE_NT_HEADERS*>(
            dll + reinterpret_cast<IMAGE_DOS_HEADER*>(dll)->e_lfanew);

        if (dll < addr && addr < dll + ntheader->OptionalHeader.SizeOfImage) {
            return true;
        }
        return false;
    };

    if (in_cef_module(hook.get_return_address())) {
        constexpr bool is_single_byte = std::is_same_v<decltype(str_ptr), LPCSTR>;

        using str_view = std::conditional_t<is_single_byte, std::string_view, std::wstring_view>;
        using str = std::conditional_t<is_single_byte, std::string, std::wstring>;
        constexpr auto cef_directory = names_choose<is_single_byte>::prefix;
        constexpr auto& names_array_ref = names_choose<is_single_byte>::value;

        str_view load_name{str_ptr};

        for (auto name : names_array_ref) {
            if (load_name.find(name) != str_view::npos) {
                str fname{cef_directory};

                fname += name;

                return hook.get_trampoline()(fname.c_str(), args...);
            }
        }
    }
    return hook.get_trampoline()(str_ptr, args...);
};

load_liba_hook.set_dest(reinterpret_cast<void*>(GetProcAddress(kernel32, "LoadLibraryA")));
load_libw_hook.set_dest(reinterpret_cast<void*>(GetProcAddress(kernel32, "LoadLibraryW")));
load_libexa_hook.set_dest(reinterpret_cast<void*>(GetProcAddress(kernel32, "LoadLibraryExA")));
load_libexw_hook.set_dest(reinterpret_cast<void*>(GetProcAddress(kernel32, "LoadLibraryExW")));

load_liba_hook.set_cb(dispatch_load_calls);
load_libw_hook.set_cb(dispatch_load_calls);
load_libexa_hook.set_cb(dispatch_load_calls);
load_libexw_hook.set_cb(dispatch_load_calls);

Если бы не было абстракции от глобального состояния, пришлось бы коллбэк под каждую функцию писать. Также уход от глобального состояния позволяет делать проект модульным, и внутри разных модулей использовать хуки на одну и ту же конечную функцию. Чего, например, нельзя сделать используя MinHook, или PolyHook

Не совсем понимаю о чем вы. Hot pathing присутствует во всех системных библиотеках Windows. Ничего не надо перекомпилировать.

Процитирую себя еще раз, и дополню:

Ага. А что делать с кодом, к которому нет доступа, и перекомпилировать с включенным Hot Patching нет возможности?И даже если так. Писать отдельный велосипед для винды, и отдельный для unix'ов? Мне кажется все же проще один общий велосипед написать, чем два отдельных, зависящих от настроек компиляции кода

Зачем писать разный код для выполнения одного и того же действия на разных платформах. Гораздо проще описать общий принцип, нет?

И все еще остается проблема с перехватами стороннего кода, вне стандартных библиотек Windows, или например на Linux. Или например мне захочется добавить функциональность к существующей функции игры(гейммоддинг). Игры с Hot Patching'ом никто не компилирует. Предлагаете сидеть с разбитым корытом, из-за того, что библиотека прикручена к функции Hot patching?

Также, не у всех системных библиотек и их функций есть HotPatching.
Как пример - d3d9.dll, а именно функция IDirect3DDevice9::Present.

По тому как описывали новый стандарт ранее, казалось, что выйдет самый гнусный и скучный стандарт. А тут сразу и модули, и дополнения к ренжам которых так не хватало, assume, #warning и много еще плюшек

start_lifetime_as особенно порадовал. Только недавно в procxx «воевали» на этот счет =)

Передавать в обработчик хука какие то лишние параметры? Странная идея. Тем более, что, обработчик один, стало быть указатель на обьект будет всегда один и тот же. Смысл его передавать?

Вроде в самом начале статьи же про глобальное состояние...

Что бы не приходилось пересобирать инструкции в трамплине и суспендить потоки, лучше использовать Hot Patching в Windows, он для этого и был создан.

Ага. А что делать с кодом, к которому нет доступа, и перекомпилировать с включенным Hot Patching нет возможности?
И даже если так. Писать отдельный велосипед для винды, и отдельный для unix'ов? Мне кажется все же проще один общий велосипед написать, чем два отдельных, зависящих от настроек компиляции кода

Благодарю за внимательность! Обновил парсинг в библиотеке под FreeBSD

Так unix-like или все таки linux ?

На момент написания, казалось что оно одинаковое для всех unix-like систем. Оказывается у Linux свое, у FreeBSD свое.

Примеры в README к сожалению полуактуальные. В какой-то момент сделал глобальный рефакторинг, но не поправил readme. Слишком объемная работа на тот и в данный момент.
Наверное лучше в tests смотреть.

И без Свифта

Не знаю, какие вы там новости читаете, но даже ГазПромБанк не отключен от свифта

и без мака

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

1

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность