-
Может быть у кого-нибудь есть? Чтобы генерировать функции и процедуры, которые не имеют смысла, но выглядят, будто имеют?
-
P.S. И чтобы он еще и собирался.
-
Видел наоброт - фунции, которые выглядят будто бред, но имеют большой смысл...
-
Delphi?
-
> Dimka Maslov © (31.10.16 14:30) [3] > Delphi?
Delphi подойдет, да
-
DayGaykin © (31.10.16 14:07) Другими словами Вам нужно сделать обфускацию кода. Ищите, есть готовые обфускаторы.
-
> stas © (31.10.16 15:54) [5]
Мне не нужна обфускация. Мне нужен код, который делает бессмысленную работу.
-
-
> Rouse_ © [7] "and not mov", в общем, и не рыпайся! )))
теперь тебе, наверное, с охраной ходить нужно. ))
-
Ну да, там банально стрелка пирса and+not, этого за глаза :)
-
Удалено модератором Примечание: Правила читаем и уважаем
-
Дим, ты хоть отписался бы - подошло или не подошло, или че другое нашел, тогда поделился бы с народом, мне такие вещи тоже интересны :)
-
> Rouse_ © (03.11.16 15:14) [11]
Отпишусь. Это факультатив, занимаюсь по выходным.
-
Ниче се, этож что за факультатив такой что такие задачки дают?
-
> Rouse_ © (03.11.16 15:33) [13]
Так это я сам себе. Это еще отсыл к той задаче, что про защиту Java кода. Проблему то нужно решить хоть как-то.
-
Ты бы тогда с Ваней Пермяковым связался - от у кого в этом плане голова золотая, он бы тебе подкинул пару идеек в какую сторону вообще смотреть в этом плане.
-
Вообще - тут только в сторону виртуализации нужно смотреть, иначе не выйдет.
-
-
> Rouse_ © (03.11.16 16:03) [17] >
На начальном этапе мне важно соблюсти баланс между трудозатратами и степенью защиты. Мне нужна защита от пересборки java-приложения и от использования его частей. Задачи скрыть логику или какую-либо формулу чего-либо нет. Это облегчает работу. Еще облегчает то, что мы имеем полный доступ к ОС (и это всегда linux, хоть и на разных процессорах). Усложняет задачу то, что я не хочу отказываться от рефлексии в Java и от динамической подгрузки классов извне.
Степень защиты - от продвинутого дурака. Человек такого уровня как ты вряд ли будет привлечен для этой задачи.
Есть несколько идей на данный момент, я их все прорабатываю.
Идея А
Все class-файлы шифруются, так, чтобы сохранить class-формат, но так чтобы декомпилятор выдавал бредовый код. Расшифровка на лету (напишу ниже как).
Если перенести код на другой компьютер - работать не будет вообще, что будет подозрительным.
Идея Б Все методы в class-файлах делаются native. Создается .so-шник, который экспортирует все эти native методы. Все методы так или иначе делают вывод ошибки и завершение программы. В добавок .so файл содержит зашифрованные нормальные class-файлы (причем шифрование кодом, для большей запутанности). На лету class-файлы подменяются при их загрузке и вся эта "муть" с .so файлами для отвода глаз.
Хакер подумает, что логика запрятана в .so и сдастся.
Идея В Аналог идеи Б, только native методы реально ими и являются. Т.е. часть логики "нативится". Это сложный путь.
Как делается расшифровка. В линуксе есть замечательная функция L D_P R E L O A D (вставляю пробелы, чтобы по этим словам не находилась тема), с помощью которой замечательно перехватывается функция J a v a_j a v a_l a n g_C l a s s L o a d e r_d e f i n e C l a s s 1, которая превращает байткод в класс. Именно тут я могу и расшифровать класс. Тут же я могу (точнее я надеюсь, что могу) понять идет ли отладка и т. п. При отладке или при наличии открытого терминала перехват не происходит. Хорошо еще то, что сам JRE не модифицируется.
Еще думаю, можно сделать подмену кодов команд байткода, а JRE собрать самому (только я пока не понял, есть ли исходники у Oracle JDK).
Прошу сильно не ругать.
-
Все верно. "_Java_java_lang_ClassLoader_defineClass1@32" - перехватываешь в java.dll, подменяешь своей - исполняешь шифрованный байткод. У меня есть образчик такого исполнения, но извини - не дам, могу только подсказать :)
|