`

Jasmin simple example

阅读更多
.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 

Word Size

指令

 eclipse插件

分享到:
评论

相关推荐

    jasmin+本人写的一些jasmin程序

    ** Jasmin 概述 ** Jasmin 是一个开源的 Java 字节码汇编器,它允许程序员以类似于汇编语言的方式编写 JVM(Java 虚拟机)字节码。由 Neil Fraser 创建,Jasmin 提供了一种低级别的接口来创建和理解 Java 类文件。...

    jasmin-2.4.zip

    Java汇编语言编译器Jasmin是Java开发者和研究者的一个强大工具,它允许用户用简单的ASCII文本格式编写Java字节码,并将其转换为可执行的.class文件。这个名为"jasmin-2.4.zip"的压缩包包含了Jasmin的版本2.4,它是对...

    JASMIN框架中核心数据结构的设计与实现.pdf

    JASMIN框架是一种支持并行自适应结构网格应用的软件框架,其核心目标是快速研制和实现能解决多物理、多尺度、多介质、多组分复杂流动问题的并行程序。JASMIN框架的设计与实现中,涉及到核心数据结构的设计以及动态...

    jasminclasses-2.2.1.jar、jasmin-2.2.1.jar

    在学习使用soot工具(2.5.0)时,总是提示jasmin/Main中缺少assemble(StreamInput,StreamOut,boolean)函数,能在网上直接下载的jasmin版本都没有这个函数,或者参数不对。这个jar包是通过源文件编译好的,可以供soot...

    jasmin实现的小游戏--五子棋

    《使用 Jasmin 实现的小游戏:五子棋》 在 IT 领域,Java 语言因其跨平台性与高效性而备受青睐。而在 Java 世界中,Jasmin 是一款重要的工具,它是一个用于汇编 Java 字节码的开源框架。本项目“jasmin实现的小游戏...

    jasmin-web-panel:for用于Jasmin SMS网关的Jasmin Web面板

    Jasmin Web面板 Jasmin SMS Web界面目录:安装和部署开始之前,请确保已在服务器上安装并运行 。安装下载并提取文件夹我们建议在virtualenv安装python依赖项安装依赖项: 使用python &gt;= 3.5该版本确保已安装在系统上...

    jasmin:Jasmin-开源短信网关-Open source

    Jasmin-开源短信网关 介绍 Jasmin是一个非常完整的开源SMS网关,具有许多企业级功能,例如: SMPP客户端/服务器 HTTP客户端/服务器 基于控制台的配置,无需重新启动服务 基于AMQP代理,用于存储转发机制和其他排队...

    Laravel开发-jasmin-http-api

    Jasmin是一个高度可扩展的短消息协议网关,它支持SMPP协议,可以连接到全球各地的短信服务中心(SMSCs)。HTTP API是Jasmin提供的一个接口,允许开发者通过HTTP请求发送短信,查询状态,甚至进行更复杂的操作,如...

    plugin-jasmin:通过HTTP API的Jasmin的playSMS网关插件-http

    Jasmin是一个开源的SMS网关,它提供了一种强大的方式来处理短信通信。这款插件,名为"plugin-jasmin",是专门为playSMS设计的,允许用户通过HTTP API接口与Jasmin网关进行交互。playSMS是一款流行的开源短信应用程序...

    fwtheme-django-jasmin:Django组件的框架主题,JASMIN品牌

    fwtheme-django-jasmin Django应用程序,为基于JASMIN的基于Django的Web应用程序提供Django框架主题。 需要较低级别的fwtheme-django。 ## 安装可以使用pip从Github直接安装fwtheme-django-jasmin进行开发,但对于...

    Laravel开发-jasmin-http-api .zip.zip

    为了与Jasmin通信,我们需要创建一个API客户端。在Laravel项目中创建一个新的服务提供商,例如`JasminHttpApiServiceProvider`,并注册到`config/app.php`的`providers`数组中。然后,在服务提供者中编写一个`...

    java高级笔试题及答案-jasmin:Jasmin是Java虚拟机的汇编器:tent:

    Jasmin 提出的一些问题。 特别是,有几个人问我 Jasmin 是什么,为什么他们可能会使用 Jasmin,以及我为什么要写它。 我试图在下面给出这些问题的一些答案。 什么是茉莉花? Jasmin 是一个 Java 汇编程序接口。 它...

    JASMIN:用于科学计算的并行软件基础架构

    为了改进惯性约束聚变(ICF)中激光聚变数值模拟的传统程序,应用物理与计算数学研究所(IAPCM)于2004年初始化了名为J自适应结构网格应用基础设施(JASMIN)的软件基础结构。 JASMIN的目标是加速并行程序的开发,...

    精品软件工具--Jasmin Ransomware 是一款用于模拟真实勒索软件攻击的高级红队工具(WannaCry C.zip

    【Jasmin Ransomware:模拟勒索软件攻击的红队工具】 Jasmin Ransomware 是一个专门设计用于安全测试和红队行动的高级工具,它能够模拟真实世界中的勒索软件攻击行为,帮助网络安全专业人员评估组织的防护能力和...

    jasmin-开源

    Jasmin是x86汇编语言的解释器,具有用于教育目的的功能全面的开发环境。

    Jasmin:用于Java汇编器

    **茉莉(Jasmin): 一个Java汇编器** 茉莉(Jasmin)是一个开源的、基于文本的Java字节码汇编器,由Patrick Niemeyer和Leonard Muellner开发。它允许程序员使用类汇编语言来编写Java虚拟机(JVM)可执行的.class文件...

    Python库 | jasmin-0.6b35.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:jasmin-0.6b35.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    minic-to-jasmin:从 code.google.compminic-to-jasmin 自动导出

    本项目“MiniC到Jasmin”专注于将MiniC语言的源代码转化为Java虚拟机(JVM)能够执行的字节码,这是编译器设计和实现的一个典型示例。MiniC是一种简化的C语言变体,用于教学和学习编译器构造的基础概念。Jasmin,另...

    java最新基础笔试题-jasmin:茉莉花

    Jasmin README 文件 2012 年 1 月 22 日,Eric Bodden 欢迎使用 Jasmin 版本 sable-3.0.2-SNAPSHOT。 这是 jasmin 的专用版本,用作 Soot 框架的后端。 请注意,在 Jonathan Meyer 的许可下,该软件包根据 GNU 宽松...

Global site tag (gtag.js) - Google Analytics