1.å¦ä½å¯¹AndroidçAPPè¿è¡ç¾å
2.Androidç³»ç»ç¾å
3.apkç¾åå·¥å
·
4.安卓apk反编译、名源码修改、名源码重新打包、名源码签名全过程
5.使ç¨apksigner 对APKè¿è¡ç¾å
å¦ä½å¯¹AndroidçAPPè¿è¡ç¾å
1.ç¾åçæ¥éª¤ããa.å建key
ããb.使ç¨æ¥éª¤aä¸äº§ççkey对apkç¾å
2.å ·ä½æä½
ããæ¹æ³ä¸ï¼ å½ä»¤è¡ä¸å¯¹apkç¾åï¼åçï¼
ããå建keyï¼éè¦ç¨å°keytool.exe (ä½äºjdk1.6.0_\jre\binç®å½ä¸)ï¼ä½¿ç¨äº§ççkey对apkç¾åç¨å°çæ¯jarsigner.exe (ä½äºjdk1.6.0_\binç®å½ä¸)ï¼æä¸ä¸¤ä¸ªè½¯ä»¶æå¨çç®å½æ·»å å°ç¯å¢åépathåï¼æå¼cmdè¾å ¥
D:\>keytool -genkey -alias demo.keystore -keyalg RSA -validity -keystore demo.keystore
/*说æï¼-genkey 产çå¯é¥
-alias demo.keystore å«å demo.keystore
-keyalg RSA 使ç¨RSAç®æ³å¯¹ç¾åå å¯
-validity æææé天
-keystore demo.keystore */
D:\>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说æï¼-verbose è¾åºç¾åç详ç»ä¿¡æ¯
-keystore demo.keystore å¯é¥åºä½ç½®
-signedjar demor_signed.apk demo.apk demo.keystore æ£å¼ç¾åï¼ä¸ä¸ªåæ°ä¸ä¾æ¬¡ä¸ºç¾åå产ççæ件demo_signedï¼è¦ç¾åçæ件demo.apkåå¯é¥åºdemo.keystore.*/
ãã注æäºé¡¹ï¼androidå·¥ç¨çbinç®å½ä¸çdemo.apké»è®¤æ¯å·²ç»ä½¿ç¨debugç¨æ·ç¾åçï¼æ以ä¸è½ä½¿ç¨ä¸è¿°æ¥éª¤å¯¹æ¤æ件å次ç¾åãæ£ç¡®æ¥éª¤åºè¯¥æ¯:å¨å·¥ç¨ç¹å»å³é®->Anroid Tools-Export Unsigned Application Package导åºçapkéç¨ä¸è¿°æ¥éª¤ç¾åã
ããæ¹æ³äºï¼ä½¿ç¨Eclipse导åºå¸¦ç¾åçapk
ããEclipseç´æ¥è½å¯¼åºå¸¦ç¾åçæç»apkï¼é常æ¹ä¾¿ï¼æ¨è使ç¨ï¼æ¥éª¤å¦ä¸ï¼
ãã第ä¸æ¥ï¼å¯¼åºã
ãã第äºæ¥ï¼å建å¯é¥åºkeystore,名源码资产源码è¾å ¥å¯é¥åºå¯¼åºä½ç½®åå¯ç ï¼è®°ä½å¯ç ï¼ä¸æ¬¡Use existing keystoreä¼ç¨å°ã
ãã第ä¸æ¥ï¼å¡«åå¯é¥åºä¿¡æ¯ï¼å¡«åä¸äºapkæ件çå¯ç ï¼ä½¿ç¨æéåç»ç»åä½çä¿¡æ¯ã
ãã第åæ¥ï¼çæ带ç¾åçapkæ件ï¼å°æ¤å°±ç»æäºã
ãã第äºæ¥ï¼å¦æä¸æ¬¡åå¸çæ¬çæ¶åï¼ä½¿ç¨åé¢çæçkeystoreåç¾åã
ãã第å æ¥ï¼Next,Next,ç»æï¼
ããæ¹æ³ä¸ï¼ä½¿ç¨IntelliJ IDEA导åºå¸¦ç¾åçapk
ããæ¹æ³æ¥éª¤åºæ¬åEclipseç¸åï¼å¤§æ¦æä½è·¯å¾æ¯ï¼èåTools->Andrdoid->Export signed apkã
Androidç³»ç»ç¾å
ææ¶åï¼æ们å¼åçapkéè¦ç¨å°ç³»ç»æéï¼éè¦å¨AndroidManifest.xmlä¸æ·»å å ±äº«ç³»ç»è¿ç¨å±æ§ï¼
è¿æ¶åapkçç¾åå°±éè¦æ¯ç³»ç»ç¾å(platformãsharedæmedia)æè½æ£å¸¸ä½¿ç¨ã
常ç¨ç³»ç»ç¾åæ¹å¼
è¿ç§æ¹å¼æ¯è¾éº»ç¦ï¼ä½ éè¦æç¼è¯è¿çæºç ç¯å¢ï¼å¹¶æå¦ä¸æ¥éª¤ï¼
1ãæ·è´Appæºç å°Androidæºç çpackages/apps/ç®å½ä¸ï¼ä¸Appæºç æ¯æ®é(Eclipse)æ ¼å¼ç
2ãé ç½®Android.mkï¼å¨å ¶ä¸æ·»å
3ã使ç¨mmç¼è¯Appï¼çæçapkå³ç³»ç»ç¾å
è¿ç§æ¹å¼æ¯å¨æºç ç¯å¢ä¸ç¾åç®åï¼Appå¯ä»¥å¨EclipseæAndroid Studioä¸ç¼è¯ï¼ç¶åç»apkéæ°ç¾åå³å¯ã
ä½è¿ç§æ¹å¼å¨é¢ç¹è°è¯çæ¶åæ¯è¾çè¦ï¼å³ä½¿åæèæ¬ï¼ä¹éè¦éå¤ä¸æ ·çæä½ã
ç¸å ³æ件
platform.x.pemãplatform.pk8ãsignapk.jar
æ件ä½ç½®
platform.x.pemãplatform.pk8:
signapk.jar:
signapkæºç è·¯å¾:
ç¾åå½ä»¤
æ¥éª¤
1ãå°ç¸å ³æ件åæºapkæ件置äºåä¸è·¯å¾ä¸
2ãæ£æ¥æºapkå ï¼å»æMETA-INF/CERT.SF å META-INF/CERT.RSA æ件
3ãæ§è¡ç¾åå½ä»¤å³å¯
让Android Studioéæç³»ç»ç¾åï¼éè¦ç¨å°ä¸ä¸ªå·¥å · keytool-importkeypair ï¼è¯¦è§ä¸æã
è¿ä¸ªå·¥å ·çä½ç¨æ¯å°ç³»ç»ç¾åçç¸å ³ä¿¡æ¯å¯¼å ¥å°å·²æçç¾åæ件éã
å·¥å ·ç使ç¨æ¹æ³å¯ä»¥éè¿âhelpæREADME.textileæ¥å¯»æ±å¸®å©
platform.x.pemãplatform.pk8ãkeytool-importkeypairãdemo.jksãsignature.sh
æçåæ³æ¯å¨Appæ ¹ç®å½æ°å»ºSignatureæ件夹ä¸é¨åæ¾ç¾åç¸å ³æ件ã
æ¥éª¤
1ãçædemo.jksç¾åæ件
2ãç¼åç¾åèæ¬signature.shï¼å 容å¦ä¸ï¼
为èæ¬æ件添å å¯æ§è¡æéï¼
æ§è¡èæ¬ï¼
3ãé ç½®builde.gradle
å¨androidåºåä¸(ä¸defaultConfigå级)æ·»å é ç½®ï¼
è¿æ ·debugærelease apk就带æç³»ç»ç¾åäºã
å¦ææ³ç´æ¥Run appå°±æ¯releaseçä¸å¸¦ç³»ç»ç¾åçapkï¼è¿éä¿®æ¹ï¼
è¿æ ·ç´æ¥Run appå°±æ¯å¸¦ç³»ç»ç¾åçreleaseçapkäºã
apkç¾åå·¥å ·
对apkè¿è¡åç¼è¯å¹¶ä¿®æ¹åï¼éè¦å¯¹éæ°æå çapkè¿è¡ç¾åãç§é¥çæå·¥å ·ââkeytool
è·¯å¾ï¼jdk/bin/keytool.exe
çæç§é¥ï¼ keytool -genkeypair -keystore test.keystore -alias test -validity -keyalg RSA
å ¶ä¸-validityæå®æææ天æ°ï¼-keyalgæå®ç®æ³
æ¥çç§é¥ä¿¡æ¯ï¼ keytool -list -v -keystore test.keystore
JDKç¾åå·¥å ·ââjarsigner
ä» æ¯æV1ç¾å
è·¯å¾ï¼jdk/bin/jarsigner.exe
å½ä»¤ï¼ jarsigner -keystore test.keystore test.apk testkey
apkç¾åå·¥å ·ââapksigner
é»è®¤å¼å¯V1åV2ç¾å
è·¯å¾ï¼AndroidSDK/build-tools/.0.0/apksigner.bat
å½ä»¤ï¼ apksigner sign --ks xx.keystore --ks-key-alias testkey test.apk
安卓apk反编译、修改、名源码重新打包、名源码签名全过程
在处理安卓apk时,名源码尽管代码混淆是名源码保护开发者权益的重要手段,但出于学习目的名源码,我们探讨如何在特定情况下反编译apk。名源码主要工具包括apktool用于编译和反编译,名源码ce字节搜索源码以及dex2jar和jd-gui进行源码查看。名源码
首先,名源码确保你的名源码系统安装了Java,并下载apktool.bat脚本和apktool.jar。名源码将它们放在同一目录,行业门户招商源码通过命令行操作。命令行中的反编译命令如:apktool.bat d [-s] -f -o,其中[-s]表示选择文件夹,-f表示强制反编译,-o指定输出目录。微擎问答源码若不指定,将默认在C:\Users\Administrator目录生成。
在反编译过程中,需要配合dex2jar工具将classes.dex转换为源码文件,然后jd-gui用于查看。燕窝溯源码不对如果apk经过混淆,可能需要在线研究以理解混淆后的代码。
对于修改apk资源,只需替换res文件夹中的相应文件。但修改代码则相对复杂,因为反编译后的结果是smali语言,类似于汇编,需要对照smali文件和源码进行操作。
签名apk则涉及keytool和jarsigner工具。首先,通过keytool生成keystore文件,然后在同一目录下使用jarsigner对apk进行签名。签署过程中,需要输入keystore信息并指定证书的有效天数。注意,签名后的apk需要先卸载原版才能安装。
使ç¨apksigner 对APKè¿è¡ç¾å
// apksigner sign --ks (ç¾åå°å) --ks-key-alias (å«å) --out (ç¾ååçapkå°å) (å¾ ç¾åapkå°å)
apksigner sign --ks D:\futureGainKeyStore.keystore --ks-key-alias key_future_gain --out D:\HWNS_Signed.apk D:\HWNS.apk
apksigner verify -v --print-certs D:\HWNS_Signed.apk
apksigner verify -v --print-certs D:\HWNS_Zipalign_Signed.apk