.bytecode 50.0
.class public cn/test/Hello
.super java/lang/Object
;private String title = "test"
.field private 'title' Ljava/lang/String;
;public Hello()
.method public <init>()V
.limit locals 1
.limit stack 2
aload 0
invokespecial java/lang/Object/<init>()V
aload 0
ldc "test"
putfield cn/test/Hello/title Ljava/lang/String;
return
.end method
;public Hello(String title)
.method public <init>(Ljava/lang/String;)V
;局部参数0保存this,局部参数1保存title
.limit locals 2
.limit stack 2
aload 0
invokespecial java/lang/Object/<init>()V
aload 0
ldc "test"
putfield cn/test/Hello/title Ljava/lang/String;
;this.title = title;
aload 0 ;this
aload 1 ;title
putfield cn/test/Hello/title Ljava/lang/String;
return
.end method
;public int show(String s)
.method public show(Ljava/lang/String;)I
;局部参数0保存this,局部参数1保存s
.limit locals 3 ;总共3个局部参数
.limit stack 2 ;stack最大值2
;String msg = "this_is_msg"; 保存到局部参数2中
ldc "this_is_msg" ;push
astore 2 ;pop to 变量2
;System.out.println(this);
getstatic java/lang/System/out Ljava/io/PrintStream; ;静态变量out保存到stack
aload 0 ;println的参数
invokevirtual java/io/PrintStream/println(Ljava/lang/Object;)V ;调用方法
;System.out.println(s);
getstatic java/lang/System/out Ljava/io/PrintStream;
aload 1
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
;System.out.println(msg);
getstatic java/lang/System/out Ljava/io/PrintStream;
aload 2
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
;this.title = "ttttttttttttt";
aload 0 ;this
ldc "ttttttttttttt" ;
putfield cn/test/Hello/title Ljava/lang/String;
;System.out.println(this.title);
getstatic java/lang/System/out Ljava/io/PrintStream;
aload 0 ;this
getfield cn/test/Hello/title Ljava/lang/String;
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
;return 100;
bipush 100
ireturn
.end method
;public static void main(String[] args)
.method public static main([Ljava/lang/String;)V
.limit locals 3
.limit stack 3
;System.out.println("test begin");
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "test begin"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
;Hello h = new Hello("hhhhhhh");
new cn/test/Hello
dup
ldc "hhhhhhh"
invokespecial cn/test/Hello/<init>(Ljava/lang/String;)V
;int r = h.show("call show");
astore 1 ;这两句多余
aload 1
ldc "call show"
invokevirtual cn/test/Hello/show(Ljava/lang/String;)I
istore 2
;System.out.println(r);
getstatic java/lang/System/out Ljava/io/PrintStream;
iload 2
invokevirtual java/io/PrintStream/println(I)V
return
.end method
jar转成Jasmin文件: dex2jar\d2j-jar2jasmin.bat -f some.jar
参考
http://jasmin.sourceforge.net/guide.html
http://jasmin.sourceforge.net/instructions.html
分享到:
相关推荐
** Jasmin 概述 ** Jasmin 是一个开源的 Java 字节码汇编器,它允许程序员以类似于汇编语言的方式编写 JVM(Java 虚拟机)字节码。由 Neil Fraser 创建,Jasmin 提供了一种低级别的接口来创建和理解 Java 类文件。...
Java汇编语言编译器Jasmin是Java开发者和研究者的一个强大工具,它允许用户用简单的ASCII文本格式编写Java字节码,并将其转换为可执行的.class文件。这个名为"jasmin-2.4.zip"的压缩包包含了Jasmin的版本2.4,它是对...
JASMIN框架是一种支持并行自适应结构网格应用的软件框架,其核心目标是快速研制和实现能解决多物理、多尺度、多介质、多组分复杂流动问题的并行程序。JASMIN框架的设计与实现中,涉及到核心数据结构的设计以及动态...
在学习使用soot工具(2.5.0)时,总是提示jasmin/Main中缺少assemble(StreamInput,StreamOut,boolean)函数,能在网上直接下载的jasmin版本都没有这个函数,或者参数不对。这个jar包是通过源文件编译好的,可以供soot...
《使用 Jasmin 实现的小游戏:五子棋》 在 IT 领域,Java 语言因其跨平台性与高效性而备受青睐。而在 Java 世界中,Jasmin 是一款重要的工具,它是一个用于汇编 Java 字节码的开源框架。本项目“jasmin实现的小游戏...
Jasmin Web面板 Jasmin SMS Web界面目录:安装和部署开始之前,请确保已在服务器上安装并运行 。安装下载并提取文件夹我们建议在virtualenv安装python依赖项安装依赖项: 使用python >= 3.5该版本确保已安装在系统上...
Jasmin-开源短信网关 介绍 Jasmin是一个非常完整的开源SMS网关,具有许多企业级功能,例如: SMPP客户端/服务器 HTTP客户端/服务器 基于控制台的配置,无需重新启动服务 基于AMQP代理,用于存储转发机制和其他排队...
Jasmin是一个高度可扩展的短消息协议网关,它支持SMPP协议,可以连接到全球各地的短信服务中心(SMSCs)。HTTP API是Jasmin提供的一个接口,允许开发者通过HTTP请求发送短信,查询状态,甚至进行更复杂的操作,如...
Jasmin是一个开源的SMS网关,它提供了一种强大的方式来处理短信通信。这款插件,名为"plugin-jasmin",是专门为playSMS设计的,允许用户通过HTTP API接口与Jasmin网关进行交互。playSMS是一款流行的开源短信应用程序...
fwtheme-django-jasmin Django应用程序,为基于JASMIN的基于Django的Web应用程序提供Django框架主题。 需要较低级别的fwtheme-django。 ## 安装可以使用pip从Github直接安装fwtheme-django-jasmin进行开发,但对于...
为了与Jasmin通信,我们需要创建一个API客户端。在Laravel项目中创建一个新的服务提供商,例如`JasminHttpApiServiceProvider`,并注册到`config/app.php`的`providers`数组中。然后,在服务提供者中编写一个`...
Jasmin 提出的一些问题。 特别是,有几个人问我 Jasmin 是什么,为什么他们可能会使用 Jasmin,以及我为什么要写它。 我试图在下面给出这些问题的一些答案。 什么是茉莉花? Jasmin 是一个 Java 汇编程序接口。 它...
为了改进惯性约束聚变(ICF)中激光聚变数值模拟的传统程序,应用物理与计算数学研究所(IAPCM)于2004年初始化了名为J自适应结构网格应用基础设施(JASMIN)的软件基础结构。 JASMIN的目标是加速并行程序的开发,...
【Jasmin Ransomware:模拟勒索软件攻击的红队工具】 Jasmin Ransomware 是一个专门设计用于安全测试和红队行动的高级工具,它能够模拟真实世界中的勒索软件攻击行为,帮助网络安全专业人员评估组织的防护能力和...
Jasmin是x86汇编语言的解释器,具有用于教育目的的功能全面的开发环境。
**茉莉(Jasmin): 一个Java汇编器** 茉莉(Jasmin)是一个开源的、基于文本的Java字节码汇编器,由Patrick Niemeyer和Leonard Muellner开发。它允许程序员使用类汇编语言来编写Java虚拟机(JVM)可执行的.class文件...
资源分类:Python库 所属语言:Python 资源全名:jasmin-0.6b35.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
本项目“MiniC到Jasmin”专注于将MiniC语言的源代码转化为Java虚拟机(JVM)能够执行的字节码,这是编译器设计和实现的一个典型示例。MiniC是一种简化的C语言变体,用于教学和学习编译器构造的基础概念。Jasmin,另...
Jasmin README 文件 2012 年 1 月 22 日,Eric Bodden 欢迎使用 Jasmin 版本 sable-3.0.2-SNAPSHOT。 这是 jasmin 的专用版本,用作 Soot 框架的后端。 请注意,在 Jonathan Meyer 的许可下,该软件包根据 GNU 宽松...