Android反编译(一)

之反编译JAVA源码

[目录]

1、工具

2、反编译步骤

3、实例

4、装X技巧

1、工具

1).dex反编译JAR工具 

 

2).JAVA反编译工具

 

2、反编译步骤

步骤1:把apk文件后缀名改为.zip

步骤2:解压zip包得到classes.dex

步骤3:将Dex反编译为Jar包(工具:dex2jar)

命令: CMD>dex2jar.bat classes.dex

步骤4:用jd-gui查看反编译的jar包 

3、实例

步骤1:把apk文件后缀名改为.zip

步骤2:解压zip包得到classes.dex

步骤3:将Dex反编译为Jar包(工具:dex2jar)

步骤4:用jd-gui查看反编译的jar包

注:jd-gui可将JAR,保存为JAVA源文件的*src.zip,需要看.java,解压即可。

4、装X技巧

以下介绍两种装X技巧:

一)装X初级篇:

简化步骤3,每次打开CMD,手敲dex2jar.bat classes.dex,痛苦了、太痛苦了...

1).在dex2jar目录下,新建[反编译.bat]文件,输入

[反编译.bat]

dex2jar.bat classes.dex

2).第三步直接双击运行[反编译.bat]文件即可

二)装X境界进阶篇

简化反编译成JAR所有步骤(步骤1、2、3),只需拷贝APK到目录,小手双击一下bat,自动完成。

1).目录结构

2).新建BAT文件

【反编译Dex2Jar】.bat


@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
 REM 作者:Findyou
 REM 时间:2013.12.09
 REM Dex2jar工具目录名
 SET DEX2JAR_NAME=dex2jar-0.0.9.15
 SET C_PATH=%CD%
 FOR %%I IN (*.apk) DO (
     ECHO [反编译 %%I]
     ECHO ================================
     ECHO [创建与APK同名的临时文件夹]
     REM 创建文件夹,如果已存在则先删除
     SET SRT=%%I
     RD /S /Q %%I_temp 2>nul
     DEL !SRT:~0,-4!-dex2jar.jar 2>nul
     MD %%I_temp
     REM 复制反编译的apk文件到同名的文件夹中
     ECHO [复制需反编译APK至临时文件夹]
     COPY %%I %%I_temp 1>nul
     REM 进入同名的文件夹
     CD %%I_temp
     ECHO [解压APK: %%I]
     JAR -xf %%I 
     SET SRT=%%I
     REM 重命名文件
     REN classes.dex !SRT:~0,-4!.dex
     REM 移动dex到Dex2jar文件夹中
     ECHO [移动Dex文件到Dex工具目录中]
     MOVE !SRT:~0,-4!.dex ../%DEX2JAR_NAME%
     REM 进入Dex2jar文件夹
     CD %C_PATH%\%DEX2JAR_NAME%
     ECHO [执行反编译]
     CALL d2j-dex2jar.bat !SRT:~0,-4!.dex      ECHO [移动!SRT:~0,-4!-dex2jar.jar 到源APK目录]
     MOVE *-dex2jar.jar ../  1>nul
     
     ECHO [删除临时文件]
     CD %C_PATH%
     DEL %DEX2JAR_NAME%\*.dex
     RD /S /Q %%I_temp   
     ECHO [反编译完成]
     ECHO --------------------------------
     ECHO.
 )
 PAUSE
 @ECHO ON

3).轻轻的双击【反编译Dex2Jar】.bat,自动反编译,是不是很爽...

2013-12-16更新 补充装X技巧进阶篇

转载请注明出处:Findyou

