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. Javascript 中的this 指向的对象,你搞清楚了吗?

    Javascript 中的this 总让人感到困惑,你能分清以下三种test1(),test2(),test3() 情况下的输出吗? 注:以下Javascript运行环境中为浏览器 //1 this在 ...

  2. Java设计模式9:代理模式

    代理模式 代理模式的定义很简单:给某一对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式的结构 有些情况下,一个客户不想活着不能够直接引用一个对象,可以通过代理对象在客户端和目标对象之间 ...

  3. Unity3D手游开发实践

    <腾讯桌球:客户端总结> 本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身.虽然基于Unity3D,很多东西同样适用于Cocos.本文从以下10大点进行阐述: 架构设计 原生插件/ ...

  4. 使用Struts 拦截namespace进行权限控制

    有时候我需要在几个包下都需要进行同一个权限控制.如在购物网站中,我们需要进入个人中心.下订单.评价商品等等都需要进行登录权限控制,但是这几个模块并不是位于同一个package下.Struts提供的拦截 ...

  5. 深入探究js中无所不在的this

    黄金守则: this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window而当函数被作为某个对象的方法调用时, this等于那个对象. 下面是一些相关实践: --------- ...

  6. C#Light V0.08A 执行字符串中的C#

    C#Lite第一批规划的功能已经全部完成 V0.08A 加入了var 表达式支持 完成了类型静态函数和静态成员的访问 之前已完成了非静态的 之所以还不进入beta是临时决定第一批就加入数组的功能. 项 ...

  7. [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)

    开机初始化Log Log编号 函数名   所在文件名 000001: main ..\main.c 000002: timers_init ..\main.c 000003: gpiote_init ...

  8. [翻译]AKKA笔记 - ACTOR MESSAGING - REQUEST AND RESPONSE -3

    上次我们看Actor消息机制,我们看到开火-忘记型消息发出(意思是我们只要发个消息给Actor但是不期望有响应). 技术上来讲, 我们发消息给Actors就是要它的副作用. 这就是这么设计的.除了不响 ...

  9. jQuery的选择器中的通配符[id^='code']

    1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code']&quo ...

  10. webservice2

    按照 当然,里面没写清楚如何配置第三方jar 结果一访问就报错:org.codehaus.xfire.transport.http.XFireConfigurableServlet 4年前就搞过ws的 ...