这篇具有很好参考价值的文章主要介绍了apk反编译和重新打包流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。
1.工具准备
a.jdk下载,添加“...\jdk\bin”到系统环境变量
Java Downloads | Oracle
b.下载apktool.jar
Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.
2.反编译
java -jar apktool_2.6.1.jar (拖入你的apktool) d +(拖入你的.apk)
格式为:java -jar apktool的名字 d(反编译) 要解包的apk -o(输出) 文件名
反编译出来的文件目录
其中,res文件夹中存放着该app所有的资源(xml,布局文件和图片);smali文件中存放的是app的所有代码,但代码是smali语言格式,smali语言是Android虚拟机所使用的寄存器语言。还有就是 Androidmanifest.xml功能清单文件一目了然,可以直接查看。
注意:
1.将apk文件重命名为.zip格式并解压,androidmanifest会出现乱码;
2.解压后,classes.dex文件中存放在着所有代码,但需要用特殊工具(dex2jar\jd-gui)进行查看,解压操作一般用于获取资源图片快捷
3.如果就查看代码而言,你可以用jadx工具直接导入apk查看源码
如果你能看懂smali语言,可以修改smail中的一些静态成员变量,这里简单对androidManifest.xml某个activity做修改,然后重新打包
文章来源地址https://www.toymoban.com/news/detail-437001.html
3.重新打包
java -jar .\apktool.jar b .\打包的文件夹\
格式为: java -jar apktool的名字 b(打包) 要打包的文件夹名字
重新打包后,反编译目录下会出现dist目录以及其中未签名的apk文件
文章来源:https://www.toymoban.com/news/detail-437001.html
4.生成签名证书(造一个简单签名文件)
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
格式 36500 :100年 ; test.keystore :签名后的文件名
填写密码,对应名称(记住密码,没记住就重造一个文件)
随时查看证书 keytool -list -v -keystore test.keystore
Enter keystore password: //输入密码,回车
5.签名:
jarsigner -verbose -keystore E:\反编译\test.keystore -signedjar shop111.apk E:\反编译\shop-release\dist\shop-release.apk testalias
格式: jarsigner -verbose -keystore 签名 -signedjar 签名文件后的文件名 需要签名文件 证书里alias别名
6.遇到问题:
1.jarsigner不是内部命令?
重装jdk,确保安装目录bin里有jarsigner.exe
2.
[INSTALL_FAILED_INVALID_APK: Failed to extract native libraries?安装不能提取native库
a.回到AndroidManifest.xml中,把android :extractNativeLibs="false"改为true(工程对so库进行压缩,安装时解压)重新打包
b.如果原因是由于apktool在回编译apk包是没有进行内存对齐,可以使用zipalign工具再次对齐已经签名后的apk
参考链接:
jdk下载和环境变量配置
apk反编译命令解释
反编译后查看源码
到了这里,关于apk反编译和重新打包流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!