Android反编译(一)之反编译JAVA源码的更多相关文章

  1. JVM之---Java源码编译机制

    Sun JDK中采用javac将Java源码编译为class文件,这个过程包含三个步骤:     1.分析和输入到符号表(Parse and Enter)    Parse过程所做的工作有词法和语法分 ...

  2. 自己动手实现springboot运行时执行java源码(运行时编译、加载、注册bean、调用)

    看来断点.单步调试还不够硬核,根本没多少人看,这次再来个硬核的.依然是由于apaas平台越来越流行了,如果apaas平台选择了java语言作为平台内的业务代码,那么不仅仅面临着IDE外的断点.单步调试 ...

  3. 【JDK命令行 一】手动编译Java源码与执行字节码命令合集(含外部依赖引用)

    写作目标 记录常见的使用javac手动编译Java源码和java手动执行字节码的命令,一方面用于应对 Maven 和 Gradle 暂时无法使用的情况,临时生成class文件(使用自己的jar包):另 ...

  4. Android源码开发利器——Java源码调试(基于4.1.2)

     原文地址:http://blog.csdn.net/jinzhuojun/article/details/8868038     调试Android Java源码 草帽的后花园——Neo 写在之前的 ...

  5. 一个android dex 转java源码工具

    和dex2jar,smali2java比起来,这个工具至少结果是正确的,前两者对于循环,异常等的处理明显逻辑就是错误的. 该小工具是基于androguard制作,本来是想自己写一个,后来一找居然有现成 ...

  6. 从Java源码到Java字节码

    Java最主流的源码编译器,javac,基本上不对代码做优化,只会做少量由Java语言规范要求或推荐的优化:也不做任何混淆,包括名字混淆或控制流混淆这些都不做.这使得javac生成的代码能很好的维持与 ...

  7. 如何阅读Java源码 阅读java的真实体会

    刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心.   说到技术基础,我打个比 ...

  8. 如何阅读Java源码

    刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动.源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比方吧, ...

  9. Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库

    http://www.iteye.com/topic/1113732 原则网址 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能.好了,你现在就有阅读源码的技术基础 ...

随机推荐

  1. \(\S1\) 描述性统计

    在认识客观世界的过程中,统计学的思想和方法经常起着不可替代的作用.在许多工程及自然科学的专业领域中,包括可靠性分析.质量控制.生物信息.脑科学.心理分析.经济分析.金融风险管理.社会科学推断.行为科学 ...

  2. SQLSERVER中如何忽略索引提示

    SQLSERVER中如何忽略索引提示 当我们想让某条查询语句利用某个索引的时候,我们一般会在查询语句里加索引提示,就像这样 当在生产环境里面,由于这个索引提示的原因,优化器一般不会再去考虑其他的索引, ...

  3. 分享我开发的网络电话Android手机APP正式版,图文详解及下载

    分享我开发的网络电话Android手机APP正式版,图文详解及下载 分享我开发的网络电话Android手机APP正式版 实时语音通讯,可广域网实时通讯,音质清晰流畅! 安装之后的运行效果: 第一次安装 ...

  4. MySQL 5.6.17 rpm 文件安装顺序

     Linux系统安装MySQL时,将MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar包打开,有7个rpm文件,如下: MySQL-client-5.6.17-1.el6 ...

  5. 作业二:Github注册过程

    第一步.打开Github官网https://github.com/ ,在相应位置填写注册名.注册邮箱.注册密码完成后点击注册. 第二步.这时会弹出一个界面,让你选择你的私人计划(personal pl ...

  6. 系统架构:Web应用架构的新趋势---前端和后端分离的一点想法

    最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现 ...

  7. Unity3D shader简介

    Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包 ...

  8. [51单片机] 以PWM控制直流电机为例建一个简单的51工程框架

    目录 1)功能概述 2)引脚连接 3)框架介绍 4)模块说明 5)复用规则 6)工程链接 1)功能概述 名称:独立按键控制直流电机调速 内容:对应的电机接口需用杜邦线连接到uln2003电机控制端; ...

  9. JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮

    遇到个输不出来的字符怎么办,因为输不出来的字符一般又是不常见大多数时候连名字也喊不出来的,所以想问百度谷歌大大也不大可能.如果是小白用户肯定会去把输入法软盘打开切换到其他键盘一个一个找.即使有搜狗输入 ...

  10. Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明

    上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>介绍了如何通过通用接口获取AccessToken,有了AccessToken,我们就可以来操作 ...