91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>JNIKeyProtection私密數(shù)據(jù)存儲

JNIKeyProtection私密數(shù)據(jù)存儲

2022-06-22 | zip | 0.14 MB | 次下載 | 免費

資料介紹

授權(quán)協(xié)議 未知
開發(fā)語言 Java C/C++
軟件類型 開源軟件

軟件簡介

Android 使用 so 文件存儲私密數(shù)據(jù),并增加簽名防盜機(jī)制。

0x00 實際項目中引出的一些需求問題

有時你需要在客戶端存放一些保密的數(shù)據(jù),比如某些授權(quán) Key ,如果直接寫在 Java 中,會很容易被反編譯看到,那么我們可以把這些數(shù)據(jù)存在 so 文件中,來增加反編譯難度,并且增加 APP 簽名防盜機(jī)制來防止別人盜用 so 文件。

0x01 一些準(zhǔn)備工作

  • 配置 NDK 開發(fā)環(huán)境,看這里 → Android Studio NDK 開發(fā)安裝配置

  • 有必要的了解一下 NDK 開發(fā)基礎(chǔ)(此例子使用的是 CMake)、最好學(xué)習(xí)一下 C/C++ 基礎(chǔ),不然代碼看起來很費勁

0x02 編寫配置文件、Java、C/C++ 代碼

1、新建 JNIKey.class 并聲明 native 方法

public?class?JNIKey?{

????static?{
????????System.loadLibrary("Key");
????}

????/**
?????*?初始化并判斷當(dāng)前?APP?是否為合法應(yīng)用,只需調(diào)用一次
?????*
?????*?@return?返回?true?則初始化成功并當(dāng)前?APP?為合法應(yīng)用
?????*/
????public?static?native?boolean?init();

????/**
?????*?獲取?Key
?????*
?????*?@return?return?key
?????*/
????public?static?native?String?getKey();
}

2、Build → Rebuild Project 生成 class 文件,生成目錄一般在如下目錄

JNIKey\build\intermediates\javac\debug\compileDebugJavaWithJavac\classes\me\key\protection\

3、根據(jù)生成的 class 文件生成 .h 文件,進(jìn)入 Terminal 命令窗口輸入以下命令

javah?-d?jni?-classpath?D:\Android\Workspace\JNIKeyProtection\Key\build\intermediates\javac\debug\compileDebugJavaWithJavac\classes?me.key.protection.JNIKey

注意路徑不要寫錯了,生成的 .h 文件里包含自動生成的一些方法,方法名稱一一應(yīng)對 Java native 方法,如果在 .cpp 代碼里用的是動態(tài)注冊的方式,這步可以忽略不做,因為動態(tài)注冊方法名可以隨便寫,具體看 .cpp 里的代碼

4、在 src\main 目錄下新建 cpp 目錄,新建 Key.cpp 文件在這里編寫 C++ 代碼,.cpp 表示 C++ 文件, .c 表示 C 文件

5、在 Module 根目錄下新建 CmakeLists.txt 文件,配置 JNI 相關(guān)參數(shù)

#?指定編譯器版本
cmake_minimum_required(VERSION?3.4.1)

#?存放生成?so?庫的目錄
#?set(CMAKE_LIBRARY_OUTPUT_DIRECTORY?${PROJECT_SOURCE_DIR}/libs/${ANDROID_ABI})

#?配置?so?庫信息
add_library(

????????#?生成的?so?庫名稱,此處生成的?so?文件名稱是libKey.so
????????Key

????????#?STATIC:靜態(tài)庫,是目標(biāo)文件的歸檔文件,在鏈接其它目標(biāo)的時候使用
????????#?SHARED:動態(tài)庫,會被動態(tài)鏈接,在運行時被加載
????????#?MODULE:模塊庫,是不會被鏈接到其它目標(biāo)中的插件,但是可能會在運行時使用dlopen-系列的函數(shù)動態(tài)鏈接
????????SHARED

????????#?資源文件,可以多個,資源路徑是相對路徑,相對于本CMakeLists.txt所在目錄
????????src/main/cpp/Key.cpp)

#?依賴?NDK?中的?log?日志庫
find_library(
????????log-lib
????????log)

#?關(guān)聯(lián)?log?庫到本地庫。如果你本地的庫(DecryptKey)想要調(diào)用log庫的方法,那么就需要配置這個屬性
target_link_libraries(

????????#?目標(biāo)庫
????????Key

????????#?依賴庫
????????${log-lib})

注意是 Module 根目錄,不是 Project 根目錄

6、修改對應(yīng) Module 的 build.gradle 文件添加配置參數(shù)

externalNativeBuild?{
????????cmake?{
????????????cppFlags?"-frtti?-fexceptions"
????????}
????}

????//?平臺架構(gòu)支持
????ndk?{
????????abiFilters?'arm64-v8a',?'armeabi',?'armeabi-v7a',?'x86',?'x86_64'
????}
  • android 標(biāo)簽里添加如下配置

externalNativeBuild?{
????cmake?{
????????path?"CMakeLists.txt"
????}
}

7、在 cpp 文件夾下新建 Key.cpp 文件里面放 c++ 代碼

完整代碼 → Key.cpp

0x03 調(diào)用生成的 .so 文件

  • 默認(rèn) .so 文件生成目錄,復(fù)制出來放到 libs 目錄下,即可使用

{項目目錄}\JNIKey\build\intermediates\cmake\debug\obj\
  • 你可以對生成的庫文件封裝一個 Jar 包,這樣 .so 就不必放在特定的包下,Jar 包的生成必須要 Module 里,默認(rèn) Jar 包生成目錄

{項目目錄}\JNIKey\build\intermediates\intermediate-jars\debug\classes.jar
?

JAVA 數(shù)據(jù)存儲
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費
  3. 2冷柜-電氣控制系統(tǒng)講解
  4. 13.68 MB   |  1次下載  |  10 積分
  5. 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊
  6. 2.33 MB  |  次下載  |  免費
  7. 4MDD品牌三極管S9012數(shù)據(jù)手冊
  8. 2.62 MB  |  次下載  |  免費
  9. 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
  10. 0.60 MB   |  次下載  |  3 積分
  11. 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
  12. 0.89 MB   |  次下載  |  3 積分
  13. 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊
  14. 2.50 MB   |  次下載  |  免費
  15. 8MS1000TA 超聲波測量模擬前端芯片技術(shù)手冊
  16. 0.60 MB   |  次下載  |  免費

本月

  1. 1愛華AIWA HS-J202維修手冊
  2. 3.34 MB   |  37次下載  |  免費
  3. 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊
  4. 1.63 MB   |  23次下載  |  免費
  5. 3NB-IoT芯片廠商的資料說明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4UWB653Pro USB口測距通信定位模塊規(guī)格書
  8. 838.47 KB  |  5次下載  |  免費
  9. 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  10. 0.04 MB   |  4次下載  |  1 積分
  11. 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
  12. 0.08 MB   |  2次下載  |  1 積分
  13. 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
  14. 0.09 MB   |  2次下載  |  1 積分
  15. 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊
  16. 1.81 MB   |  1次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分