apk反编译删减资源并且打包(完整版)
我从⽹上查了很多资料 发现没有⼀个资料能让鄙⼈安满意啊
都是东拼西凑的哦
好在黄天不负有⼼⼈ 我们开始吧 这⽂章并不反编译代码哦 看好了哦
⼀、准备必要⼯具
  ⼯欲善其事,必先利其器,⾸先我们要下载好反编译apk时需要的相关⼯具
1.1、使⽤⼯具
1. apktool (资源⽂件获取)
2. dex2jar(源码⽂件获取)
3. jd-gui  (源码查看)
1.2、⼯具介绍
  apktool
    作⽤:资源⽂件获取,可以提取出图⽚⽂件和布局⽂件进⾏使⽤查看
  dex2jar
    作⽤:将apk反编译成java源码(classes.dex转化成jar⽂件)
  jd-gui
    作⽤:查看APK中classes.dex转化成出的jar⽂件,即源码⽂件
 然后将【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 ists(path)==False:
print("⽂件⽬录不存在")
return ""
for (root,dirs,files) in os.walk(path) :
for fileName in files:
file=os.path.join(root,fileName)
if  dswith(".png") :
pass
dswith(".mp3") :
pass
#print(file)
#py(originFile, file)
#py(originFile, file)
pass
mian()
看出来我的多才多艺了 你也可以⽤java替换就是⼀顿递归
打包!!这个没有完整教程  ⾄少我是没到的 但是你幸运的很 到我这篇博客了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 -ding=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的签名已经改变了。