C++ Изменение сигнатуры файла при компиляции

Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2017
Сообщения
386
Реакции[?]
32
Поинты[?]
8K
Всем привет. Я не прошу кидать готовый код (хотя если вы так сделаете я буду благодарен), я прошу направить в какую сторону мне изучать. Я хочу, чтобы при компиляции моего файла его сигнатура менялась. Т.е. один и тот же код перекопилировать 10 раз и на выходе 10 файлов с разными сигнатурами. Я знаю что junk_code как бы меняет, но совсем немного. Какое решение лучше использовать, библиотеку может полноценную типа .lib или просто есть полезный .h инклуд типа json или lazy importer, что вообще в этом бывает и что влияет на изменение сигнатуры?

Кроме того, я знаю vmprotect тоже влияет, если им 10 раз пересобрать файл, тоже все 10 раз будут разные сигнатуры? как вообще лучше в этом плане сделать? Нужно что-то, что влияет на md5 crc checksum я так понимаю. В общем и целом это нужно против античитов
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
31 Мар 2024
Сообщения
80
Реакции[?]
14
Поинты[?]
15K
Всем привет. Я не прошу кидать готовый код (хотя если вы так сделаете я буду благодарен), я прошу направить в какую сторону мне изучать. Я хочу, чтобы при компиляции моего файла его сигнатура менялась. Т.е. один и тот же код перекопилировать 10 раз и на выходе 10 файлов с разными сигнатурами. Я знаю что junk_code как бы меняет, но совсем немного. Какое решение лучше использовать, библиотеку может полноценную типа .lib или просто есть полезный .h инклуд типа json или lazy importer, что вообще в этом бывает и что влияет на изменение сигнатуры?

Кроме того, я знаю vmprotect тоже влияет, если им 10 раз пересобрать файл, тоже все 10 раз будут разные сигнатуры? как вообще лучше в этом плане сделать? Нужно что-то, что влияет на md5 crc checksum я так понимаю. В общем и целом это нужно против античитов
Пиши compile-time обфускатор и будет тебе счастье
 
Начинающий
Статус
Оффлайн
Регистрация
30 Авг 2023
Сообщения
15
Реакции[?]
2
Поинты[?]
3K
Я хочу, чтобы при компиляции моего файла его сигнатура менялась. Т.е. один и тот же код перекопилировать 10 раз и на выходе 10 файлов с разными сигнатурами. Я знаю что junk_code как бы меняет, но совсем немного. Какое решение лучше использовать, библиотеку может полноценную типа .lib или просто есть полезный .h инклуд типа json или lazy importer
это пиздец
 
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2017
Сообщения
386
Реакции[?]
32
Поинты[?]
8K
Пиши compile-time обфускатор и будет тебе счастье
о, звучит интересно, спасибо) а что вообще влияет на md5 и другие подобные данные файла, как еще влиять на них?
 
I Want to Die in New Orleans
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
516
Реакции[?]
496
Поинты[?]
85K
почти все вопросы поставлены неправильно, но да ладно, думаю я тебя правильно понял


о, звучит интересно, спасибо) а что вообще влияет на md5 и другие подобные данные файла, как еще влиять на них?
md5 составляет checksum каждого байта твоего файла, пересобери свой проект = получишь новый MD5. при пересборке компилятор в любом случае перезапишет файл, меняя в нём (как минимум) данные этапа компиляции, такие как TIME/TIMESTAMP etc. короче, простыми словами, md5 = хэш, который представляет собой сумму каждого байтика программы. бтв, использование md5 в качестве алгоритма вычисления хэшсуммы не рекомендуется, для md5 достаточно быстро можно создавать два разных файла разной длины, но одинаковых по величине хэшсумм md5


