1.工具准备

a.jdk下载,添加“...\jdk\bin”到系统环境变量 Java Downloads | Oracle
b.下载apktool.jar  Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.

2.反编译

java  -jar  apktool_2.6.1.jar (拖入你的apktool)  d   +(拖入你的.apk)

格式为:java  -jar  apktool的名字  d(反编译)  要解包的apk  -o(输出)  文件名

反编译出来的文件目录
其中,res文件夹中存放着该app所有的资源(xml,布局文件和图片);smali文件中存放的是app的所有代码,但代码是smali语言格式,smali语言是Android虚拟机所使用的寄存器语言。还有就是 Androidmanifest.xml功能清单文件一目了然,可以直接查看。
注意: 1.将apk文件重命名为.zip格式并解压,androidmanifest会出现乱码;
        2.解压后,classes.dex文件中存放在着所有代码,但需要用特殊工具(dex2jar\jd-gui)进行查看,解压操作一般用于获取资源图片快捷
        3.如果就查看代码而言,你可以用jadx工具直接导入apk查看源码
如果你能看懂smali语言,可以修改smail中的一些静态成员变量,这里简单对androidManifest.xml某个activity做修改,然后重新打包

3.重新打包

java -jar .\apktool.jar b .\打包的文件夹\
格式为: java  -jar  apktool的名字  b(打包)  要打包的文件夹名字
重新打包后,反编译目录下会出现dist目录以及其中未签名的apk文件

4.生成签名证书(造一个简单签名文件)

keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
格式   36500 :100年 ; test.keystore :签名后的文件名
填写密码,对应名称(记住密码,没记住就重造一个文件)
随时查看证书    keytool -list -v -keystore test.keystore  
Enter keystore password: //输入密码,回车

5.签名:

jarsigner -verbose -keystore E:\反编译\test.keystore  -signedjar  shop111.apk E:\反编译\shop-release\dist\shop-release.apk  testalias
格式: jarsigner -verbose -keystore 签名 -signedjar  签名文件后的文件名 需要签名文件  证书里alias别名

6.遇到问题:

1.jarsigner不是内部命令?
重装jdk,确保安装目录bin里有jarsigner.exe
2. [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries?安装不能提取native库
    a.回到AndroidManifest.xml中,把android :extractNativeLibs="false"改为true(工程对so库进行压缩,安装时解压)重新打包
    b.如果原因是由于apktool在回编译apk包是没有进行内存对齐,可以使用zipalign工具再次对齐已经签名后的apk
​​​​​​​
参考链接:
jdk下载和环境变量配置
apk反编译命令解释
反编译后查看源码

apk反编译和重新打包流程相关推荐

  1. apk 反编译及重新打包签名

    apk 反编译及重新打包签名 1. 需要的工具 apktool,apk 编译及反编译工具 keytool,用于管理密钥和证书的工具 jarsigner,签名工具 apksigner,签名工具 2. a ...

  2. android+apk+反编译和再签名打包,Android:apk反编译步骤,打包、签名和逆向工程经验总结...

    思路一.apktool1.通过apktool反编译出资源和smaliapktool d MobileManager.apkF:\Android\decompile\apktoolapktool d M ...

  3. linux反编译apk,apk反编译和重新打包

    操作系统:Mac OS X 软件:apktool 安装apktool 95264490-A493-4D02-B820-C23AB5140B5D.png 按Mac步骤: 1.打开"wrappe ...

  4. Android Apk反编译、修改资源、重新签名以及重新打包的详细讲解

    在反编译之前先明确下,反编译别人的Apk不是件很道德的事情,毕竟这是别的程序员辛辛苦苦写出来的代码,所以说代码混淆这东西很重要,就是为了防止别人反编译.本文抱着学习的态度,在一些特殊情况下研究下怎么反 ...

  5. Unity 安卓 apk 反编译 重新打包 签名修改

    拿到一个Unity 打包出来的apk,如果没有加密的话 ,你是可以通过反编译修改其中的属性的. 步骤一   apk 解压 方法1: apk 变成 .zip 并解压 然后修改 \assets\bin\D ...

  6. android apk反编译打包签名

     APK反编译打包签名 一.JDK安装和环境配置 1. jdk1.6下载地址:http://download.java.net/jdk6/   jdk-6u17-windows-i586.exe 2. ...

  7. apk反编译重新打包时遇到小问题

    apk反编译教程很多,不重复,反编译时,有时无法生成disk和build文件夹,一般会报错 说明刚开始生成test文件夹,里面没有apktool.yml文件,这时,只要把反编译时的命令"ap ...

  8. 【转】Android APK反编译就这么简单 详解(附图)

     转自:http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 分类: and ...

  9. Android APK反编译就这么简单 详解(图文详解)

    前言 自己很早以前就在反编译,但是知道今天要做才又捡起来了,今天就把他记录下来吧. 工具准备 1.测试环境: win10 2.使用工具: 2.1 CSDN上下载地址: apktool dex2jar ...

最新文章

  1. 全领域通吃,12个经典Python数据可视化库盘点
  2. 高级运维工程师的打怪升级之路
  3. 中文转unicode,中文转bytes,unicode转bytes java实现
  4. php系统函数代码,PHP自定义函数+系统函数库(代码示例)
  5. 图像处理方面的sci期刊_【IEEE Access 】【一年收录1.5w篇文章的SCI】一个月录用案例...
  6. 如何根据接口写一个客户端进行发单测试?
  7. 统计相关系数r与r2的区别_什么是相关系数? 统计解释中的r值
  8. layui table动态选中_layui后台管理—table 数据表格详细讲解
  9. Loj #2568. 「APIO2016」烟花表演
  10. Codeforces Round #161 (Div. 2) B. Squares
  11. 文件上传到部署服务器(添加附件)
  12. Linux网络抓包工具tcpdump
  13. mysql的cnf配置文件全解析
  14. 如何解密pdf加密文件
  15. 数据转换器的工程师指南
  16. 人工智能训练师开始报名了,可评职称、拿补助
  17. Version 28 (intended for Android Pie and below) is the last version of the legacy support library
  18. Windows远程桌面连接后被连接的桌面锁屏
  19. java split 数字_java 怎样分割数字和汉字
  20. android 6g 有必要吗,Android手机: 6G和8G运行内存之间有多大差异?网民: 做这些事有区别...

热门文章

  1. 10 | 介绍外包、外派、驻场、实施、ToB/ToC,外包真的那么不堪么?
  2. vbs小程序图标更改方法
  3. 数据库引擎优化顾问优化数据库
  4. lg-1 x 怎么算_怎么从基金经理的持仓预估我们的收益(一)
  5. 车牌字符模板特征值_车牌识别的原理,如何提取车牌号文字??
  6. firefox插件.xpi
  7. 关于虚拟机搭建Hadoop的几个坑
  8. 软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解
  9. 天地否 (易經大意 韓長庚)
  10. Sqlserver2000数据备份怎么导入到Sqlserver2008