Хотелось бы вынести на обозрение интересную идею для морфинга кода.
Уверен, что где-то в недрах гитхаба что-то подобное имеется, но найти не получилось.
В общем к сути:
Допустим мы хотим забить нужные места кода пластом мусорных инструкций, чтобы сильно затруднить реверс и сбить детекты.
Мне удалось осуществить встраивание случайных функций в случайном порядке при вызове условного макроса, но выглядит это очень палевно, ибо функции, вернее встроенные инструкции из этих функций оперируют определенными значениями, но далее никуда их не передают.
И вот я подумал, а что если понаписать функций которые принимают и возвращают случайные типы и затем каким-то образом воспроизвести цепочку вызовов, встроить в код.
Условно:
[fn(bool) -> i32] => [fn(i32) -> str] => [fn(str) -> u8]
Конечно у меня получилось это сделать, но только в рантайме через enum'ы, что не имеет никакого смысла.
Как думаете, реально ли реализовать на раст или хотя бы C/C++ (или уже реализованно где-то?)
Уверен, что где-то в недрах гитхаба что-то подобное имеется, но найти не получилось.
В общем к сути:
Допустим мы хотим забить нужные места кода пластом мусорных инструкций, чтобы сильно затруднить реверс и сбить детекты.
Мне удалось осуществить встраивание случайных функций в случайном порядке при вызове условного макроса, но выглядит это очень палевно, ибо функции, вернее встроенные инструкции из этих функций оперируют определенными значениями, но далее никуда их не передают.
И вот я подумал, а что если понаписать функций которые принимают и возвращают случайные типы и затем каким-то образом воспроизвести цепочку вызовов, встроить в код.
Условно:
[fn(bool) -> i32] => [fn(i32) -> str] => [fn(str) -> u8]
Конечно у меня получилось это сделать, но только в рантайме через enum'ы, что не имеет никакого смысла.
Как думаете, реально ли реализовать на раст или хотя бы C/C++ (или уже реализованно где-то?)