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 修改相关推荐

  1. android+apk+修改+签名文件位置,Jenkins打包android应用时自动签名apk详解

    前言 如果你是使用android studio编译项目的化,在编译apk只会会自动给apk签名. 但默认配置下jenkins下编译出的apk是unsign的.需要一些额外的设置才能自动sign. 这个 ...

  2. android apk 修改 签名文件位置,更改APK中图标文件,签名后重新安装

    昨天在使用一款录屏软件APK时,发现有默认的水印,想把水印去掉,或者换成自己的水印.啰嗦几句,免得有人走了我的误区,可以跳过直接进步骤.试了几种办法,包括解压APK包,找资源文件res,没有发现水印的 ...

  3. 安卓apk修改(Android反编译apk)

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程.APK修改,分为以下几步:反编译解包,修 ...

  4. Android Studio修改apk命名

    Android Studio修改生成Apk命名 转载请注明出处: http://blog.csdn.net/jys_05/article/details/78998633 1.Android Stud ...

  5. Android反编译apk修改版本号重新打包签名详细教程(超详细)

    文章目录 一.反编译工具介绍 1:apktool 获取资源文件 2:dex2jar(源码文件获取) 3:jd-gui 查看APK中classes.dex转化成出的jar文件,即源码文件 二.apkto ...

  6. unity安卓打包修改启动画面_Unity自动化打包Android APK

    零. 前言 最近在做Unity开发,有个任务是通过Jenkins实现自动化打包Unity游戏成Android APK的需求,所以在完成任务后,梳理成了一个最简单的教学,也把遇到的坑和大家分享. 若需要 ...

  7. Android Apk签名修改V1,V2,V3,V4

    Unity游戏打出 Android Apk 包,默认签名方式是V1,V2方式的. 但是九游要求只能用V1签名方式.那就对生成的 Andorid Apk包重新签名就OK了. 改签环境 改签 Androi ...

  8. android v3签名格式,Android Apk签名修改V1,V2,V3,V4

    Unity游戏打出 Android Apk 包,默认签名方式是V1,V2方式的. 但是九游要求只能用V1签名方式.那就对生成的 Andorid Apk包重新签名就OK了. 改签环境 改签 Androi ...

  9. Android APK加壳技术方案----代码实现

    本文章由Jack_Jia编写,转载请注明出处. 文章链接:http://blog.csdn.net/jiazhijun/article/details/8746917 作者:Jack_Jia    邮 ...

  10. Android APK的签名--笔记版 V1 签名和V2签名总结

    1. 工具介绍 jarsigner 是JDK提供的针对jar包签名的通用工具, 位于 JDK/bin/jarsigner apksigner 是Google官方提供的针对Android apk 签名验 ...

最新文章

  1. 傻瓜式动画制作软件_一个傻瓜版的动画制作软件——万彩动画大师
  2. Struts1.x系列教程(4):标签库概述与安装
  3. Android开发之大位图二次採样压缩处理(源码分享)
  4. mysql decimal(10,2)对应java类型
  5. sklearn学习总结(超全面)
  6. Foundation框架中常用类的介绍
  7. 在当今移动互联网时代_谁在提供当今最好的电子邮件体验?
  8. javaweb实现分页(二)
  9. (二十)python 3 匿名函数
  10. 【转载保存】网页提取正文算法汇总
  11. 工厂方法模式(Factory Method Pattern)
  12. oracle12c order by,oracle 数据库中order by 的一些高级用法
  13. JavaScript的语法规则
  14. PR/AE基础入门操作
  15. 计算机桌面弹窗,网站弹窗广告:教你4种方法,永久关闭电脑弹窗广告,还你一个干净的桌面 _ 惠州SEO...
  16. minio更换端口启动
  17. 使用Python自动化管理Exchange邮箱
  18. 某年的第几个月或第几个周换算为具体的日期 -- vue
  19. Annotation(注释):基本Annotation
  20. 头歌--Java入门 - 方法的使用

热门文章

  1. 【单片机】2.1 AT89S52单片机的硬件组成
  2. 单片机简易数字钟c语言程序,用AT89C51/AT89S52单片机制作的简易数字钟
  3. 毕业设计-基于汇编语言的at89c52单片机可调数字钟的设计,基于AT89S52单片机数字钟的仿真设计(汇编语言程序)...
  4. Mac 下载破译版本 secureFX 和 secureCRT
  5. 屏幕录像专家V7.5注册机
  6. 简易论坛代码源码(php+css+js+mysql)完整的代码源码,系统使用B/S架构
  7. 解决龙芯2F使用oprofile-0.9.7无法采样应用程序函数的问题
  8. 关于光伏行业的测试及测试标准
  9. 最速降线问题——欧拉-拉格朗日方程的推导
  10. FreeSwitch uuid_bridge代码分析