Я хочу, чтобы при компиляции моего файла его сигнатура менялась. Т.е. один и тот же код перекопилировать 10 раз и на выходе 10 файлов с разными сигнатурами.
чистый, только скомпилированный бинарь -> невозможно. что бы ты не делал, как бы ты не запотел, ты не можешь этого сделать ограничиваясь compile-time`ом.


Я знаю что junk_code как бы меняет, но совсем немного.
античиты создавали не дурачки, junk-code (а особенно этапа компиляции) это максимально устаревшая утилита для противостояния современным античитам)


Какое решение лучше использовать, библиотеку может полноценную типа .lib или просто есть полезный .h инклуд типа json или lazy importer, что вообще в этом бывает и что влияет на изменение сигнатуры?
разберись в стаффе cpp и в вопросе компиляции/компоновки, это самый некорректный вопрос

.lib это один из типов библиотек. статическая библиотека (.lib = .library) просто хранит в себе уже скомпилированный сурс-код определенных БИБЛИОТЕК (извините за тавтологию), и встраивает код прямо в твою программу на этапе компиляции при вызове одной из этих функций. код всего твоего файла он магическим образом изменить не способен. если ты говоришь про возможность существования какой-то подобной библиотеки - нет, такой тоже не существует (вспоминая слова про этап компиляции...)


или просто есть полезный .h инклуд типа json или lazy importer, что вообще в этом бывает и что влияет на изменение сигнатуры?
нет, как бы я не старался, очень сложно донести тебе какую-либо информацию если ты не понимаешь сути подобных вещей
json это тоже просто библиотека (возможно, в твоём проекте она включена как .hpp/.cpp файлы, но сути примера с .lib файлом это никак не меняет), она ДОБАВЛЯЕТ НО НЕ ИЗМЕНЯЕТ код.
lazy import тут тоже ни при чём, логически он работает так же, он добавляет свой код, но не изменяет твой существующий.
на изменение сигнатуры влияют байты твоей программы, другие байты -> другая сигнатура -> другая программа.


Кроме того, я знаю vmprotect тоже влияет, если им 10 раз пересобрать файл, тоже все 10 раз будут разные
да. возьму в пример многим известный вариант с паролем. 8 символов включающие в себя
1. ловеркейс/апперкейс латинницы
2. пунктуация и специальные символы.
3. цифры.
в общем - 94 символа, 8 символов максимум, итого кол-во возможных комбинаций это 948,
не считай, это 6,095,689,385,410,816 возможных комбинаций) так и тут в целом та же ситуация с вмп. я не смотрел слива его сурсов, но более чем уверен что там огромнейшее множество рандома, поэтому шанс того что тебе выпадет одинаковый бинарь наверное меньше шанса того что завтра на землю упадёт астероид и взорвёт всю нашу планету


Нужно что-то, что влияет на md5 crc checksum я так понимаю.
md5 это просто не самый лучший из-за его возраста алгоритм вычисления чексуммы, checksum (aka hashsum) это общий термин, он может вычисляться огромным множеством алгоритмов. суть не изменится даже если ты просто создашь uint в который аккумулируешь каждый байт файла, это всё ещё считается checksum, хоть и вычисленной максимально нестабильным "алгоритмом".


В общем и целом это нужно против античитов
подводя итоги - тебе это ОЧЕНЬ маловероятно что поможет)

совет тсу - подтяни 99% твоих вопросов в гугле, обращайся к умным и добрым людям в самой крайности ( я не про себя, я не умный ) и уважай чужое время
всем остальным спокойной ночи
 
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2017
Сообщения
386
Реакции[?]
32
Поинты[?]
8K
почти все вопросы поставлены неправильно, но да ладно, думаю я тебя правильно понял



md5 составляет checksum каждого байта твоего файла, пересобери свой проект = получишь новый MD5. при пересборке компилятор в любом случае перезапишет файл, меняя в нём (как минимум) данные этапа компиляции, такие как TIME/TIMESTAMP etc. короче, простыми словами, md5 = хэш, который представляет собой сумму каждого байтика программы. бтв, использование md5 в качестве алгоритма вычисления хэшсуммы не рекомендуется, для md5 достаточно быстро можно создавать два разных файла разной длины, но одинаковых по величине хэшсумм md5



чистый, только скомпилированный бинарь -> невозможно. что бы ты не делал, как бы ты не запотел, ты не можешь этого сделать ограничиваясь compile-time`ом.



античиты создавали не дурачки, junk-code (а особенно этапа компиляции) это максимально устаревшая утилита для противостояния современным античитам)



разберись в стаффе cpp и в вопросе компиляции/компоновки, это самый некорректный вопрос

.lib это один из типов библиотек. статическая библиотека (.lib = .library) просто хранит в себе уже скомпилированный сурс-код определенных БИБЛИОТЕК (извините за тавтологию), и встраивает код прямо в твою программу на этапе компиляции при вызове одной из этих функций. код всего твоего файла он магическим образом изменить не способен. если ты говоришь про возможность существования какой-то подобной библиотеки - нет, такой тоже не существует (вспоминая слова про этап компиляции...)



