android之反编译浅析
来源:互联网 发布:js点击按钮跳转页面 编辑:程序博客网 时间:2024/06/16 03:39
android反编译浅析
从接触android开发开发,反编译一直就是离不开的工具,学习好的android应用的代码编写规范。
这篇文章主要就是讲述如何反编译apk文件得到java文件的,反编译不为了窃取,仅供学习交流代码而已。本文的目录结构为:
1、概述
2、详细的讲述apk工程的反编译
概述:
分析Android工程的目录结构可以知道,其基本上可以简单的理解为三个部分:源码,资源文件和编译配置文件。这其中的资源文件(图片,xml文件,assert等)是从打包开始就直接存放在apk中的,图片等无需反编译,源码(暂时接触到java源码)文件则很有可能会被“混淆”以防止别人反编译,混淆文件存放在配置文件ant.properties文件中的;而配置文件,主要是androidManifest.xml文件则是直接暴露出来的,这很关键。获取xml文件盒源码则成为反编译最重要的任务。
下面来详细的讲述apk工程的反编译
一、使用编译工具
本人也是直接从网上下载的反编译工具,使用效果不错,这里提供下载地址:http://download.csdn.net/detail/feishangbeijixing/8094335
1、apktool,得到xml文件
2、android反编译工具
二、开工
a) Apk——> 工程目录
这一步相对很简单,主要是为了得到androidManifest.xml文件,dex文件,布局文件和资源文件。有两种方式都可以实现:
1、 直接将apk解压缩
这样的情况下,没有经过“混淆”的apk工程是可以直接得到xml文件(可直接阅读的)和dex文件的;但是经过“混淆”的apk工程文件中xml文件貌似不可以直接读取(显示乱码)
2、 使用apktool工具
使用方法:先将apktool解压缩,在apk文件夹目录下放置需要解压缩的apk文件并更名为123.apk。双击apkTool文件(其实是一个windows的脚本文件,也可知是可以通过Dos的方式运行的),点击之后根据如下图所示,执行反编译或者回编译。
b) smail----->dex
今天自己按照自己的blog反编译的时候才发现原来上一步得到的只是smail文件,还不是直接得到dex文件,特地来修改一下。
将自己的apk直接用压缩包解压缩就直接可以得到dex文件,后面的dex——>jar就可以直接使用了!
c) Dex——>源码
有上一步得到的dex文件(在上一步中直接解压就有可能得不到dex文件,试过几次貌似如此)
使用android反编译工具中的dex2jar.bat工具,位置:android反编译工具Android反编译\dex2jar-0.0.9.15。
1、 执行命令:dex2jar.bat classes.dex(执行命令之前需要先将classes.dex文件放置到dex2jar-0.0.9.15这个文件夹下,执行命令之后就可以得到classes_dex2jar文件)
2、 用jd-gui工具查看上一步中得到的class-dex2jar包文件。就可以看到源码了
3、反编译完了就可以查看并修改没有经过“混淆”的源码了。然后再用apkTool来回编译并签名就可以使用“你的”apk应用了
- android之反编译浅析
- 浅析,反编译 Android APK流程分享!
- android 之反编译
- Android学习之 反编译
- Android之反编译
- android之关于反编译
- android之反编译apk
- Android之反编译APK
- Android反编译之xml
- Android 反编译之smail
- android 反编译之dex2jar
- Android开发之反编译与防止反编译
- Android开发之反编译与防止反编译
- android反编译之解决方案 AndroidX
- android的apk之反编译
- android反编译之投机主义
- android的apk之反编译
- android的apk之反编译
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- 定期生成报表
- SQL server 触发器,在触发Merge过程中,逐行触发的解决办法 用group by 避免是一次触发中的多行更新或删除。
- 程序员需要克服的10大障碍
- ThreadLocal与Synchronized的使用场景
- android之反编译浅析
- java用户角色权限设计
- ARM堆栈方式
- 分:100
- bzoj 2440: [中山市选2011]完全平方数
- 一些比较好的资源
- device platform 对应表
- ListView子控件焦点问题
- 在替换序列