Всем привет, вопрос - допустим есть программа написанная на Си, внутри нее находятся приватные данные в виде строки (пусть пароль будет). Есть ли способ защитить эти данные так, чтобы этот пароль нельзя было узнать отреверсив код, или во время выполнения программы? Весь бинарник доступен на стороне клиента, данные проверяются только локально
вообще дополню ответы. Скомпилируйте свой код:
if (user_input == "password")
и откройте его в hexedit. Ваш вопрос просто отпадёт в том виде, в котром вы его задали, так как пароль там будет явно видно!
Что делают, помимо обсуфкации кода.
1. Даже элементарное +1 к каждому символу в ascii даст вам +80 уровня по защищённости программы. То есть если вот напрямую открыв файл пароля не видно, уже взломать пароль смогут не то, чтобы все. Если же пароль ещё и разделить, например, разбив в разные переменные по 2 символа, переменные сверять вперемешку, то вообще смысла говорить о пароле внутри нету. Я к примеру такой пароль даже искать не буду, не найду, только время потрачу.
2. Применить вариант вычисляемого значения. Например сумма ascii символов длинного пароля должна делится на 7. Это простой пример, его можно значительно усложнить, в том числе солью, хешами и так далее.
3. вариант вам назвали. Надо хранить пароль в внешнем сервисе, например, в файле текстовом, бд, на сайте производителя в мире и так далее. Внешние особенно хороши с 2 вариантом, когда на запрос выдаётся какое то проверочное слово по алгоритму, а вовсе не единый пароль.