使用apktool

使用apktool,第1张

一、反编译

1.将apktool_2.3.4.jar与要反编译的apk放在同一文件夹内

(apktool官网下载地址:iBotPeaches / Apktool / Downloads — Bitbuckethttps://bitbucket.org/iBotPeaches/apktool/downloads/

2.启动cmd并将目录切换至当前目录中

3.使用反编译命令:java -jar apktool_2.3.4.jar(即你的apktool的名称) d -f zdt.apk(即你的apk名称) -o source(存放反编译后代码的文件夹名称,没有会在当前目录自动生成)

 

红框部分虽不影响 *** 作,但是最好将其目录建立出来

 

如果报出以上错误,请更换2.4.1及以上版本的apktool,并使用下面的命令重新反编译:

java -jar apktool_2.3.4.jar d -f com.ys.swty.apk –only-main-classes -o source

4.根据自身需求修改source/smali中的代码(如何阅读smali中的代码及修改自行百度)

二、生成未签名包

1.重新打包生成未签名的包,使用命令:java -jar apktool_2.3.4.jar b source(存放反编译代码的文件名称) -o zdt_unsign.apk(打包生成apk的名称)

 上面为经典报错,我是被它gank了一波,问题分享及解决方案:
   这些error信息告诉我们/res/values/public.xml文件中第“数字”行出错,里面指定的对象在res目录下不存在。
   这是精简或图片资源引用错误引起的,比如某张图片在其他dpi里定义了,在当前保留的dpi里却用不到,当我们把它删除后,并没有删除它在public.xml文件中的定义,程序回编译的时候按照public.xml去找它却已经找不到了,于是就报错了。
   解决的方法就是打开public.xml文件,删除相应的行即可

删除后重新允许打包命令,运行结果如下:

zdt_unsign.apk成功打包生成了

三、给未签名包签名

1.生成签名证书,使用命令:keytool -genkeypair -alias zdtkeyalias(签名证书别名) -keyalg RSA -validity 100 -keystore zdtsigned.jks(签名整数文件名称)

部分命令参数如下截图:

 命令执行结果如下:

红框部分必须要有,后面给之前生成的未签名包签名时会用到 

2. 给zdt_unsign.apk签名,使用命令:jarsigner -verbose -keystore zdtsigned.jks(签名证书文件名称) -signedjar zdt_signed.apk(要生成的签名包名称) zdt_unsign.apk(待签名的包名称) zdtkeyalias(签名证书的别名,之前生成签名证书时提到的)

得到如上结果,即说明你已成功反编译目标apk、修改其代码、并打包签名生成了新的可安装的apk文件了! 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存