Android加密(一)

????????為了增加apk反編譯難度,逐漸學(xué)習(xí)android加密的相關(guān)知識(shí),這里做一個(gè)整理.

????????將Android里面一些常用如url,還有ssl證書(shū)等可以放入so.這個(gè)就涉及到ndk.下面以Mac 版android studio 為例進(jìn)行操作.

? ? ? ? 網(wǎng)上別人寫(xiě)的都很好,我這里主要講下自己的操作情況和遇到的坑.

1.配置ndk開(kāi)發(fā)路徑,如果沒(méi)有去download,在android studio 中找到sdk路徑的目錄,最下面那個(gè)就是ndk的路徑

2.如下圖建立一個(gè)類,loadLibrary里面是想要生成的so的名字

3.建立好之后,Build --> Make Project,找到build生成的對(duì)應(yīng)class文件記住目錄


4.打開(kāi)as自帶的命令行:

(1.)cd app/src/main

(2).javah -d jni -classpath (你的class的絕對(duì)路徑)

以我為例子:

javah -d jni -classpath /Users/tusm/xxx....此處省略..xxx/app/intermediates/classes/debug com.xxxxx此處省略.NativeUtils

5.確定之后會(huì)在main下面生成一個(gè)jni目錄,點(diǎn)進(jìn)去發(fā)現(xiàn)多了一個(gè).h文件,我們建立一個(gè).c的文件.c里面代碼如下

#include "com_xx_xx_xx_NativeUtils.h"

JNIEXPORT jstring JNICALL Java_com_xx_xx_xx__NativeUtils_getStringFromNative

(JNIEnv *env, jobject obj) {

return (*env)->NewStringUTF(env,"啦啦啦");

}

(1)注意這里 include 后面的名字為你生成的.h文件的全名 包括后綴

(2)下面的方法名和.h里面的方法名要一直

(3)啦啦啦那行是自己寫(xiě)的代碼

6.配置項(xiàng)目的gradle.properties,在最后復(fù)制上下面幾句話

android.useDeprecatedNdk=true

如果是3.0 注釋掉上面那句話,復(fù)制粘貼android.deprecatedNdkCompileLease=1522807211997

(此處稍微注意下,后面那串?dāng)?shù)字可能每個(gè)用戶都不一樣,如果你是3.0的話,你可以先用上面的那個(gè),然后編譯,這時(shí)候會(huì)有l(wèi)og,你把對(duì)應(yīng)的數(shù)字替換我上面那句話的1522807211997就可以)

7.打開(kāi)app下對(duì)應(yīng)的build.gradle。

在defaultConfig節(jié)點(diǎn)下添加

ndk {

? ? ? ? ? moduleName "zbx"? ? ? ? //生成的so名字

? ? ? ? ? ?abiFilters "armeabi", "armeabi-v7a", "x86"? //輸出指定三種abi體系結(jié)構(gòu)下的so庫(kù)。

? ? ? ?}

重新rebuild

7.編譯好了之后,會(huì)在app/intermediates/ndk下面 生成幾個(gè)so文件,怎么使用so,這個(gè)自己去了解,大功告成

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容