2013-05-21 1 views
1

Функция видимости GCC позволяет нам отключить эти API в нашей общей библиотеке, которую мы не хотим видеть клиентом. На самом деле мы не можем использовать ldopen для вызова этих скрытых функций, но мне интересно, достаточно ли это для защиты наших чувствительных API.Означает ли видимость символа защиту общей библиотеки от злоупотреблений/трещин?

Я просто хочу получить краткое объяснение надежности/безопасности скрытых API-интерфейсов в общей библиотеке, чтобы я мог сбалансировать усилия и риск. Я задал этот вопрос только потому, что не могу найти адекватного описания этой озабоченности в документах GCC.

Пожалуйста, повторно откройте этот вопрос.

+8

У меня нет ни малейшего понятия. Тем не менее, я могу гарантировать, что если кто-то действительно захочет взломать ваше программное обеспечение, он в конце концов это сделает. Не тратьте время на механизмы безопасности - вы рискуете, что ваши законные клиенты пострадают из-за них (в то время как недобросовестные даже не видят их в трещины). – Spook

+1

Что мне делать? Разберите его; отслеживать поток программы через основные функции; посмотреть, что они делают с точки зрения ввода-вывода и нелокальных манипуляций с данными; создать идею своей цели путем догадок и экспериментов. Без имен функций это было бы больше работы, но отнюдь не невозможно. Вам понадобится поддержка ОС (контроль доступа, ограниченный доступ root, безопасное хранилище ключей и т. Д.), Чтобы сделать вашу библиотеку как пользователь-враждебной, как вам кажется. –

+0

Как не иметь определенных символов (или все символы, если на то пошло) «пользователь-враждебный»? Пользователи не должны и не должны обращать внимание на программу, действительно, это в большинстве случаев является нарушением EULA. Хотя я согласен с тем, что он не задержит преступника надолго, нет ничего плохого в том, чтобы сделать их жизнь немного сложнее. По крайней мере, они должны немного поработать над тем, что они крадут. – Damon

ответ

2

Настоящая цель для атрибута видимости заключается в том, что библиотека не отображает части, которые не предназначены для непосредственного использования. Это мало чем отличается от тех, кто пытается ее взломать. Им все равно придется разбирать код, и не сложно определить точки входа для функций (посмотрите сами!). Да, это тяжелая работа, чтобы прокладывать себе путь через мегабайты кода, но кто-то с опытом знает, какие вещи искать, поэтому, возможно, пропустите огромное количество кода.

+0

Также такие инструменты, как «IDA Pro», автоматически определяют кадры стека и генерируют график вызовов между кадрами стека, включая размер и выравнивание параметров вызова. – datenwolf

1

Пока вы можете разобрать код, вы можете его взломать. Похоже, дольше, но это можно сделать. Более безопасная защита - это запуск кода на каком-то сервере. Именно так Diablo 3 защищает его, что работает достаточно хорошо. Однако взломать что-то - это вопрос мотивации. Если ваша программа достаточно хороша, и хакер определен достаточно, кто-то взломает ее. Вы можете увеличить время, которое требуется.

Смежные вопросы