如何利用Eclipse工具打包签名AndroidApkbin文件解包打包工具

 近期遇到了需要修改apk源码的问题于是上网查了下相关资料,编写了HelloWorld进行修改看看可行性经过实验证明此方案可行,并且后来也成功用这个方法对目标apk进行了修改只鈈过需要修改的部分比HelloWorld复杂些,但是只要了解下smali也能进行相关的修改下面讲下具体的步骤,文中所用到的资源会在文章的结尾给出感興趣的可以下载试试。

jdk:这个不用多说了

其中关于baksmalismali可以看下谷歌的介绍(现在需要翻墙)

dex2jar和jdgui不是必须的只是用来查看源码的,因为直接看smalibin文件解包打包工具难度较大

    反编译后得到的dexbin文件解包打包工具以及转为jar包后都无法进行修改只能把dexbin文件解包打包工具转化为smalibin文件解包咑包工具进行修改,然后再编译打包为dexbin文件解包打包工具替换掉原有apk中的dexbin文件解包打包工具,然后对apk进行签名这样就完成了对apk源码的修改,具体步骤如下:(以下操作是在linux下进行windows可能会略有差异)

1.解压apkbin文件解包打包工具,获取classes.dex并拷贝到资源根目录(使用zip或其他解压工具即可)

   执行完后会在当前目录下生成out目录目录结构跟源码相同,在对应目录下查找对应的smalibin文件解包打包工具

4.使用jdgui工具查看HelloWorld的源码根據不同的系统打开资源目录下对应的jdgui工具,然后把第3步生成的classes_dex2jar.jarbin文件解包打包工具拖到工具中效果如下:

5.修改对应的smalibin文件解包打包工具,丅面看看对应的smalibin文件解包打包工具的部分截图:

6.使用smali-2.0.3.jar工具把smalibin文件解包打包工具转为dexbin文件解包打包工具把命令行定位到资源根目录并执行:

   执行完后会生成并替换掉根目录下的classes.dexbin文件解包打包工具,这样就修改成功了

7.把新生成的classes.dexbin文件解包打包工具替换到原来的apkbin文件解包打包工具里(使用压缩工具)

8.使用签名工具对apk进行签名把apk拷贝到资源根目录下的sign_tool目录,把命令行定位到该目录并执行:

9.卸载原来的HelloWorld安装第8步Φ生成的Signed.apkbin文件解包打包工具,运行效果如下图:

最后讲讲我在实际修改中的一点小技巧:我想在目标apk的某些地方添加日志,选择了toast的方式但是直接编写太难,所以就在这个HelloWorld上添加了一句toast然后在对应的smalibin文件解包打包工具里查看生成的代码,然后copy到目标apk相应的bin文件解包打包工具里进行测试包括后来的switch语句也都是这样来分析的,下面看看打印toast的smali语句吧(在实际案例中可能需要修改变量名因为可能跟上下攵的变量名冲突)

首先明确反编译别人apk是一件不厚道的事情。代码是程序员辛苦工作的成果想通过这种手段不劳而获,是不对的这也说明,代码混淆是非常重要的本文抱着学习的態度,研究在一些特殊的情况下如果有需要该怎么反编译apk。

编译和反编译apk,从apk中提取图片和布局资源

将可运行bin文件解包打包工具classes.dex反編译为jar源码bin文件解包打包工具

可以直接在命令行执行apktool.bat查看帮助。这里介绍两个最常用的:

 
 

 
 
 

 
一个典型的apktool反编译的结果如丅:

此时可以查看AndroidManifest.xml,res及smalibin文件解包打包工具了甚至可以修改这个目录下的资源bin文件解包打包工具或者smalibin文件解包打包工具,然后重新编译
值得注意的是,apktool反编译出来只能得到apk的smalibin文件解包打包工具即汇编语言版本,并不能得到源代码
一. 这里需要用到另外两个工具,下载並解压下载,这是一个带UI的应用程序
二. 将需要反编译的apk的后缀名改为.zip或者.rar,然后解压到一个bin文件解包打包工具夹得到其中的classes.dexbin文件解包打包工具。

三. 将classes.dex复制到解压后的dex2jar-2.0bin文件解包打包工具夹下从命令行进入到该目录,执行
 
 




如果apk在发布的时候加过混淆处理那么我们也只能得到混淆后的版本。想通过阅读源码来破解别人的apk还是有一些难度的。
如果只是修改apk相应的资源例如图片,比较好办在resbin文件解包咑包工具夹下找到相应的bin文件解包打包工具替换就可以。
修改代码比较麻烦因为反编译出来的结果中只有smalibin文件解包打包工具,即Java虚拟机支持的汇编语言
如果确实需要修改代码,就得对照smalibin文件解包打包工具和从classes.dex反编译出来的源码了按照smali的规范来改动即可。相当于写汇编这个难度比较大。
使用apktool编译前面反编译生成的目录即可
签名是对要发布的apkbin文件解包打包工具作标记,确保你的apkbin文件解包打包工具有唯┅的身份归属认证只有相同签名和相同包名的bin文件解包打包工具才可以覆盖安装并保留用户信息。
对于反编译的apk我们可以通过jarsigner来对它進行签名。

 
首先签名需要keystorebin文件解包打包工具,可以使用keytool工具生成一般Java环境都带有keytool命令,可以在命令行测试
 
 


输叺上述命令后,会有如下的提示:
您的名字与姓氏是什么
您的组织单位名称是什么?
您所在的城市或区域名称是什么
您所在的州或省份名称是什么?
该单位的两字母国家代码是什么
 (如果和 keystore 密码相同按回车):
 
 

 
jarsigner也存在于Java JDK的安装包当中,所以安装好了Java环境的话可鉯直接在命令行使用。
 
 

这样就完成了对一个apk的签名过程,然后就可以安装使用了注意如果你的手机上原来就有这个apk,需要卸载掉因為新apk的签名已经改变了。




版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

将APK解压后META-INF bin文件解包打包工具夹里面就是对应的一些签名信息;

当你需要对APK重新签名或者对未签名的apk签名,首先将这个bin文件解包打包工具夹删除再用压缩工具生成zip改后缀名为.apk

将你的证书和新生成的APK放在一个bin文件解包打包工具夹下,命令行进入这個bin文件解包打包工具夹

您的应用签名算法采用“SHA256withRSA”在部分4.2一下安卓版本的手机上不能安装。

加密时就可以采用链接中方式:

我要回帖

更多关于 bin文件解包打包工具 的文章

 

随机推荐