Xamarin Android - защита ключей API с помощью Android NDK - PullRequest
0 голосов
/ 25 мая 2018

Здесь написана отличная статья

https://medium.com/@abhi007tyagi/storing-api-keys-using-android-ndk-6abb0adcadad

о хранении секретных API-секретов как можно безопаснее.

Я работаю с Xamarin.Android.К сожалению, я изо всех сил пытаюсь приспособить эту концепцию к Visual Studio 2017 и Xamarin. Android и Google тоже мне не помогли.

Кто-нибудь знает, как мне этого добиться в Xamarin C #?Заранее большое спасибо за помощь.

1 Ответ

0 голосов
/ 03 июня 2018

Вы можете использовать PInvoke в Xamarin как обычно, если вы хотите вызвать собственный код из своего кода C #.Вы можете прочитать больше об этом в официальной документации .

Но, как отмечалось в комментариях, это не улучшит безопасность вашего приложения, если у вас нет большой встроенной библиотекис зашифрованными строковыми литералами и принудительно встроенными функциями, которые с ними справляются.

Редактировать: Почему легко выполнить обратный инжиниринг небольшого двоичного файла

Рассмотрим следующий код C ++ ( test.cpp ):

#define GET_KEY(n)                \
const char *GetKey##n()           \
{                                 \
   const char * key = "mykey" #n; \
   return key;                    \
}

GET_KEY(1)
GET_KEY(2)
GET_KEY(3)
GET_KEY(4)
GET_KEY(5)
GET_KEY(6)
GET_KEY(7)
GET_KEY(8)
GET_KEY(9)

Теперь я скомпилирую его с clang++ -shared -o test.so test.cpp и просматриваю полученный test.so в шестнадцатеричном редакторе.Среди других шестнадцатеричных данных я могу найти следующую строку:

mykey1<0x00>mykey2<0x00>mykey3<0x00>mykey4<0x00>mykey5<0x00>mykey6<0x00>mykey7<0x00>mykey8<0x00>mykey9<0x00>

Большая часть другого контента - это шестнадцатеричные данные или некоторые общеизвестные символы, так что найти эту строку не так уж сложно для того, кто знает, что онищет.

...