2009-04-27 6 views
2

У меня есть приложение на C++, которое поставляется в Windows и OSX. Он связывается с нашим бэкэнд, используя TCP (зашифрованный с помощью OpenSSL, natch). Я хотел бы бросить некоторые удары скорости для людей, которые пытаются переделать протокол и/или разобрать исполняемый файл.Обфускации и обратные инженерные сдерживающие средства для приложения C++ Win/OSX

Skype отлично справляется с этим, поэтому вы не найдете много приложений, которые говорят на skype. Вот действительно хорошее чтение о том, что он делает: http://www.secdev.org/conf/skype_BHEU06.handout.pdf

Мне хотелось бы получить некоторые идеи о том, как выполнить подобное приложение. Существуют ли коммерческие продукты, которые делают код более сложным для статического анализа? Каков наилучший способ инвестировать свое время для достижения целей, которые я перечислил?

Спасибо,

+1

Не полагайтесь на стороне клиента. Когда-либо. Если ваша безопасность может быть обойдена взломанным клиентом, вы делаете это неправильно. – Eclipse

+0

Я не полагаюсь на это. Моя жизнь будет проще, если потребуется время для изгоев клиентов. Это лишь часть моей «защиты в глубину». – twk

ответ

1

Некоторые простые предложения для OSX:

  • Предотвратить GDB от присоединения к программе http://www.steike.com/code/debugging-itunes-with-gdb/ (это можно обойти, но будет держать несколько случайных исследователей прочь)

  • Имейте, по крайней мере, некоторый код в вашем продукте, хранящийся вне текстового сегмента исполняемого файла, например, в данных или во внешнем (зашифрованном) совместно используемом библиотека.

  • Минимально защищайте любые конфиденциальные строковые данные, не сохраняя их в виде обычного текста. Запустите «строки» против вашего исполняемого файла, и если вы увидите что-нибудь, что может быть полезно для кого-то, кто пытается выяснить протокол, зашифруйте его.

  • Опция -fomit-frame-pointer GCC может сделать отладку более болезненной (но может плохо взаимодействовать с исключениями C++).