我从网上查了很多资料 发现没有一个资料能让鄙人安满意啊
都是东拼西凑的哦
好在黄天不负有心人 我们开始吧 这文章并不反编译代码哦 看好了哦
一、准备必要工具
工欲善其事,必先利其器,首先我们要下载好反编译apk时需要的相关工具
1.1、使用工具
- apktool (资源文件获取)
- dex2jar(源码文件获取)
- jd-gui (源码查看)
1.2、工具介绍
apktool
作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
dex2jar
作用:将apk反编译成java源码(classes.dex转化成jar文件)
jd-gui
作用:查看APK中classes.dex转化成出的jar文件,即源码文件
apktool下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads
dex2jar下载地址:http://sourceforge.net/projects/dex2jar/files/
jd-gui下载地址:http://jd.benow.ca/
然后将【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分别解压到当前文件夹 并删除zip包 不然不得劲哦
我魔蝎座的哦 不是处女座哦
进入CMD命令行,如下:
切换到上述的3个工具的所在目录,如:E:\AndroidDevelopTool\Android反编译工具包
接下来我们要做的就是运行apktool_2.0.1.jar这个jar文件来将apk文件进行反编译,在java中,运行可执行jar包的命令是:
java -jar jar包名.jar
使用如下的命令运行apktool_2.0.1.jar反编译MMTS-release-1.0.2.apk
java -jar apktool_2.0.1.jar d -f E:\AndroidDevelopTool\Android反编译工具包\测试apk\MMTS-release-1.0.2.apk -o MMTS
到这个地方基本上得到包了
咔咔咔一顿删除 我用python删的
import requests from lxml import etree import os,shutil def mian(): #遍历文件 path=r'H:\反编译\csdn反编译\MMTS' mp3Path=r'C:\Program Files\WindowsApps\Microsoft.SkypeApp_12.8.487.0_x64__kzf8qxf38zg5c\SkypeApp\Assets\Audio\empty_sound.mp3' originFile=r'C:\Program Files (x86)\Common Files\Tencent\QQMiniDL\60\GameUpdateSkin\scrollbar_bk.png' if os.path.exists(path)==False: print("文件目录不存在") return "" for (root,dirs,files) in os.walk(path) : for fileName in files: file=os.path.join(root,fileName) if file.endswith(".png") : shutil.copy(originFile, file) pass if file.endswith(".mp3") : pass #print(file) #shutil.copy(originFile, file) #shutil.copy(originFile, file) pass mian()
看出来我的多才多艺了 你也可以用java替换就是一顿递归
打包!!这个没有完整教程 至少我是没找到的 但是你幸运的很 找到我这篇博客了
这个我也不知道有没有简单的方法 但是鄙人虽然愚钝 但是好歹也弄出来了
只要结果是好的 我再麻烦一点也无所谓 我是笨方法 请按照步骤跟我来
path 设置如下路径 也就是环境变量
G:\android\sdk\build-tools\24.0.2
配置到了这个地方 因为他们网上说要aapt 这个目录
然后我又把那个aaptkool_1.0.0.jar弄进了
G:\android\sdk\build-tools\24.0.2
然后又新建apktool.bat 并写入内容copy到(先弄txt 写入后改后缀)
G:\android\sdk\build-tools\24.0.2
@echo off if "%PATH_BASE%" == "" set PATH_BASE=%PATH% set PATH=%CD%;%PATH_BASE%; chcp 65001 2>nul >nul java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %*
接下来的代码可谓是沁人心脾
apktool b H:\反编译\csdn反编译\MMTS -o text.apk
瞬间爆炸 完成五杀
当然鄙人安还没有傲娇 还要再签名一次
签名
签名是对要发布的apk文件作标记,确保你的apk文件有唯一的身份归属认证,只有相同签名和相同包名的文件才可以覆盖安装并保留用户信息。
对于反编译的apk,我们可以通过jarsigner来对它进行签名。
生成keystore文件
首先,签名需要keystore文件,可以使用keytool工具生成,一般Java环境都带有keytool命令,可以在命令行测试。
keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
- 1
各个参数解释如下:
-genkey 产生证书文件
-alias 产生别名
-keystore 指定密钥库的.keystore文件中
-keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法)
-validity 为证书有效天数,这里我们写的是40000天
输入上述命令后,会有如下的提示:
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: test
您的组织单位名称是什么?
[Unknown]: test
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]:
CN=test, OU=test, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 正确吗?
[否]: y
输入<demo.keystore>的主密码
(如果和 keystore 密码相同,按回车):
签名apk
jarsigner也存在于Java JDK的安装包当中,所以安装好了Java环境的话,可以直接在命令行使用。
jarsigner -verbose -keystore demo.keystore demo.apk demo.keystore
- 1
-verbose 指定生成详细输出
-keystore 指定数字证书存储路径
这样,就完成了对一个apk的签名过程,然后就可以安装使用了。注意如果你的手机上原来就有这个apk,需要卸载掉。因为新apk的签名已经改变了。