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

思路一、apktool

1.通过apktool反编译出资源和smali

apktool d MobileManager.apk

F:\Android\decompile\apktool>apktool d MobileManager.apk

I: Baksmaling...

I: Loading resource table...

I: Loaded.

I: Loading resource table from file: C:\Users\liupingan\apktool\framework\1.apk

I: Loaded.

I: Decoding file-resources...

I: Decoding values*/* XMLs...

I: Done.

I: Copying assets and libs...smali是可阅读的字节码,通过阅读smali代码可以真实的反编译出来源代码,但是这个没有自动化的工具,,需要人工分析。

apk打包:

apktool b MobileManager

将重新打包apk.

注意:需要重新签名才能安装。可以参考这篇文章进行签名发布:Android:APK签名

工具下载地址:

2.通过dex2jar将其中的dex文件反编译出jar文件

首先将apk包重命名为rar文件,解压缩出来classes.dex

dex2jar managerclasses.dex

可以得到jar文件

F:\Android\decompile\dex2jar-0.0.9.8\dex2jar-0.0.9.8>dex2jar managerclasses.dex

dex2jar version: translator-0.0.9.8

dex2jar managerclasses.dex -> managerclasses_dex2jar.jar

Done.

下载地址:

3.将jar文件解压缩出来(可以改后缀名为.rar),生成 .class文件目录

4.通过jad命令将对应的.class文件反编译出.java

jad -o -r -sjava -dsrc Manager_dex2jar/**/*.class

其中Manager_dex2jar为.class目录

将反编译Manager_dex2jar目录及其子目录下的所有.class文件为.java

结果保存在src目录下

工具下载:

或者搜索 jad158g

思路二、baksmali/smali:

1. 反编译:将classes.dex反编译出.smali源码

java -jar baksmali-1.3.3.jar -o classout/ classes.dex

2. 打包:将.smali源代码重新打包成classes.dex

java -jar smali-1.3.3.jar classout/ -o classes.dex

3. baksmali/smali工具下载:

4. 同样,需要重新签名才能安装使用。

可以参考这篇文章进行签名发布:Android:APK签名

个人经验:

0.一般来说,只有.smali源代码才能重新还原打包apk,通过jad反编译出.java源代码由于无法彻底完全反编译出原始代码,无法基于java源代码重新打包成apk。

1. 在阅读反编译出来的java源码时,如果出现反编译效果不理想的部分代码,可以对照相应的.smali文件分析,这个是最准确的,就是dex op code。

2. 利用Eclipse变量重命名功能,可以将反编译的java源码中无含义的变量重命名为有意义的变量名。

3. 反编译出来java文件以后,对于一些资源类的索引,由于采用了硬编码的形式,可以采用下面的工具解析出原始的资源引用代码:

Android逆向分析源码之资源代码还原小工具

4. 一般一个完整的软件,基本会用到一些第三方的类库,这个需要事先甄别出来,然后删除这部分源代码,直接去google对应的类库放进来,避免浪费大量的时间在分析第三方类库上面。很多是都是开源的类库,很容易就找到。

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

  1. Android(三)——将程序打包成APK文件,进行APK签名以及反编译APK

    文章目录 1. 签名的作用 2. Android Studio 如何打包签名 3. 反编译 APK 3.1 获取图片资源 3.2 获取 .XML 资源 3.3 获取代码资源 1. 签名的作用 Andr ...

  2. android+命令行编译,打包生成apk文件,Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包...

    默认为debug mode,使用的签名文件在: $HOME/.android/debug.keystore 比如 C:\Users\chengcj1.android\debug.keystore 1. ...

  3. 反编译sencha toucha打包的apk文件,修改应用名称支持中文以及去除应用标题栏

    一.去除安卓应用标题栏 sencha touch打包android安装包,去掉标题栏titlebar的简单方法 (有更复杂更好的方法,参看"二.利用反编译修改apk的应用名称为中文" ...

  4. php 修改 apk名称6,反编译sencha toucha打包的apk文件,修改应用名称支持中文以及去除应用标题栏...

    一.去除安卓应用标题栏 sencha touch打包android安装包,去掉标题栏titlebar的简单方法 (有更复杂更好的方法,参看"二.利用反编译修改apk的应用名称为中文" ...

  5. apktool 反编译 java_APK文件使用ApkTool解包反编译和重新打包及签名

    前段使用一直使用一个手机APK软件,不过最近软件更新,出现了一个很讨厌的语音提示,于是想通过重新编译把语音提示去掉. [准备工作] 配置JAVA环境,到http://www.java.com/下载并进 ...

  6. 反编译之将脱壳后的dex文件重新打包成apk

    前言:通过上一篇文章反编译之脱去乐固加固的壳,已经可以拿到dex文件了,那么我们怎么将dex文件重新打包回新的apk呢?如果有这样的疑问,就看看这篇文章吧!一定会帮到你的! 得到dex文件之后该做什么 ...

  7. Windows 10 安装 Android Studio 安装 创建APP 创建模拟器调试 真机调试 编译 签名打包APP

    要想使用Android Studio开发android APP,需要安装三个工具:JDK.Android Studio.Android SDK 先了解这三个工具是做什么的 JDK:JDK是Java语言 ...

  8. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件...

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...

  9. h5打包成apk,加固后重新签名(使用java的jdk,使用android的sdk)

    温馨提醒:打包时targerSdkVersion设置要大于28,要不然鸿蒙系统拍照后读取不到图片文件 两种方式: 1.使用java的jdk(jdk安装就不做说明了,网上一大堆) cmd进入bin目录下 ...

最新文章

  1. Linux系统/boot目录破损无法启动怎么办
  2. 弱监督语义分割--Object Region Mining with Adversarial Erasing
  3. openTLD算法在opencv3的PatchGenerator
  4. 全民app使用率排行榜统计全了,微信再次位居榜首!
  5. Linux线程——线程安全问题
  6. linux安装tomcat Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  7. 用Java创建自己的AOP
  8. 函授本科统考计算机考试时间,函授2006级计算机、机电本科第一学期考试时间安排.doc...
  9. linux nginx django,如何在Linux下使用Nginx部署Django项目
  10. 所有受限制的应用程序包_您需要了解的有关Mac的Apple新款M1芯片的所有信息
  11. centos6.8 配置mysql赋予mysql远程连接权限
  12. Hibernate_01
  13. mac apache php.ini,Mac自带的Apache使用详解
  14. 第二阶段团队冲刺02
  15. 【OpenCV学习笔记】【函数学习】十七(imread()函数)
  16. win10计算机性能设置,巧设置让Win10运行更流畅
  17. 2013年4月小游戏行业网站综合影响力排名
  18. edge通常不会下载xxxx确保信任xxx怎么解决
  19. 陆游和唐婉,潇潇和沐月
  20. Android WebView使用及苏宁易付宝支付相关问题

热门文章

  1. RuntimeError: dimension specified as 0 but tensor has no dimensions
  2. VS2010 + CUDA7.5 + GPU编译OpenCV2.4.9
  3. ubuntu安装vmware(支持mac)与卸载
  4. 二十六、事务的隔离级别
  5. Java实现话术词槽匹配_桔子互动|百度UNIT操作详解(上篇)
  6. mysql线程异常中断事务_清理MySQL死锁事务线程
  7. dijkstra算法matlab程序_编程习题课 | 用最短路算法为你的小地图导航
  8. 计算机键盘的设计原理图,人体工程学键盘的设计原理
  9. 获取计算机软件列表,获取计算机已安装软件列表解决方法
  10. Git config 查看和设置配置信息