Android APK 修改
APK修改,分为以下几步:
反编译解包 - 修改 - 重打包 - 签名
我用到的工具:
1. APK改之理(用于修改 smali 文件)
2. jadx-gui (查看APK源码以及修改后的效果)
3. 360加固宝(用于加签名)
差生文具多,其实熟练的话一个Apktool 都可以搞定
APK改之理这个工具很久没更新了,但是他是对 APKTOOL 的封装,所以更新内部的apktool 理论上可以一直用下去的。
更换 ApkIDE\Apktool\2.x\apktool.jar 为最新的apktool即可
附件我已更新为 Apktool_2.6.0 ,实测使用没问题
链接:https://pan.baidu.com/s/1VBdcI6H3VHnq1ixwd9gE3A 提取码:928a
下面开始正文
一、反编译解包
#反编译解包
java -jar .\apktool_2.6.0.jar d .\app-release.apk
可以 apktool 解包。当然用 APK 改之理的话就很简单了,打开程序,项目 -- 打开APK即可
二、修改
对于 AndroidManifest.xml文件,直接修改即可。可以通过去掉注册的方式去除不需要的服务
主要是修改 smali 文件
对于这段代码,最终结果其实就是 goto:cond_0 和 goto:cond_1 两种。
可以在 if-nez v0, :cond_1 之前直接加 goto:cond_0 进行尝试。
修改后没有把握的代码,可以生成APK之后,使用jadx-gui 查看修改后的代码是否符合预期。
例如这是修改后的,已经直接返回 false了,那么就是修改完成了。
smali 推荐看
Smali入门手册_cmdkeeper-CSDN博客_smali指令中文手册
修改思路推荐看
https://www.52pojie.cn/thread-311175-1-1.html
“if-eq vA, vB, :cond_*” 如果vA等于vB则跳转到:cond_*,否则继续向下执行“if-ne vA, vB, :cond_*” 如果vA不等于vB则跳转到:cond_*,否则继续向下执行“if-lt vA, vB, :cond_*” 如果vA小于vB则跳转到:cond_*,否则继续向下执行“if-ge vA, vB, :cond_*” 如果vA大于等于vB则跳转到:cond_*,否则继续向下执行“if-gt vA, vB, :cond_*” 如果vA大于vB则跳转到:cond_*,否则继续向下执行“if-le vA, vB, :cond_*” 如果vA小于等于vB则跳转到:cond_*,否则继续向下执行“if-eqz vA, :cond_*” 如果vA等于0则跳转到:cond_*,否则继续向下执行“if-nez vA, :cond_*” 如果vA不等于0则跳转到:cond_**,否则继续向下执行“if-ltz vA, :cond_*” 如果vA小于0则跳转到:cond_*,否则继续向下执行“if-gez vA, :cond_*” 如果vA大于等于0则跳转到:cond_*,否则继续向下执行“if-gtz vA, :cond_*” 如果vA大于0则跳转到:cond_*,否则继续向下执行“if-lez vA, :cond_*” 如果vA小于等于0则跳转到:cond_*,否则继续向下执行
其中的:cond_* 中 “ * ” 是编号(代表1,2,3.。。),在一个方法里如果有多个条件则这个编号不可以重复
借用一下两位大神的代码
三、重打包
APK改之理直接提供了 编译 - 编译重打包功能
但是我每次编都卡住,所以用 apktool 进行打包。主要使用改之理的 smali 代码高亮功能。
#编译
java -jar .\apktool_2.6.0.jar b .\app-release -o new.apk
此时在同目录下有一个 new.apk
遇到的问题1:Androidkiller回编译失败,显示:No resource identifier found for attribute 'compileSdkVersion' in package 'android'APK 编译失败,无法继续下一步签名!
尝试删除 android:compileSdkVersion 和 android:compileSdkVersionCodename 属性
遇到的问题2:有些时候会遇到 Apktool在Linux下回编报错No resource identifier found forattribute 'xxxx' in package 'android' 。可以尝试清除缓存来解决问题
#清缓存
java -jar .\apktool_2.6.0.jar empty-framework-dir --force
四、签名
看大佬是使用 jarsigner 进行签名
#生成密钥库
keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore#签名
jarsigner -verbose -keystore abc.keystore -signedjar testx.apk test.apk abc.keystore
我签名总是失败,后面想到用简单的工具。发现360加固保的工具包自带APK签名工具
绿色软件。使用也非常简单,就不多写了
我用的是 android studio 的debug 签名。密码是 android
最后感谢一下我参考的大神:
参考文章:【安卓】APK反编译、修改、重打包、签名 - -Qfrost-
Android APK 修改相关推荐
- android+apk+修改+签名文件位置,Jenkins打包android应用时自动签名apk详解
前言 如果你是使用android studio编译项目的化,在编译apk只会会自动给apk签名. 但默认配置下jenkins下编译出的apk是unsign的.需要一些额外的设置才能自动sign. 这个 ...
- android apk 修改 签名文件位置,更改APK中图标文件,签名后重新安装
昨天在使用一款录屏软件APK时,发现有默认的水印,想把水印去掉,或者换成自己的水印.啰嗦几句,免得有人走了我的误区,可以跳过直接进步骤.试了几种办法,包括解压APK包,找资源文件res,没有发现水印的 ...
- 安卓apk修改(Android反编译apk)
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程.APK修改,分为以下几步:反编译解包,修 ...
- Android Studio修改apk命名
Android Studio修改生成Apk命名 转载请注明出处: http://blog.csdn.net/jys_05/article/details/78998633 1.Android Stud ...
- Android反编译apk修改版本号重新打包签名详细教程(超详细)
文章目录 一.反编译工具介绍 1:apktool 获取资源文件 2:dex2jar(源码文件获取) 3:jd-gui 查看APK中classes.dex转化成出的jar文件,即源码文件 二.apkto ...
- unity安卓打包修改启动画面_Unity自动化打包Android APK
零. 前言 最近在做Unity开发,有个任务是通过Jenkins实现自动化打包Unity游戏成Android APK的需求,所以在完成任务后,梳理成了一个最简单的教学,也把遇到的坑和大家分享. 若需要 ...
- Android Apk签名修改V1,V2,V3,V4
Unity游戏打出 Android Apk 包,默认签名方式是V1,V2方式的. 但是九游要求只能用V1签名方式.那就对生成的 Andorid Apk包重新签名就OK了. 改签环境 改签 Androi ...
- android v3签名格式,Android Apk签名修改V1,V2,V3,V4
Unity游戏打出 Android Apk 包,默认签名方式是V1,V2方式的. 但是九游要求只能用V1签名方式.那就对生成的 Andorid Apk包重新签名就OK了. 改签环境 改签 Androi ...
- Android APK加壳技术方案----代码实现
本文章由Jack_Jia编写,转载请注明出处. 文章链接:http://blog.csdn.net/jiazhijun/article/details/8746917 作者:Jack_Jia 邮 ...
- Android APK的签名--笔记版 V1 签名和V2签名总结
1. 工具介绍 jarsigner 是JDK提供的针对jar包签名的通用工具, 位于 JDK/bin/jarsigner apksigner 是Google官方提供的针对Android apk 签名验 ...
最新文章
- 傻瓜式动画制作软件_一个傻瓜版的动画制作软件——万彩动画大师
- Struts1.x系列教程(4):标签库概述与安装
- Android开发之大位图二次採样压缩处理(源码分享)
- mysql decimal(10,2)对应java类型
- sklearn学习总结(超全面)
- Foundation框架中常用类的介绍
- 在当今移动互联网时代_谁在提供当今最好的电子邮件体验?
- javaweb实现分页(二)
- (二十)python 3 匿名函数
- 【转载保存】网页提取正文算法汇总
- 工厂方法模式(Factory Method Pattern)
- oracle12c order by,oracle 数据库中order by 的一些高级用法
- JavaScript的语法规则
- PR/AE基础入门操作
- 计算机桌面弹窗,网站弹窗广告:教你4种方法,永久关闭电脑弹窗广告,还你一个干净的桌面 _ 惠州SEO...
- minio更换端口启动
- 使用Python自动化管理Exchange邮箱
- 某年的第几个月或第几个周换算为具体的日期 -- vue
- Annotation(注释):基本Annotation
- 头歌--Java入门 - 方法的使用
热门文章
- 【单片机】2.1 AT89S52单片机的硬件组成
- 单片机简易数字钟c语言程序,用AT89C51/AT89S52单片机制作的简易数字钟
- 毕业设计-基于汇编语言的at89c52单片机可调数字钟的设计,基于AT89S52单片机数字钟的仿真设计(汇编语言程序)...
- Mac 下载破译版本 secureFX 和 secureCRT
- 屏幕录像专家V7.5注册机
- 简易论坛代码源码(php+css+js+mysql)完整的代码源码,系统使用B/S架构
- 解决龙芯2F使用oprofile-0.9.7无法采样应用程序函数的问题
- 关于光伏行业的测试及测试标准
- 最速降线问题——欧拉-拉格朗日方程的推导
- FreeSwitch uuid_bridge代码分析