一、安装apktool

1、访问http://code.google.com/p/android-apktool下载apktool-install-linux-*文件与apktool-*文件,将两文件夹内的文件(不带文件夹)解压至/usr/local/bin目录(需要管理员权限)。

2、cd到/usr/local/bin目录,在终端运行apktool命令,即可安装apktool。

apktool 命令
apktool d geek.apk test 反编译(解压) geek.apk到文件夹test
apktool b test geek_2.apk 从文件夹test重建apk

注:执行apktool b test geek_2.apk命令时可能会出现错误,授予/usr/bin/aapt可读写、可执行权限即可解决。



二、签名

1、确认已安装Java。

2、在终端执行命令:keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000生成签名(android.keystore为签名名称)

3、使用命令:jarsigner -verbose -keystore android.keystore -signedjar geek_2_signed.apk geek_2.apkandroid为修改过的程序签名

注:生成的签名应与所需签名程序在同一目录(也可以不在同一目录,具体参考本步骤中2条命令的使用方法)。



三、另附

1、keytool用法
-certreq [-v] [-protected]

[-alias <别名>] [-sigalg <sigalg>]
[-file <csr_file>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-changealias [-v] [-protected] -alias <别名> -destalias <目标别名>
[-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-delete [-v] [-protected] -alias <别名>
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-exportcert [-v] [-rfc] [-protected]
[-alias <别名>] [-file <认证文件>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-genkeypair [-v] [-protected]
[-alias <别名>]
[-keyalg <keyalg>] [-keysize <密钥大小>]
[-sigalg <sigalg>] [-dname <dname>]
[-validity <valDays>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-genseckey [-v] [-protected]
[-alias <别名>] [-keypass <密钥库口令>]
[-keyalg <keyalg>] [-keysize <密钥大小>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-help

-importcert [-v] [-noprompt] [-trustcacerts] [-protected]
[-alias <别名>]
[-file <认证文件>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-importkeystore [-v]
[-srckeystore <源密钥库>] [-destkeystore <目标密钥库>]
[-srcstoretype <源存储类型>] [-deststoretype <目标存储类型>]
[-srcstorepass <源存储库口令>] [-deststorepass <目标存储库口令>]
[-srcprotected] [-destprotected]
[-srcprovidername <源提供方名称>]
[-destprovidername <目标提供方名称>]
[-srcalias <源别名> [-destalias <目标别名>]
[-srckeypass <源密钥库口令>] [-destkeypass <目标密钥库口令>]]
[-noprompt]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-keypasswd [-v] [-alias <别名>]
[-keypass <旧密钥库口令>] [-new <新密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-list [-v | -rfc] [-protected]
[-alias <别名>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

-printcert [-v] [-file <认证文件>]

-storepasswd [-v] [-new <新存储库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] …
[-providerpath <路径列表>]

2、jarsigner用法: [选项] jar 文件别名
jarsigner -verify [选项] jar 文件

[-keystore <url>] 密钥库位置
[-storepass <口令>] 用于密钥库完整性的口令
[-storetype <类型>] 密钥库类型
[-keypass <口令>] 专用密钥的口令(如果不同)
[-sigfile <文件>] .SF/.DSA 文件的名称
[-signedjar <文件>] 已签名的 JAR 文件的名称
[-digestalg <算法>] 摘要算法的名称
[-sigalg <算法>] 签名算法的名称
[-verify] 验证已签名的 JAR 文件
[-verbose] 签名/验证时输出详细信息
[-certs] 输出详细信息和验证时显示证书
[-tsa <url>] 时间戳机构的位置
[-tsacert <别名>] 时间戳机构的公共密钥证书
[-altsigner <类>] 替代的签名机制的类名
[-altsignerpath <路径列表>] 替代的签名机制的位置
[-internalsf] 在签名块内包含 .SF 文件
[-sectionsonly] 不计算整个清单的散列
[-protected] 密钥库已保护验证路径
[-providerName <名称>] 提供者名称
[-providerClass <类> 加密服务提供者的名称
[-providerArg <参数>]] … 主类文件和构造函数参数

更多相关文章

  1. 我的Android进阶之旅------>Android通用流行框架大全
  2. Android(安卓)studio如何修改项目名称
  3. 如何让android应用程序用中文显示(应用程序名称本地化)
  4. 获取MD5指纹的时候遇到错误
  5. Flutter Android(安卓)Toast Message(flutter访问Android(安卓)T
  6. Android遇到的问题,解决方法和一些小技巧
  7. Android(安卓)Studio 安装完成后,遇到的问题记录。
  8. Android(安卓)Studio如何发布APK
  9. Android开发之获取网络类型(WIFI、2G、3G、4G)和运营商名称

随机推荐

  1. "浅谈Android"第一篇:Android系统简介
  2. Android(安卓)RxJava:这是一份全面 & 详细
  3. Android从按下开机键到启动发生了什么
  4. 使用Frida渗透Android(安卓)app
  5. Android(安卓)设计思想
  6. eclipse paho包对于ActiveMQ持久化订阅者
  7. 轻松理解 Android(安卓)Binder,只需要读这
  8. gRPC在Android中的应用、配置、生成文件
  9. Android新手如何快速开发一款app
  10. DNS负载均衡,导致Android和iOS访问接口,导