查看: 1969|回复: 0
打印 上一主题 下一主题

反编译android应用

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-17 19:56:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

功能:反编译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权限说明)

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em][size=1em]<!--
[size=1em]    <uses-permission android:name="android.permission.SET_WALLPAPER" />
[size=1em]    <uses-permission android:name="android.permission.INTERNET" />
[size=1em]    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
[size=1em]    <uses-permission android:name="android.permission.SEND_SMS" />
[size=1em]    <uses-permission android:name="android.permission.CALL_PHONE" />
[size=1em]-->



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

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em][size=1em]<com.admob.android.ads.AdView android:id="@id/ads"
[size=1em]    android:layout_width="fill_parent"
[size=1em]    android:layout_height="wrap_content"
[size=1em]    app:keywords="girl friends monitor women sex
[size=1em]                    adult gift electron wallpaper ring
[size=1em]                    shirt Android application game
[size=1em]                    sport football soccer world cup"
[size=1em]/>




改为

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em][size=1em]<com.admob.android.ads.AdView android:id="@id/ads"
[size=1em]    android:layout_width="wrap_content"
[size=1em]    android:layout_height="wrap_content"
[size=1em]    android:width="1dip"
[size=1em]    android:height="1dip" app:keywords="" />



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

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em][size=1em]<com.google.ads.GoogleAdView android:id="@id/ad"
[size=1em]    android:layout_width="fill_parent"
[size=1em]    android:layout_height="wrap_content"
[size=1em]    android:layout_alignParentBottom="true" />



改为:

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em][size=1em]<com.google.ads.GoogleAdView android:id="@id/ad"
[size=1em]    android:layout_width="fill_parent"
[size=1em]    android:layout_height="wrap_content"
[size=1em]    android:layout_alignParentBottom="true"
[size=1em]    android:width="1dip"
[size=1em]    android: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 文件

[size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em]19

[size=1em]20

[size=1em]21

[size=1em]22

[size=1em]23

[size=1em]24

[size=1em]25

[size=1em]26

[size=1em]27

[size=1em]28

[size=1em]29

[size=1em][size=1em]@rem ### apksigner.bat
[size=1em]@rem http://www.cnblogs.com/qianxudet ... /04/09/2010468.html Android学习系列(1)--为App签名(为apk签名)
[size=1em] @rem http://www.blogjava.net/zhaojian ... 1/06/23/352887.html Android APK 签名
[size=1em]  
[size=1em]@set JKS=android.keystore
[size=1em]@set PWD=111111
[size=1em]@set APP=demo
[size=1em]@set APK0=%APP%_unsign.apk
[size=1em]@set OUT1=%APP%_signed.apk
[size=1em]@set OUT2=%APP%_signed_final.apk

[size=1em]@rem type apksigner.input.txt | keytool -genkey -alias %JKS% -keystore %JKS% -storepass %PWD% -keypass %PWD% -keyalg RSA -validity 20000
[size=1em]  
[size=1em]@if exist %OUT1% del %OUT1%
[size=1em]@if exist %OUT2% del %OUT2%
[size=1em]@echo ##########################
[size=1em]@echo ### Signer.0 ### %APK%.apk
[size=1em]@echo ##########################
[size=1em]@jarsigner.exe -verbose -keystore %JKS% -storepass %PWD% -keypass %PWD% -signedjar %OUT1% %APK0% %JKS%
[size=1em] @jarsigner.exe -verify %OUT1%
[size=1em]@echo ##########################
[size=1em]@echo ### Signer.1 ### %OUT1%
[size=1em]@echo ##########################
[size=1em]@D:\android-sdk-windows\tools\zipalign.exe -v 4 %OUT1% %OUT2%
[size=1em]@jarsigner.exe -verify %OUT2%
[size=1em]@echo ##########################
[size=1em]@echo ### Signer.2 ### %OUT2%
[size=1em]@echo ##########################
[size=1em]@pause



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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表