dex转jar , jar转dex , class转java-程序员宅基地

技术标签: 反编译  java  apache  jar  

简单先解释下,一般java编写后的脚本文件是.java,.class是字节码文件,.dex是android平台可执行文件类型,一般java文件打包成jar包后里面的jar资源是.class,如果需要运行于android,那必须jar里面资源为.dex,如U1的jar脚本

1、dex 转 jar

下载dex2jar,下载地址

 解压后,将d2j-dex2jar.bat 路径添加到环境变量,输入d2j-dex2jar显示如下,即配置成功

在这里插入图片描述

通过命令:d2j-dex2jar classes.dex即可转成dex 的jar包

2、jar 转 dex
sdk自带的dx.bat

在这里插入图片描述

将jar包转换成dex格式二进制的jar包:

dx --dex --output=target.jar(-output=“输出的jar包名”) origin.jar(原来的jar包)

2、.class 转 java

 利用jar包查看工具JD-GUI,下载

在这里插入图片描述

 要将jar转成java,通过file-save all sources即可

二、工具使用方法(命令)
准备工作

假设我的工作目录为 $AndroidDecompile,首先要将system.img中(或者说从源码中编译好的)几个重要的odex文件拷贝到工作目录中,他们是:core.odex, ext.odex, framework.odex, android.policy.odex, services.odex(也可以放在别的目录,通过设置BOOTCLASSPATH指定,默认就是当前目录,关于BOOTCLASSPATH请参考baksmali的帮助信息)。

下载以下工具到 $AndroidDecompile中:

Baksmali :

http://code.google.com/p/smali/downloads/list

Smali :

http://code.google.com/p/smali/downloads/list

Dex2jar :

http://code.google.com/p/dex2jar/downloads/list

JD-GUI (Java Decompile GUI) :

http://java.decompiler.free.fr/?q=jdgui

AutoSign :

http://d.download.csdn.net/down/2768910/fjfdszj

Apktool

http://code.google.com/p/android-apktool/downloads/list

假设我们有一个应用,它的类文件编译后被单独拿了出来,即有两个文件app.apk和app.odex,把他们放在$AndroidDecompile下。

  1. 使用 baksmali.jar 将 odex 文件分解为 smali 文件

$ java –jar baksmali-1.2.5.jar –x app.odex

如果成功的话,会在 $AndroidDecompile下生成一个 out目录,里面是一些以“.smali”为后缀名的文件,在此不深究这些文件的作用。

  1. 使用 smali.jar将 out/目录下的smali文件转换为 classes.dex

$ java -Xmx512M –jar smali-1.2.5.jar out –o c

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baiyifei2016/article/details/126043470

智能推荐

Java中IO流-18-flush和close方法的区别_flush close-程序员宅基地

文章浏览阅读1.1w次,点赞16次,收藏42次。 本篇来学习一个小的知识点,flush方法和close方法的区别。前面我们介绍了和使用了close方法,知道是用来关闭流的操作,但是并没有介绍flush方法,字面意思的刷新的意思。下面我们来先看看一个例子,然后引出flush方法。1.如果不关闭流执行代码package io;import java.io.BufferedInputStream;import java.io.B..._flush close

Pandas —— merge( )合并_pandas merge on多个key-程序员宅基地

文章浏览阅读2.7w次。多对一的合并操作on参数指明连接键In [5]: df1=pd.DataFrame({'key':['b','b','a','a','b','a','c'],'data1':range(7)})In [6]: df2=pd.DataFrame({'key':['a','b','d'],'data2':range(3)})In [7]: df1Out[7]: da..._pandas merge on多个key

OpenWrt 4G路由器检测上网,然后开启 WIFI的脚本_wifi路由器脚本-程序员宅基地

文章浏览阅读1.3k次。OpenWrt 4G路由器检测上网,然后开启 WIFI的脚本MT7620A 4G的路由器刷了OpenWrt系统,为了实现4G在线开启WIFI 功能,否则关闭WIFI,首先在系统设置当中默认关闭WIFI功能,接下来建立一个Shell脚本,如下:#!/bin/bash#此脚本用于检测能否上网,是则开启WIFI功能,否则关闭。#建议用定时任务执行此脚本,如每分钟执行一次,也可修改此脚本用于死循环..._wifi路由器脚本