нет, как бы я не старался, очень сложно донести тебе какую-либо информацию если ты не понимаешь сути подобных вещей
json это тоже просто библиотека (возможно, в твоём проекте она включена как .hpp/.cpp файлы, но сути примера с .lib файлом это никак не меняет), она ДОБАВЛЯЕТ НО НЕ ИЗМЕНЯЕТ код.
lazy import тут тоже ни при чём, логически он работает так же, он добавляет свой код, но не изменяет твой существующий.
на изменение сигнатуры влияют байты твоей программы, другие байты -> другая сигнатура -> другая программа.



да. возьму в пример многим известный вариант с паролем. 8 символов включающие в себя
1. ловеркейс/апперкейс латинницы
2. пунктуация и специальные символы.
3. цифры.
в общем - 94 символа, 8 символов максимум, итого кол-во возможных комбинаций это 948,
не считай, это 6,095,689,385,410,816 возможных комбинаций) так и тут в целом та же ситуация с вмп. я не смотрел слива его сурсов, но более чем уверен что там огромнейшее множество рандома, поэтому шанс того что тебе выпадет одинаковый бинарь наверное меньше шанса того что завтра на землю упадёт астероид и взорвёт всю нашу планету



md5 это просто не самый лучший из-за его возраста алгоритм вычисления чексуммы, checksum (aka hashsum) это общий термин, он может вычисляться огромным множеством алгоритмов. суть не изменится даже если ты просто создашь uint в который аккумулируешь каждый байт файла, это всё ещё считается checksum, хоть и вычисленной максимально нестабильным "алгоритмом".



подводя итоги - тебе это ОЧЕНЬ маловероятно что поможет)

совет тсу - подтяни 99% твоих вопросов в гугле, обращайся к умным и добрым людям в самой крайности ( я не про себя, я не умный ) и уважай чужое время
всем остальным спокойной ночи
про библиотеки я имел ввиду не то что наинклудить кучу всего, а что может уже есть готовое решение типа джанк кода только может более сильного, совершенного чтоб его заинклудить и с него вызывать дефайны и т.д. которые будут рандомизировать, а в остальном спасибо,ты ответил на многие вопросы которые мне были нужны но я не знал как это вообще искать даже. Спасибо большое)
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,596
Реакции[?]
605
Поинты[?]
46K
да братка clang, здарова

да, да, я звоню тебе по поводу твоей плагин системы

я те clang::CompilerInstance потрогаю, ты можешь обработать флаг "--obfuscate", оттрахая control flow и заменив пару инструкций на этапе компиляции?

да, да, получу полный доступ ко всем этапам компиляции

на связи
 
Забаненный
Статус
Оффлайн
Регистрация
24 Июн 2024
Сообщения
28
Реакции[?]
3
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет. Я не прошу кидать готовый код (хотя если вы так сделаете я буду благодарен), я прошу направить в какую сторону мне изучать. Я хочу, чтобы при компиляции моего файла его сигнатура менялась. Т.е. один и тот же код перекопилировать 10 раз и на выходе 10 файлов с разными сигнатурами. Я знаю что junk_code как бы меняет, но совсем немного. Какое решение лучше использовать, библиотеку может полноценную типа .lib или просто есть полезный .h инклуд типа json или lazy importer, что вообще в этом бывает и что влияет на изменение сигнатуры?

Кроме того, я знаю vmprotect тоже влияет, если им 10 раз пересобрать файл, тоже все 10 раз будут разные сигнатуры? как вообще лучше в этом плане сделать? Нужно что-то, что влияет на md5 crc checksum я так понимаю. В общем и целом это нужно против античитов
Привет, хеш файла будет меняться, даже если поменять один байт, а так в твоем случае, я бы поступил как и все другие читы, и просто бы сделал перекомпиляцию лоадера/чита на сервере, либо протект на сервере с помощью VMP/WinLicense ( Themida, Code Virtualizer )
 
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2017
Сообщения
386
Реакции[?]
32
Поинты[?]
8K
Привет, хеш файла будет меняться, даже если поменять один байт, а так в твоем случае, я бы поступил как и все другие читы, и просто бы сделал перекомпиляцию лоадера/чита на сервере, либо протект на сервере с помощью VMP/WinLicense ( Themida, Code Virtualizer )
спасибо, этого ответа я ждал)
 
Сверху Снизу