Благодарю за наводку. Именно это ограничение и было достигнуто.
Пока не могу понять, как убрать это ограничение глобально во всей системе. Пробовал редактировать "/etc/systemd/system.conf", устанавливая "DefaultTasksMax==infinity". Также в сети встречалась информация о том, что можно установить "UserTasksMax=infinity" в файле "/etc/systemd/logind.conf". Оба варианта оказались бесполезными. Второй случай вообще недокументированный (возможно устаревшая информация).
> Если они вызываются, я точно так же беру и анализирую их
Если в программе несколько тысяч функций, а вызовы защитных методов организованы нелинейно, например, не на старте, а спустя сотни тысяч вызовов других функций, при определенных условиях, то я думаю, что найти все защитные функции будет уже не так просто. Особенно когда эти функции не приводят к завершению программы, а ломают ее логику.
> какая мне разница, по каким адресам функции расположены?
Можно сделать предположение о том, что функции, адреса которых расположены подряд, принадлежат одному модулю. Таким образом, найдя один защитный метод, можно найти и все остальные.
В принципе, описанную проблему я решил путем объявления всех защитных функций как static с последующим подключением модуля целиком (#include "module.c"). В процессе оптимизаций неиспользуемый код вычищается компилятором, что в итоге дает желаемый результат - функции распределены в бинарном файле, грубо говоря, рандомно, и не имеют дубликатов. Но я думал, что есть какие-то способы проделать все это более эстетично.
Василий Дёмин, каким бы не было шифрование, ничто не мешает сдампить и проанализировать память исполняемого процесса, разве не так? В вопросе я хотел на примере показать, что функциям из одного и того же модуля компоновщиком присваиваются адреса в той последовательности, в которой эти функции располагаются в модуле. Таким образом, если разместить все защитные методы в одном исходном файле, то потенциальный взломщик, обнаружив один из этих методов, может захотеть посмотреть на функции, адреса которых расположены рядом в ELF-файле.
Inviz Custos, Я как раз это и хочу сделать. Удалить всё лишнее: отладочные символы, необязательные секции. А безымянные адреса функций хотелось бы перемешать.
Inviz Custos, покажет, наверное, если эти связи имеются. В моем случае защитные методы связаны между собой лишь по принципу их назначения. Иначе говоря, можно было бы разместить их где угодно, но удобнее хранить в одном месте. За ссылку большое спасибо!
Как раз это и интересует, как завести графическое окружение вручную из текстовой консоли. При чем, чтобы оно работало параллельно, не влияя на функциональность системы основного пользователя.
Пока не могу понять, как убрать это ограничение глобально во всей системе. Пробовал редактировать "/etc/systemd/system.conf", устанавливая "DefaultTasksMax==infinity". Также в сети встречалась информация о том, что можно установить "UserTasksMax=infinity" в файле "/etc/systemd/logind.conf". Оба варианта оказались бесполезными. Второй случай вообще недокументированный (возможно устаревшая информация).