Исходник Junk_code - добавление рандомных байтов в функцию

Полезная ли тема?

  • Да

  • Нет

  • Незнаю


Результаты будут видны только после голосования.
Начинающий
Статус
Оффлайн
Регистрация
27 Окт 2022
Сообщения
76
Реакции[?]
7
Поинты[?]
5K
Давным давно в тридесятом государстве, была __asm функция junk_code. Но с переходом на х64 про нее все забыли и забили, а может про нее многие и не знали, пешком под стол ходили в то время.

junk_code - добавляет в функцию рандомные байты не влияющие на ее работоспособность, как-бы.

Используя разные версии VS те или иные аналоги junk_code менялись. Одни переставали включаться в компоновку, другие в одной функции включались, в другой не включались.

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

Данный код был внедрен в драйвер, динамическую библиотеку и приложение.
Тесты были произведены под действием античита MRAC. Но возможно код будет работать и под другие античиты, которые чекают сигнатуру функций.
На данном примере рассмотрим простую, стандартную функцию без junk_code и с junk_code

Вот пример стандартной функции без использования junk_code
Посмотреть вложение 271652

А вот тут уже с использованием junk_code
Посмотреть вложение 271653

Как мы можем видеть, сигнатура функции сильно поменялась.

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

Сам макрос и его функции
C++:
constexpr auto _s1 = __TIME__[6] - 48;
constexpr auto _s2 = __TIME__[7] - 48;
constexpr auto _h1 = __TIME__[0] - 48;
constexpr auto _h2 = __TIME__[1] - 48;
constexpr auto _m1 = __TIME__[3] - 48;
constexpr auto _m2 = __TIME__[4] - 48;
constexpr auto __tvtodw(__int64 high, __int64 low) { return high * 10 + low; }
constexpr auto _HOURS = __tvtodw(_h1, _h2) + 1;
constexpr auto _MINUTES = __tvtodw(_m1, _m2);
constexpr auto _SECONDS = __tvtodw(_s1, _s2);
constexpr auto _TIMEVAL = (_SECONDS + (_MINUTES * 60) + (_HOURS * 60 * 60));

inline auto fantastic(volatile __int64 _param_value)
{
    volatile auto x = _param_value ^ _SECONDS;
    volatile auto part1 = _SECONDS;
    volatile auto part2 = (_MINUTES ^ _m2) * _s2;
    volatile auto part3 = (_s1 * _MINUTES / _HOURS);
    volatile auto partEnd1 = (part1 + part2 + 1);
    volatile auto partEnd2 = x - part3;
    volatile auto partEnd = partEnd2 / partEnd1;

    return partEnd;
}

#define fantastic_arg(x) (((x * _SECONDS) + (x * (_MINUTES ^ _m2) * _s2) + (_s1 * _MINUTES / _HOURS) + x) ^ _SECONDS)
#define xor_fantastic(x) (fantastic(fantastic_arg(x)))
#define junk_code(x) (xor_fantastic(x+_TIMEVAL))
Поменять алгоритм генерации рандомного значения можно в данной строке "fantastic_arg"

Все остальные constexpr служат для генерации тех или иных параметров при компиляции проекта.

Тегну тру кодеров данного раздела, что-бы услышать их величайшее мнение.
Amelechkin01
PasteSquad
desccc
Yesgoter
Tramadolid

Я про бонус забыл.
Многие использую так называемые "спуфы вызовов" spoofcall
spoofasm.asm:
PUBLIC _spoofer_stub 
.code
_spoofer_stub PROC                                               
    mov r10, r10
    xchg r11, r11
    pop r11
    xchg rdi, rdi
    nop
    add rsp, 8
    xchg rax, rax
    jmp next
    nop
    xchg r10, r10
    nop

    next:
    xchg rax, rax
    mov rax, [rsp + 24]
    nop
    nop
    mov r10, [rax]
    xchg r11, r11
    mov [rsp], r10
    nop
    jmp next2
    mov r10, [rax + 8]
    nop

    next2:
    mov r10, [rax + 8]
    nop
    mov [rax + 8], r11
    xchg r15, r15
    mov [rax + 16], rdi
    xchg rdi, rdi
    lea rdi, fixup
    nop
    xchg rax, rax
    mov [rax], rdi
    jmp next3
    mov [rax + 16], rdi
    mov [rax + 8], r11
    nop

    next3:
    mov rdi, rax
    xchg rdi, rdi
    mov rdi, rdi
    xchg rdi, rdi
    mov r10, r10
    jmp r10

    fixup:
    xchg rdi, rdi
    sub rsp, 16
    xchg rcx, rcx
    mov rcx, rdi
    nop
    mov rdi, [rcx + 16]
    mov rcx, rcx
    jmp QWORD PTR [rcx + 8]
    _spoofer_stub ENDP
