java代码编译得到smali代码
2023-09-14 08:59:10 时间
首先用Sublime(其他文本编辑器也可)编写一个java类
class A{
String s = new String("text");
}
第二步:使用javac命令编译java文件得到class文件
javac是JDK自带的
javac A.java
第三步:使用jar命令编译class文件得到jar文件
jar是JDK自带的
jar cvf A.jar A.class
第四步:使用dx命令将jar文件编译成dex文件
dx.bat在Android SDK/build-tools/某一个版本下..
dx --dex --output A.dex A.jar
第五步:使用baksmali命令将dex文件反编译成smali文件
baksmali.jar可以网上去下载
java -jar baksmali-2.1.3.jar A.dex
最终得到一个out文件夹,里面就是我们需要的A.smali文件
.class LA;
.super Ljava/lang/Object;
.source "A.java"
# instance fields
.field s:Ljava/lang/String;
# direct methods
.method constructor <init>()V
.registers 3
.prologue
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
new-instance v0, Ljava/lang/String;
const-string v1, "text"
invoke-direct {v0, v1}, Ljava/lang/String;-><init>(Ljava/lang/String;)V
iput-object v0, p0, LA;->s:Ljava/lang/String;
return-void
.end method
因为在热修复框架中,smali是绕不过去的
相关文章
- Unity3D研究院之打开Activity与调用JAVA代码传递参数
- Java实现 LeetCode 318 最大单词长度乘积
- Java实现 LeetCode 105 从前序与中序遍历序列构造二叉树
- java实现第三届蓝桥杯火柴游戏
- java算法集训代码填空题练习3
- java算法集训代码填空题练习3
- java 位运算 取反(代码库)
- 【JAVA】Java 异常中e的getMessage()和toString()方法的异同
- java代码将e.printStackTrace()写入log4j文件异常信息
- java代码的编译执行过程
- 编写高质量代码:改善Java程序的151个建议 --[98~105]
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- 【JAVA】 03-Java中的异常和包的使用
- 【JAVA】毕向东Java基础视频教程-笔记
- 【Java】java使用反射访问对象方法和成员变量
- 在 Java 中,负责对字节代码解释执行的是?
- java quasar实现纤程完整代码实例
- 如何等待java线程池中所有任务完成
- Scala语言编译之后生成的Java代码解读
- 使用Java代码连接SAP ABAP Netweaver服务器
- Atitit 安全流程法 目录 1. 常见等安全措施方法2 1.1. 安全的语言 代码法,编译型 java2 1.2. 安全编码法2 1.3. 安全等框架类库 api2 1.4. 加密法2
- Atitit.java swing打印功能 api attilax总结
- 基于JAVA实现的WEB端UI自动化 - WebDriver高级篇 - 获取测试对象属性
- 力扣——417. 太平洋大西洋水流问题(Java、python、C代码实现)
- Java通过PDF模板导出数据 adobe acrobat的PDF编辑器 itextpdf java导出文件输出流
- 【Android Gradle 插件】gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数
- 【Groovy】Android Studio 中创建 Groovy 工程 ( 创建 Android Studio 工程 | 创建并改造 Java 依赖库 | 编写 Groovy 代码并运行 )
- Java:openjdk: error: Student is abstract; cannot be instantiated;java编译环境
- Java中创建、读写Excel文件
- 【java】Java 抽象类
- 【java】Java并发编程系列- volatile关键字(高并发中特实用哦)