反編譯android應用,降低權限去廣告及重新簽名

功能:反編譯apk降低權限及重新簽名
場景:很多軟件,申請了一些可能會導致付費(如,發短信,呼叫號碼)或者泄漏隱私(如:讀取通訊錄)的權限,讓人很不放心。比如:飛信、墨跡天氣、iReader等都在此列。爲了讓自己能放心使用,需要做一些破解工作,減少該應用程序的權限,限制其操作。

工具:apktool-install-windows-2.2_r01-3.tar.bz2 (http://code.google.com/p/android-apktool/downloads/list)
工具:(JDK) keytool.exe  生成簽名的密鑰庫
工具:(JDK) jarsigner.exe 用於對apk做簽名
工具:(可選)D:\android-sdk-windows\tools\zipalign.exe 對打包的應用程序進行優化,使得在運行時Android與應用程序間的交互更加有效率。

操作:
1,反編譯APK文件 demo.apk 到 demo 目錄
apktool.bat d demo.apk demo

2,修改。。。
2.1 減少權限:修改demo 目錄 demoAndroidManifest.xml 文件,找到<uses-permission ...> 標籤,註釋掉不需要的權限。(參考:http://hb.qq.com/a/20101115/001156.htm 開發者不得不知的Android權限說明)

1<!--
2<uses-permission android:name="android.permission.SET_WALLPAPER" />
3<uses-permission android:name="android.permission.INTERNET" />
4<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
5<uses-permission android:name="android.permission.SEND_SMS" />
6<uses-permission android:name="android.permission.CALL_PHONE" />
7-->

2.2 去掉廣告:如 Smart Monitor Pro_2.3.16.apk

1<com.admob.android.ads.AdViewandroid:id="@id/ads"
2android:layout_width="fill_parent"
3android:layout_height="wrap_content"
4app:keywords="girl friends monitor women sex
5adult gift electron wallpaper ring
6shirt Android application game
7sport football soccer world cup"
8/>


改爲

1<com.admob.android.ads.AdViewandroid:id="@id/ads"
2android:layout_width="wrap_content"
3android:layout_height="wrap_content"
4android:width="1dip"
5android:height="1dip"app:keywords=""/>

2.3 去掉廣告:如 Hi-MSN.apk

1<com.google.ads.GoogleAdViewandroid:id="@id/ad"
2android:layout_width="fill_parent"
3android:layout_height="wrap_content"
4android:layout_alignParentBottom="true"/>

改爲:

1<com.google.ads.GoogleAdViewandroid:id="@id/ad"
2android:layout_width="fill_parent"
3android:layout_height="wrap_content"
4android:layout_alignParentBottom="true"
5android:width="1dip"
6android:height="1dip"/>

3,重新將 demo 目錄編譯成 apk 文件
apktool.bat b demo

4,找到 demo\dist 目錄下的 demo.apk 改名爲 demo_unsign.apk

5,(可選)修改apksigner.input.txt 文件內容,用於生成密鑰對和證書,給apk簽名。如果已經存在,則無需修改。(修改apksigner.bat 去掉下行的註釋)
type apksigner.input.txt | keytool -genkey -alias %JKS% -keystore %JKS% -storepass %PWD% -keypass %PWD% -keyalg RSA -validity 20000

6,修改 apksigner.bat 腳本中的設置(set APP=demo)後,執行apksigner.bat 對 demo_unsign.apk 簽名,生成 demo_signed_final.apk 文件。

7,在手機上刪除原版 apk 應用,重新安裝 demo_signed_final.apk
---------------------------------------- ### apksigner.bat 文件

01@rem ### apksigner.bat
02@rem http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html Android學習系列(1)--爲App簽名(爲apk簽名)
03@rem http://www.blogjava.net/zhaojianhua/archive/2011/06/23/352887.html Android APK 簽名
04
05@setJKS=android.keystore
06@setPWD=111111
07@setAPP=demo
08@setAPK0=%APP%_unsign.apk
09@setOUT1=%APP%_signed.apk
10@setOUT2=%APP%_signed_final.apk
11
12@rem typeapksigner.input.txt | keytool -genkey -alias%JKS% -keystore %JKS% -storepass %PWD% -keypass %PWD% -keyalg RSA -validity 20000
13
14@ifexist %OUT1% del %OUT1%
15@ifexist %OUT2% del %OUT2%
16@echo##########################
17@echo### Signer.0 ### %APK%.apk
18@echo##########################
19@jarsigner.exe -verbose -keystore %JKS% -storepass %PWD% -keypass %PWD% -signedjar %OUT1% %APK0% %JKS%
20@jarsigner.exe -verify %OUT1%
21@echo##########################
22@echo### Signer.1 ### %OUT1%
23@echo##########################
24@D:\android-sdk-windows\tools\zipalign.exe -v4 %OUT1% %OUT2%
25@jarsigner.exe -verify %OUT2%
26@echo##########################
27@echo### Signer.2 ### %OUT2%
28@echo##########################
29@pause

---------------------------------------- apksigner.input.txt 文件
username
org
org
beijing
beijing
cn
y


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章