END
У всех одна и таже сигнура кода.
Посмотреть вложение 271654
Вот в этом и причина ваших банов. Меняйте ее.

Обновлено 12.04.2024
C++:
inline auto fantastic(volatile __int64 _param_value)
{
    xor_int(123456);
    volatile auto x = _param_value ^ _SECONDS;
    volatile auto part1 = _SECONDS;
    volatile auto part2 = (_MINUTES ^ _m2) * _s2;
    volatile auto part3 = (_s1 * _MINUTES / _HOURS);
    volatile auto partEnd1 = (part1 + part2 + 1);
    volatile auto partEnd2 = x - part3;
    volatile auto partEnd = partEnd2 / partEnd1;
    return partEnd;
}
C++:
static int mini_ttoi(const char* str)
{
    int ret = xor_value_1(0);
    while (*str >= '0' && *str <= '9')
    {
        ret *= xor_value_1(10);
        ret += *str - '0';
        str++;
    }
    return ret;
}

#define xor_int(v) [&](){ return mini_ttoi(xor_s(#v)); }()
Всем привет, долго что-то не заходил на форум, что могу сказать про эту вашу junk_code, делал я такую хрень уже и везде пробовал, бесполезная хуйня!!,
потому что я даже делал в инжектере* инжектор сам добавлял всякую хуйню в файл чита при инжекте 2 вида было, но прикол в том что с junk_code быстро отлетает софт детект, не влияет на античит, делал тему про ебучий мрак ваш https://yougame.biz/threads/306008/#post-3013104
 
Пользователь
Статус
Оффлайн
Регистрация
5 Июл 2022
Сообщения
1,000
Реакции[?]
86
Поинты[?]
23K
Всем привет, долго что-то не заходил на форум, что могу сказать про эту вашу junk_code, делал я такую хрень уже и везде пробовал, бесполезная хуйня!!,
потому что я даже делал в инжектере* инжектор сам добавлял всякую хуйню в файл чита при инжекте 2 вида было, но прикол в том что с junk_code быстро отлетает софт детект, не влияет на античит, делал тему про ебучий мрак ваш https://yougame.biz/threads/306008/#post-3013104
Ну тогда к твоему мнению нет смысла прислушиваться, если ты гордишься той темой.
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,015
Реакции[?]
183
Поинты[?]
70K
Ну тогда к твоему мнению нет смысла прислушиваться, если ты гордишься той темой.
бывают моменты когда тебе просто надо отрендерить картинку imgui, а ты не можешь найти девайс..
 
Пользователь
Статус
Оффлайн
Регистрация
5 Июл 2022
Сообщения
1,000
Реакции[?]
86
Поинты[?]
23K
Начинающий
Статус
Оффлайн
Регистрация
27 Фев 2020
Сообщения
420
Реакции[?]
19
Поинты[?]
14K
Всем привет, долго что-то не заходил на форум, что могу сказать про эту вашу junk_code, делал я такую хрень уже и везде пробовал, бесполезная хуйня!!,
потому что я даже делал в инжектере* инжектор сам добавлял всякую хуйню в файл чита при инжекте 2 вида было, но прикол в том что с junk_code быстро отлетает софт детект, не влияет на античит, делал тему про ебучий мрак ваш https://yougame.biz/threads/306008/#post-3013104
Крутая тема! Ты действительно бог этой всей темы, реально полезная была, жду следующую более крутую тему!
 
Сверху Снизу