Dalvik指令分析(二) 从java文件到dex

一篇文章带你搞懂DEX文件的结构 *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 本文地址:一篇文章带你搞懂DEX文件的结构 DEX文件就是Android Dalvik虚拟机运行的程序,关于DEX文件的结构的重要性我就不多说了。下面,开练! 建议:不要只看,跟着我做。看再多遍不如自己亲自实践一遍来的可靠,别问我为什么知道。泪崩ing..... 首先,我们需要自己构造一个dex文件,因为自己构造的比... 阅读详情


        写这个系列文章是想了很久但是一直没有时间付诸行动,趁着这两天假期还没有结束,

赶紧动笔,怕上班了就没有时间再静下心来写这些文章,所以有点赶,表现在系列文章的

内容安排上就不是很合理,有些内容还需要丰富,但是聊胜于无吧,先写下再修改,如果

有一些反馈也可以根据反馈来修改。好了,开始第二篇文章。

       这篇文章可以成为dx的HelloWorld,在这篇文章里我会介绍如果将一个java文件编译

成一个dex文件。ok,go!

step1: 准备java文件,文件名HelloWorld.java,内容如下

public class HelloWorld {
    public void sayHello() {
        System.out.println("Hello World!");
    }
}
        多么熟悉的HelloWorld  :)


step2:编写脚本,内容如下:

