Android反编译

在工作中需要用到将apk反编译替换smail文件重新打包apk,所以整理一下自己通常的两种反编译方式:

1.使用ApkTool工具直接解包:

地址:http://ibotpeaches.github.io/Apktool/

一般解包时候需要的文件有以下几个:

然后在cmd下进入对应的路径,进行解包:

此时成功之后,就可以去对应的文件夹下面查看资源以及smail文件了:

 

(补充:

但是有时候可能有时候会解包失败,之前一直以为是ApkTool版本问题,因为确实比如用2.0.0版本解包失败,但是换成2.0.1版本就可以了,一直不知道是什么原因,后来为了方便,下载了不同版本的ApkTool,然后在解包的时候,python脚本遍历使用不同版本的ApkTool工具,后来看了一下郭霖的博客,是因为之前使用过ApkTool的老版本进行了解包,然后ApkTool会在C:\Users\Administrator\apktool\framework下面生成一个1.apk缓存文件,将这个缓存文件删除,就可以了!)

 

如果要替换资源的话,可以直接替换,比如换icon或者某一个资源图都可以,如果是换smail文件比较困难,但是由于之前是提供三方jar包给别人用,所以别人如果调用都比较清楚,自己将要替换的smail路径也知道在哪里,所以很方便,比如要替换smail文件,将新的Library的src路径改成跟被解压包的smail路径一致,然后使用工具将java文件编译为smail文件,直接替换,再用ApkTool压缩包就可以了,当然,扯远了。

 

使用ApkTool压缩包也很简单:

但是这个apk不能安装,必须签名才行:

首先创建一个keystore文件:(注意在cmd下面一定要以管理员身份运行)

1 keytool -genkey -v -keystore demo.keystore -alias androiddebugkey -keyalg RSA -validity 100002 
3 -keystore demo.keystore 证书库名称(可以使用其它文件名字,如果没有这个文件名字,它会创建这样一个)
6 -alias androiddebugkey 证书的名称

 

 

 

然后进行添加签名:

1 jarsigner -verbose -keystore debug.keystore -storepass 123456 -keypass 123456 -signedjar new_2_signed.apk  new_2.apk androiddebugkey -sigalg SHA1withRSA 
-digestalg SHA1

 

 

 

 

再使用Zipalign进行对齐:

1 zipalign 4 New_Demo.apk New_Demo_aligned.apk

注意:4是固定值,zipalign位于SDK/build-tools/version下面

 

 

(2).使用dex2jar,将apk文件解压,拿到classes.dex文件

dex2jar地址:https://sourceforge.net/projects/dex2jar/files/

 

 

 

 

 

 

 

 

 关于如何使用ApkTool查看更新有关apk包的信息:

http://blog.163.com/xiexueyong1987@126/blog/static/126267342201101123940388/

1、查看 keystore

$ keytool -list -v -keystore debug.keystore
 
 
 2、查看apk中的keystore文件的md5值:
 
 
 
 
 4、给一个空白包签名:
 jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkIn] [alias]
 说明:
 jarsigner命令格式:-verbose输出详细信息 -keystore密钥库位置 -signedjar要生成的文件 要签名的文件 密钥库文件
 keystorePath参数代表keyStore的绝对路径,如D:\keystore
 apkOut参数代表签名后的apk路径,如D:\signed.apk
 apkin参数代表在腾讯应用中心下载的未签名apk,默认名称为tap_unsign.apk
 alias参数代表签名用的alias名称(创建keyStore时所填写),如timdong
 示例:
 $ jarsigner -verbose -keystore debug.keystore -signedjar test2.apk tap_unsign1.apk timdong
posted @ 2016-01-12 23:36  TwoFish  阅读(557)  评论(0编辑  收藏  举报