android在mac环境下的反编译和重新编译

android apk文件反编译:

1.需要的反编译工具:apktool,dex2jar,jd-gui.

apktool: 使用apktool可以获取apk里面被压缩的资源文件,比如res文件夹里所有的图片,文字,AndroidManifest.xml,lib文件夹等资源。

                  使用方法:打开terminal,将路径定位到apktool的所在路径,比如笔者的apktool路径为:/Volumes/develop/apktool,输入指令:

                  ./apktool if framework-res.apk ,然后再输入指令./apktool d /Users/apple/Desktop/tu.apk  /Users/apple/Desktop/tu

             输入第一个指令的原因是apk中可能使用到了android系统的某些资源,所以需要将android framework里的资源加入到反编译的环境里。这个framework-res.apk 可以在自己手机里的system/framework/路径下可以找到。

                  /Users/apple/Desktop/tu.apk为需要反编译的apk文件,/Users/apple/Desktop/tu为反编译后资源所在的文件夹。下图为反编译后tu文件夹里的内容。

                 需要注意的是apktool.yml文件,这个文件之后重新编译时,需要用到。

                 

                 dex2jar:将java字节码文件反编译成java代码。未混淆代码就把apk发布了的同学可要注意了。。
                                   使用方法:首先将需要反编译的apk文件,在此apk文件举例为tu.apk,后缀改称.zip,之后将tu.zip解压,得到classes.dex文件。打开terminal,定位到dex2jar所在的路径,笔者的路径为:/Volumes/develop/apktool/dex2jar-0.0.9.15,之后输入指令:./d2j-dex2jar.sh   /Users/apple/Desktop/classes.dex 之后会在当前目录下生成一个classes.dex.dex2jar.jar文件,然后使用  jd-gui将其打开就可以看到代码了。当然,如果是混淆过的,看到的只能是一些a,b,c这样好无语义的代码了。

                       

2.重新编译:

                     将apk文件反编译后,可以做的事情就很多了,比如可以对资源文件进行修改,smali里的字节码进行修改等。现在的目的是把反编译,并修改后重新编译成可以安装的apk文件。

                      1.打开terminal,并定位到apktool的所在目录,输入指令 ./apktool -b /Users/apple/Desktop/tu  /Users/apple/Desktop/tu1.apk ,其中/Users/apple/Desktop/tu为之前你反编译资源的文件夹, /Users/apple/Desktop/tu1.apk为重新编译的apk文件。

                         需要注意的是,如果tu文件夹里没有apktool.yml文件,编译apk时会曝出Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN
otExist: apktool.yml的异常,导致编译失败。我的解决方法是,在用apktool解压apk得到资源文件时,使用了最新版本sdk的framework-res.apk文件。之后就没有报出这个错误了。

                      2.将apk文件进行签名。首先用指令行创建一个keystore文件,keytool -genkey -keystore ha.keystore -keyalg RSA -validity 10000 -alias hahaha,这里我创建了一个ha.keystore文件。过程如下所示:

                       

                      3.使用创建的keystore文件对apk进行打包,输入指令,jarsigner -verbose -keystore /Users/apple/Desktop/tutu.keystore -signedjar /Users/apple/Desktop/t1_signed.apk  /Users/apple/Desktop/t1.apk runcom ,得到t1.apk文件,此时就能将apk安装到手机上了。

                      


最后附上所需资源的下载:http://download.csdn.net/detail/zhi_java/6814979

                     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值