mkdir classes
javac -d classes src/*.java

dx -JXmx500m --debug --dex --no-optimize --positions=none --no-locals \
    --dump-to=classes.lst --output=classes.dex classes
zip test.jar classes.dex
        这里需要做一些解释,首先利用javac编译java源文件,生成class文件,然后利用dx将

class文件转换成dalvik指令,并打包生成classes.dex,最后将dex打包成jar包。虽然只是

短短的几句话,但是dx进程的内部逻辑其实非常复杂,后续我会单独写一篇文章介绍dx的

过程。简单总结一下上面的编译过程:

         .java  ------------->    .class   ---------->   .dex
                     javac                             dx


        对应的逆向过程如下:

         .java  <-------------    .class   <------------   .dex

                      JD-GUI                         dex2jar


step3: 执行上述脚本就会生成classes.dex文件

          

这篇文章主要是通过脚本来介绍java to dex的过程,后续文章会详细介绍dx的过程,以及dex

文件的结构。

从DEX到JAR:使用dex2jar工具进行Android应用分析 DEX(Dalvik Executable)文件格式是Android平台上的应用程序执行文件格式。它的设计目的是让Android应用能够高效地运行于资源受限的设备上,如手机和平板电脑。DEX文件包含编译后的代码和应用运行所需的所有内容,例如类的定义、方法和字段等。在Android应用的开发过程中,开发者往往会遇到需要分析、调试已编译的APK文件的情况。 阅读详情

相关推荐

深入解析Android Dex文件与Dex2Jar逆向转换实战资源包

htmltable {th, td {th {pre {简介:“classes.dex.dex2jar.src.zip”是Android逆向工程中的关键资源压缩包,包含APK中核心的classes.dex文件经Dex2Jar工具转换为可读Java代码的中间产物及可能的源码脚本。Dex文件作为Android应用的字节码载体,存储编译后的Java类与方法,而Dex2Jar工具能将其转为标准Jar格式,便于使用JD-GUI等反编译工具查看原始逻辑。

weixin_35433448的博客 1687

Java文件是如何编译成Dex文件的?如何执行Dex文件?

本文将介绍Dex文件, 以及Java文件如何生成Dex文件的?最后介绍Dex文件通过什么方式来执行?

卜大爷的博客 2万+

MATLAB自动驾驶(1)——预构建场景库

MATLAB自动驾驶(1)——预构建场景库

Ucicorn Gundam的博客 3265

java源码编译成dex文件

1、编写test.java文件2、打开命令行窗口,输入如下命令,即可将.java文件编译成.class文件javac -source 1.6 -target 1.6 test.java3、进入dx所在目录,并将test.class文件复制到该目录下,命令行执行命令:dx --dex --output=e:\DexTest\classes.dex test.class

九天 3266

深入解析Buck开关电源中的死区时间设计及其对系统性能的影响

本文深入解析了Buck开关电源中死区时间的设计原理及其对系统性能的关键影响。死区时间通过防止上下管同时导通来避免穿通电流,确保系统安全。文章详细探讨了其工作机制、设置时的效率与安全权衡,以及不当设置对效率、稳定性和EMI的连锁反应,并提供了基于实测的调试方法与实战案例。

Apple的专栏 1130

构建基于知识图谱的金融风险关联网络

在金融领域,风险的识别和管理至关重要。传统的风险分析方法往往只能处理单一维度的数据,难以全面捕捉金融市场中复杂的风险关联关系。构建基于知识图谱的金融风险关联网络的目的在于整合多源异构的金融数据,通过知识图谱的方式清晰地展示金融实体之间的复杂关系,从而更准确地识别潜在的金融风险,为金融机构的风险管理决策提供有力支持。本项目的范围涵盖了从金融数据的收集、预处理,到知识图谱的构建,再到金融风险关联网络的搭建和分析。

SuperAGI2025 1421

安卓中将Java文件转换成Dex文件

在Java,安卓中,如何获取Class文件,并转换成Dex文件。

写好每一篇文章 3941

【tessy】软件环境配置:Keil C51 Keil uVision UVSC (Default)

本文详细说明了tessy软件如何配置【Keil C51 Keil uVision UVSC (Default)】环境,具体操作步骤和注意事项

qq_37282365的博客 600

Dalvik 与 ART

Dalvik 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为D...

weixin_34119545的博客 291

【PCIe EP 设备入门学习专栏 -- 8 PCIe EP 架构详细介绍】

Synopsys PCIe 5.0 EP 架构由多个功能模块组成,整体遵循分层 + 模块化设计CXPL(事务层 + 链路层 + 物理层 MAC)XADM(仲裁/生成)、XAIM(应用接口)RADM(过滤/路由/Completion)CDM(配置空间)、PMC(电源管理)、LBC/DBI(寄存器访问)MSG_GEN(消息)、CXS(多芯片一致性)

CodingCos的博客 383

YOLO十年演进:从CNN到Transformer再到MoE,我看懂了2026年目标检测的落地风向标

技术永远是为业务服务的,能解决真实问题的技术,才是有价值的。YOLO的十年演进,从CNN到Transformer再到MoE,从来都不是学术上的炫技,而是一步一步解决工业落地的痛点:从让实时检测成为可能,到解决复杂场景的漏检误检,再到打破精度和算力的死局,每一步都踩在了工业落地的真实需求上。很多新入行的朋友,总喜欢追新,今天换Transformer,明天堆MoE,觉得模型越新、参数越大,就越厉害。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 748

Android中java和smali转化一键化操作工具java2smali原理分析

最近在小密圈中,有同学咨询到如何快速的将java文件转化成smali文件,因为我们知道在反编译之后都是smali代码,如果我们想进行代码插入,需要将java代码弄成smali代码,然后放进去,但是在这个过程中,比较麻烦,一般都是新建一个Android工程,然后编写需要插入的功能代码,然后再反编译得到smali代码。直接复制过去即可。而在这个过程中,发现操作有点繁琐,比如我只想插入两个类,结果还得搞

编码美丽 1万+

openmediavault(OMV) (1)安装部署

EXT3(Third Extended File System): EXT3 是 Linux 中广泛使用的日志文件系统,是 EXT2 文件系统的升级版本。这里可以根据自己的需求进行设置,目前只设置了自动登出为1天,为方便后续配置使用,其他设置可根据自己的具体需求进行设置。通过cd 命令进入到我们的raid存储中,通过ls发现里面没有任何的数据,因为我们的raid存储中还未创建任何数据。我的系统要安装在100G的磁盘上,故选择100G的磁盘,实际可以根据具体情况选择。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2168

【Java 虚拟机原理】Dalvik 虚拟机 ( 打包 Jar 文件和 Dex 文件 | 反编译 Dex 文件 | 分析 Dex 文件反编译结果 )

一、打包 Jar 文件和 Dex 文件、 1、示例代码、 2、打包 Jar 文件、 3、打包 Dex 文件、 二、反编译 Dex 文件、 三、分析 Dex 文件、 1、Student 类相关信息、 2、User 类相关信息、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1737

基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机

目录基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机项目实例1. 项目背景2. 系统架构2.1 电励磁同步电动机模型2.2 三相逆变器模型2.3 自适应控制器(Adaptive Controller)2.4 系统框图3. 模型设计3.1 创建Simulink模型3.2 自适应控制(Adaptive Control)设计3.3 仿真环境搭建4. 参数优化4.1 自动调优5. 实际应用案例5.1 工业驱动系统5.2 风力发电系统6. 结论进一步优化建议需求分析电励磁同步电动机

MHD0815的博客 266

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Android 逆向】Dalvik 函数抽取加壳 ① ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )

前言、 一、Dalvik 下的函数指令抽取与恢复、 二、dex 函数指令恢复时机点、 1、dex 函数指令恢复、 2、Android 源码中搜索 dexFindClass 函数、 3、类加载流程 : 加载、链接、初始化、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2661

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

dex文件格式介绍

前言dex(Dalvik Executable)是Android平台源代码文件(java,kotlin)经过编译、重构、重排、压缩、混淆后的字节码文件,是对传统的class 文件再处理。dex 更适合于资源有限的嵌入式设备使用,和class 文件比,dex 明显的优势主要表现在下面两个方面1)体积更小,dex 在class的基础上,将多个class 文件特征进行统一处...

内核工匠 9629

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Dalvik 分析之准备篇

前言:dalvik 是 Android 的重要组成部分,掌握其运行机制对理解整个Android系统有着相当之大的帮助。本文将从GDB单步调试和Dexdump工具入手来深入探索dalvik。 1. Dalvik 之编译为了能够更方便的调试dalvik,我们需要编译一个在X86上运行的dalvik和相关工具。编译步骤如下:首先进入到Android 源码根目录source build/envsetup.sh (不是网上有些文章写的只输入 build/envsetup.sh)lunch 2  在此之后可以看到TAR

VirtualPower的专栏 1万+

浅谈 Android Dex 文件

概述 为什么要了解 Dex 文件 了解了 Dex 文件以后,对日常开发中遇到一些问题能有更深的理解。如:APK 的瘦身、热修复、插件化、应用加固、Android 逆向工程、64 K 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源 方法数限制。 什么是 Dex 文件 在明白什么是 Dex 文件之前,要先了解一下 JVM,Dalvik 和 ART。JVM 是 JAVA 虚拟机,用来运行 JAVA 字节码程序。Dalvik 是 Google 设计的用于 Android平

m0_54851114的博客 2653

Android的APK安装过程 JVM Dalvik和ART等虚拟机区别以及DEX文件ODEX文件OAT文件区别

APK apk全称是AndroidPackage,也就是Android安装包;APK的本质是一个zip压缩包,如果将后缀名改成.zip,就可以解压,APK 文件与 Zip 文件最大的一个不同是 APK 包含签名信息,用于保证安装包安全不被修改,解压后的目录有: res文件夹:用于存放Android资源文件的目录,里面有drawable图片资源,布局文件等,这里面的文件都是被编译过的(图片除外...

Mango先生的博客 5032

DEX文件解析

之前面试被问到DEX文件解析,由于时间太过于久远,忘得都有点差不多了,好记性不如烂笔头。特此记录一下。 DEX文件的生成 首先我们要知道,JVM是JAVA虚拟机,使用运行JAVA字节码程序。Dalvik是Google设计的用于Android平台的运行时环境,适合移动环境ART即Android Runtime,是Google为了替换Dalvik设计的新Android运行时环境,在Android 4.4及以上启动。ART比Dalvik的性能更好。Android程序一般使用Java语言开发,但是Dalvik虚拟机

re_psyche的博客 1999

一篇文章带你搞懂 DEX 文件的结构

From:https://blog.youkuaiyun.com/sinat_18268881/article/details/55832757 Dex文件格式详解:https://www.jianshu.com/p/f7f0a712ddfe dex文件解析(第三篇):https://blog.youkuaiyun.com/tabactivity/article/detai...

墨鱼菜鸡 4108

apk文件解压后产生.dex文件详解,重要组成部分与4个分析工具【一看就会】【OneGIS开发】

对于非预置应用,包含在APK文件里的DEX文件会在运行时被优化,优化后的文件将被保存在缓存中。- Tinker Dex Dump:可以迅速从APK中提取出所有DEX文件,列出类、方法、字段等元数据,并以清晰易读的形式展示,还可通过命令行参数选择要查看的具体信息。- Dexdump:Android SDK中提供的工具,可将DEX文件的内容以文本形式输出,方便查看其中包含的类、方法、字段等信息。- 文件头(Header):包含文件的基本信息,如版本号、文件大小、字节序等,帮助虚拟机识别和处理文件。

a_55523的博客 3560

android .dex文件探究

在我们写Java代码的时候,生成的文件是.java文件,但是JVM并不识别这个,所以会先转成class文件,而在Android端,Android上的Davlik虚拟机能运行.dex。所以dex文件中包含了所有的app代码,可利用反编译工具获取java代码。 即dex文件就是Android Dalvik虚拟机运行的程序。 为了能够加深印象,我们先构造一个dex文件。 public class DEX...

小薇子的博客 8978
上一篇: Dalvik指令分析(一) hex to instruction
下一篇: Dalvik指令分析(三) dex文件的结构
jiang_lostcode
博客等级 码龄18年 45粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值