Ⅰ android studio怎麼混淆代碼
Android Studio上混淆打包apk方法:
//混淆,新版本是ninifyEnabled不再是runproguard
minifyEnabled true
//載入默認混淆配置文件及自定義混淆 配置
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard.cfg'
設置minifyEnabled true,就會在打包的時候進行代碼混淆處理. 其中proguard-android.txt不用管,在sdk目錄裡面,主要是配置了proguard.cfg文件。
直接在android studio創建項目不會有這個文件,而是 proguard-rules.pro文件,其實一樣的,因為項目是從eclipse遷移過來的,之前在eclipse上混淆是 proguard.cfg文件.
Ⅱ 如何根據mapping.txt還原混淆的代碼
1.把附件中的retrace_crash.sh、mapping.txt放在SDK\tool\proguard\bin目錄下,修改retrace_crash.sh裡面的路徑,先就這么用,後面優化
retrace_crash.sh 修改此文件中的輸出路徑
mapping.txt 需要混淆打包過程中去獲取
2.把需要分析的文件夾在SDK\tool\proguard\bin下面的crash文件夾下
3.在SDK\tool\proguard\bin目錄下運行shell。輸入:./retrace_crash.sh
4.如果命令無法運行
先試試chmod +x retrace_crash.sh命令
如果出現 /bin/sh^M: bad interpreter: No such file or directory錯誤,解決方法如下:
運行 vi retrace_crash.sh 使用命令 :set ff? 如果是dos格式的,那麼你可以用set ff=unix把它強制為unix格式的, 然後存檔退
5.retrace_crash.sh 文件內容如下
#!/bin/bash
function ergodic(){
for file in ` ls $1 `
do
if [ -d $1"/"$file ]
then
ergodic $1"/"$file
else
#echo $1"/"$file >> b
./retrace.sh mapping.txt $1"/"$file >> $1"/_"$file
rm $1"/"$file
echo $1"/"$file
fi
done
}
INIT_PATH="/X_DISK/android-sdk-mac/tools/proguard/bin/crash"
ergodic $INIT_PATH
#echo 'hello'
#txt=$(ls crash/*.txt)
#for var in ${txt}
#do
#./retrace.sh mapping.txt ${var} >> parse${var}
#done
Ⅲ Android 反編譯之後的源代碼類名被混淆了,類名變為a-z毫無意義的名字,有什麼辦法可以找到原始的類名嗎
沒辦法 就是這樣 不然源代碼隨便改 就亂了
Ⅳ 如何混淆android代碼以及注意事項
2.3SDK的兩個新特點:
1.剛安裝上2.3時,查看sdk目錄,發現在 ools下新增了一文件夾「proguard」,如下圖,我就在想是不是Google終於官方對proguard考慮進去了。理論上,對java的混淆都是可以的,但關鍵在於如何編寫proguard的混淆腳本。
注意要點:
1.混淆以後的包會比混淆前的包小一點,一定要注意這點.
如果混淆不成功,請在第2步,將proguard.config=proguard.cfg修改為proguard.config=E:Mobile_DevelopGoogle_AndroidpublicGoldenBeach_newproguard.cfg這種類似的用絕對路徑,請注意絕對路徑中的文件夾名不能含有空格,如果有空格請替換為"_".
2.android在用proguard混淆時,一般情況下使用系統自帶的配置文件就可以保持大部分外部需要引用的類,比如Activity,view擴展等等,但是有些情況下一些引入的外部lib,如果被混淆也會出現各種各樣的問題,如果不想混淆這些包,就要加上
-keep class packagename.** {*;}
這樣就能完整保持原有class了
Ⅳ 安卓編程 如何進行代碼混淆
安卓在eclipse中的ADT已經改變原有的模式了,你在項目文件中找到這兩個文件,一般在項目根目錄里。
如果有回答不當之處,還望見諒。
Ⅵ android怎麼把混淆的代碼完全編譯出來
工具:
apktool,作用:資源文件獲取,可以提取出圖片文件和布局文件進行使用查看
dex2jar,作用:將apk反編譯成java源碼(classes.dex轉化成jar文件)
jd-gui,作用:查看APK中classes.dex轉化成出的jar文件,即源碼文件
反編譯流程:
一、apk反編譯得到程序的源代碼、圖片、XML配置、語言資源等文件
下載上述工具中的apktool,解壓得到3個文件:aapt.exe,apktool.bat,apktool.jar ,將需要反編譯的APK文件放到該目錄下,
打開命令行界面(運行-CMD) ,定位到apktool文件夾,輸入以下命令:apktool.bat d -f test.apk test
(命令中test.apk指的是要反編譯的APK文件全名,test為反編譯後資源文件存放的目錄名稱,即為:apktool.bat d -f [apk文件 ] [輸出文件夾])
獲取成功之後,發現在文件夾下多了個test文件,點擊便可以查看該應用的所有資源文件了。
如果你想將反編譯完的文件重新打包成apk,那你可以:輸入apktool.bat b test(你編譯出來文件夾)便可
之後在之前的test文件下便可以發現多了2個文件夾:
build
dist(裡面存放著打包出來的APK文件)
二、Apk反編譯得到Java源代碼
下載上述工具中的dex2jar和jd-gui ,解壓
將要反編譯的APK後綴名改為.rar或則 .zip,並解壓,得到其中的額classes.dex文件(它就是java文件編譯再通過dx工具打包而成的),將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 文件夾內,
在命令行下定位到dex2jar.bat所在目錄,輸入dex2jar.bat classes.dex,
在改目錄下會生成一個classes_dex2jar.jar的文件,然後打開工具jd-gui文件夾里的jd-gui.exe,之後用該工具打開之前生成的classes_dex2jar.jar文件,便可以看到源碼了
Ⅶ android aar怎麼混淆代碼
def outputFile = output.outputFile
// if (outputFile != null && outputFile.name.endsWith('.apk')) {
// def fileName = new File(output.outputFile.parent, "${variant.flavorName}" + "-v" + "${variant.versionName}-${variant.versionCode}.apk")
// output.outputFile = fileName
// }
// }
// }12345678910111234567891011
如果有多渠道的,生成多渠道aar 是正常的,但是aar的項目以compile project(『:xxxx』)方式使用的時候就必須去掉多渠道的,只能在defaultConfig 中將某一個渠道的代碼拷貝上去,然後屏蔽掉其他所有渠道代碼,否則以模塊方式引用不到aar項目。
Ⅷ android如何將混淆代碼還原
當混淆後的代碼輸出一個堆棧信息時,方法名是不可識別的,這使得調試變得很困難,甚至是不可能的。幸運的是,當ProGuard運行時,它都會輸出一個<project_root>/bin/proguard/mapping.txt文件,而這個文件中包含了原始的類,方法和欄位名被映射成的混淆名字。
retrace.bat腳本(Window)或retrace.sh腳本(Linux,Mac OS X)可以將一個被混淆過的堆棧跟蹤信息還原成一個可讀的信息。它位於<sdk_root>/tools/proguard文件夾中。執行retrace工具的語法如下:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
例如:
retrace.bat -verbose mapping.txt obfuscated_trace.txt
如果你沒有指定<stacktrace_file>,retrace工具會從標准輸入讀取。