MFC程序崩溃的友好处理-程序员宅基地

文章浏览阅读69次。软件总存在这样或者那样的bug。虽然测试员已经在很努力的寻找问题,程序员也在汗流浃背的除虫,但是总会有一些情况被遗漏或者不可预测,比如用户的硬件环境、网络状况、操作系统差异等等,不一而足。而导致的结果则是弹出下面这样一个让用户摸不着头脑又恼火的提示,然后崩溃掉,令程序员尴尬不已。而在一些成熟的软件产品中,程序崩溃时我们看到的却是另外一番画面,比如QQ:又比如迅雷:..._mfc程序出现 appcrash

【计算机组成实验】四位加法器_四位串行进位加法器-程序员宅基地

文章浏览阅读7.5k次,点赞2次,收藏34次。并行地形成各级进位,各进位之间不存在依赖关系,因而这种方式也称为先行进位、同时进位或跳跃进位。_四位串行进位加法器

selenium对元素进行操作(三):日期控件处理_selenium日期控件处理-程序员宅基地

文章浏览阅读7.6k次,点赞3次,收藏36次。1分钟了解一个测开小知识:selenium对元素进行操作(三):日期控件处理如果日期控件支持输入,可以直接使用send_keys,按照文本框录入时间。但是大多数日期控件,都是这种格式<input type="text" autocomplete="off" readonly="readonly" placeholder="选择日期" class="aty-input aty-input-hasicon">控件的html描述是这样婶的。可以看到readonly="r_selenium日期控件处理

随便推点

Caused by: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "list")_cause: org.apache.ibatis.ognl.ognlexception: sourc-程序员宅基地

文章浏览阅读3.1k次。1、错误描述2017-10-08 23:58:06,672 ERROR [core.interceptor.ExceptionResolverCustom] (http-apr-8686-exec-4:) nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'pd.l_cause: org.apache.ibatis.ognl.ognlexception: source is null for getproperty(

SVN操作 -- TortoiseSVN中的Excel文件比较_svn如何查看excel不同之处-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏4次。SVN操作 -- TortoiseSVN中的Excel文件比较转载:https://blog.csdn.net/ccpat/article/details/50725774在使用TortoiseSVN时,经常需要在提交前比较本地修改的文件和版本库上的文件之间的差异。TortoiseSVN自带了一个比较工具TortoiseMerge,不过这个比较工具只能比较文本文件,不能比较二进制文件,对Exc..._svn如何查看excel不同之处

进程,协程,线程的概念与区别_请描述进程,线程和协程的概念与区别-程序员宅基地

文章浏览阅读138次。进程:电脑运行的程序,CPU资源分配的最小单位协程:程序员写的程序,程序之间的切换由用户自行处理,节省了CPU的调度时间线程:一个进程下可以有多个线程,CPU调度执行的最小单位协程属于线程,线程属于进程进程间切换消化资源>线程间切换>协程间函数切换协程中的函数切换属于用户级别的操作,进程与线程的切换属于系统级别的切换,所有会更节约性能..._请描述进程,线程和协程的概念与区别

Canape与Canoe一起使用时如何配置通道_can ape 更换通道-程序员宅基地

文章浏览阅读729次。Canape与Canoe一起使用时候如何配置CAN通道_can ape 更换通道

多频外差_多频外差的程序-程序员宅基地

文章浏览阅读526次。% 程序开始clc;close all;clear;% 图片的初始化width = 1280; heigth = 800;% 三频率freq = [70 64 59];C = cell(3,4); for i=1:3 for j=1:4 C{i,j} = zeros(heigth,width); endend% 利用余弦函数计算12张图的灰度值% 图像的生成% 三种频率,四组相位for i = 1:3 % 对应三种不同的频率 _多频外差的程序

[每日一题] 11gOCP 1z0-052 :2013-09-9 PL/SQL package body...........................................A46_包规范和包体都能声明变量且声明的变量都是全局性的,即都可以在外部被访问到-程序员宅基地

文章浏览阅读2.6k次。[每日一题] 11gOCP 1z0-052 :2013-09-9 PL/SQL package body_包规范和包体都能声明变量且声明的变量都是全局性的,即都可以在外部被访问到

推荐文章

热门文章

相关标签