apk的反编译,修改内容以及签名打…

本文介绍了如何反编译安卓apk文件,包括使用dex2jar和jd-gui查看Java源代码,使用apktool反编译XML资源,以及通过keytool和jarsigner进行签名打包的过程。
摘要由CSDN通过智能技术生成

android技巧:apk文件反编译以及签名打包(dex2jar&jd,apktool,apk-si

通过dex2jar和jd我们可以反编译apk中的dex,可以比较完美的查看java源文件;通过apktool可以反编译apk中的xml等资源文件,然后通过apk-sign签名,可以制作成修改版的可发布apk文件。

1.dex2jar反编译dex文件:

a.下载文件见附件: apktool-1.3.1.tar.bz2, jd-gui.zip,或点击这里 下载;解压;

b. 把apk文件后缀名改为.zip,然后解压缩其中的class.dex文件,它是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件;
c.把class.dex拷贝到dex2jar.bat所在目录,运行dex2jar.bat class.dex,生成classes.dex.dex2jar.jar ;
d.运行jd-gui工具(绿色无须安装),打开上面生成的jar文件,即可看到源代码;

2.apktool反编译xml等资源文件:

a. 安装java环境,下载文件件附件: apktool-1.3.1.tar.bz2, apktool-install-windows-2.2_r01-2.tar.bz2,或点击这里 下载;把这两个文件解压到同一目录下,该目录下cmd中运行apktool获得帮助信息;
b.apktool d XXX.apk ABC    反编译XXX.apk到文件夹ABC

c.apktool b  ABC                   从反编译后的文件夹ABC重建APK,输出到ABC\dist\out.apk

d.这样我们就可以把远apk文件通过反编译后,然后对里面资源文件作修改,然后再重建为apk即可;但是因为没有签名,所以不能安装

apk-sign签名apk文件:

详细的签名步骤:

 第一步

首先我们要生成一个keystore 否则在签名的时候报如下错误

jarsigner 错误: java.lang.RuntimeException: 密钥库装入: C:\Documents and Settings\ij2ee\.keystore (系统找不到指定的文件。).

(这边的ij2ee 是我当前系统用户名)

生成keystore的语句:keytool -genkey -alias 别名你可以自己写 -keyalg RSA -keystore .keystore   比如我的就是

C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias zijie.keystore -keyalg RSA -validity 20000 -keystore zijie.keystore

输入keystore密码:[密码不回显]
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
  [Unknown]:  zijie您的组织单位名称是什么?
  [Unknown]:  ww
您的组织名称是什么?
  [Unknown]:  ww
您的组织名称是什么?
  [Unknown]:  ww
您所在的城市或区域名称是什么?
  [Unknown]: 
您所在的州或省份名称是什么?
  [Unknown]: 
该单位的两字母国家代码是什么
  [Unknown]:  CN
CN=zijie, OU=www, O=www, L=www, ST=www, C=CN 正确吗?  [否]:  Y

输入的主密码
        (如果和 keystore 密码相同,按回车):

 其中参数-validity为证书有效天数,这里我们写的大些20000天。还有在输入密码时没有回显,只管输入就可以了,一般位数建议使用20位,最后需要记下来后面还要用,整个过程。

这时候会在jdk的bin目录下生成 .keystore 。把这个.keystore文件移动到 C:\Documents and Settings\当前系统用户 的目录下面。

  接下来我们开始为apk文件签名了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值