`
乾斌-朴
  • 浏览: 3439 次
  • 性别: Icon_minigender_1
  • 来自: 吉林省
最近访客 更多访客>>
社区版块
存档分类
最新评论

smali的 HelloWorld

 
阅读更多

这一篇文章是smali的入门教程

打开 notepad++ (怎样识别smali语法在另一片文章里介绍)

输入以下代码 : 

 

.class public LHelloWorld;
.super Ljava/lang/Object;
.method public static main([Ljava/lang/String;)V
    .registers 2
    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
    const-string v1, "Hello World!"
    invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
    return-void
.end method

 java -jar smali.jar -o classes.dex HelloWorld.smali (关于smali的介绍在另一片文章里有)

zip HelloWorld.zip classes.dex

adb push HelloWorld.zip /sdcard/

adb shell dalvikvm -cp /adcard/HelloWorld.zip HelloWorld

 

代码解释:

.class public LHelloWorld; 

定义一个 HelloWorld 类 L在java 里表示reference 类型

.super Ljava/lang/Object;

继承了Object 类,写java 代码时一般不需要显示的定义,但在.class .dex 或者smali编程时都是显示的表示(不要觉的麻烦,去适应它)

.method public static main([Ljava/lang/String;)V

V 表示返回值是void, [表示一个数组, 那么在这里是String数组, 

.registers 2 申请2个 virtual registers

sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;

把System类里的 out变量赋值给v0, 相当于System.out

const-string v1, "Hello World!"

给v1赋值 Hello World! 字符串 , 相当于 a = "Hello World!"

invoke-virtual {v0, v1} ,LJava/io/PrintStream;->println(Ljava/lang/String;)V

调用println()方法, v0 是 System.out, v1是“Hello WOrld!” 作为 println的第一个参数,记住指令集的第2个参数就是对应方法的第一个参数,以此类推。相当于 System.out.println("Hello World!");

原文 : http://code.google.com/p/smali/source/browse/examples/HelloWorld/HelloWorld.smali

分享到:
评论

相关推荐

    smali2java——直接将smali转换成java

    标题"smali2java——直接将smali转换成java"揭示了本文的核心主题,即一个名为"smali2java"的工具,它的主要功能是将编程语言Smali转换为Java。Smali是一种低级的、汇编式的语言,通常用于Android应用的逆向工程,而...

    smali中文语法详细说明

    ### Smali中文语法详细说明 #### 一、概述 Smali是一种用于Dalvik虚拟机的汇编语言,它主要用于反编译DEX文件为人类可读的形式。本文将详细介绍Smali的基本语法及其各种操作码的使用方式,这对于理解Android应用...

    smali学习资料大全

    【smali学习资料大全】 在Android应用开发领域,尤其是对系统级别的修改或者逆向工程有研究的开发者,smali语言是无法绕过的一环。它是一种汇编级别的语言,用于编译Android应用的字节码(Dalvik Executable, .dex...

    smali, smali/baksmali.zip

    smali, smali/baksmali smali/baksmali是dalvik使用的dex格式的汇编器/反汇编程序,它是android虚拟机实现的。 这种语法基于jasmin的/dedexer语法,支持dex格式( 注释。调试信息。行信息。等等 )的全部功能。下载...

    android 反编译smali工具

    本文将深入探讨“android 反编译smali工具”,包括smali、smali-1.4.2.jar、baksmali-1.4.2.jar以及baksmali这四个工具,它们在Android反编译流程中的作用和使用方法。 首先,我们要知道,Android应用程序主要由...

    smali语法高亮文件

    `templatex.smali`是一个示例Smali文件,它可能包含了各种Smali指令的使用,如方法定义、变量声明、控制流指令(如`if`、`goto`)和数据处理指令(如`add-int`, `mul-float`等)。通过分析这个模板文件,你可以看到...

    smali_v2.2.2

    smali android smali android smali android smali android smali android smali android smali android smali android smali android smali android smali android smali android smali android smali android ...

    smali-jar2.2.1工具(smali.jar/baksmali.jar)

    **Android反编译与Smali工具详解** 在Android应用开发中,APK文件是最终部署到用户设备上的可执行格式,它包含了应用的所有资源、代码和元数据。然而,APK文件中的Java代码通常被Dalvik虚拟机的字节码(Dalvik ...

    smali中文手册.zip

    文件夹内为smali语法中文手册(word版),介绍如下: Dalvik 虚拟机( Dalvik VM) 是 Google 专门为 Android 平台设计的一套虚拟机。 区别于标准 Java 虚拟机 JVM 的 class 文件格式, Dalvik VM 拥有专属的 DEX ...

    smali-2.5.2.jar

    [jar包下载,包含:smali-2.5.2.jar 和baksmali,jar下载 ](https://bitbucket.org/JesusFreke/smali/downloads/) #### 使用文档 [.odex文件的反编译 - 0x01 odex转dex - 0x02 反编译APK]...

    Smali2JavaUI apk反编译神器

    《深入理解Apk反编译技术:以Smali2JavaUI工具为例》 在移动应用开发领域,了解Apk反编译技术对于开发者而言至关重要,无论是为了学习、调试,还是安全分析。今天我们将聚焦于一个名为"Smali2JavaUI"的神器,它是一...

    smali转dex_dex转smali工具V2.2.5.zip

    软件介绍: 最新版本的smali转dex工具以及dex转smali .jar工具包,版本号V2.2.5baksmali-2.2.5.jar smali-2.2.5.jar是APK Android反编译工具,具体使用方法可参照网上相关教程进行。

    smali2java.jar

    Smali2java is an utility for converting .smali to .java files without bytecode compiling/decompiling. Why not to use dex2jar? I have never told about it. Dex2jar is a good utility and smali2java is ...

    smali11 用于解包

    为了对APK进行逆向工程或者进行二次开发,有时我们需要对APK进行解包,而"smali11 用于解包"工具就是这样一个专门用于处理DEX文件的工具。它可以帮助我们查看和修改APK内部的代码,以理解应用的工作原理或者修复某些...

    smali2java 源码

    《深入解析smali2java源码》 在Android应用开发领域,我们经常接触到APK的逆向工程,其中,Smali是一种低级的字节码语言,用于表示Dalvik虚拟机(Android系统的运行环境)的指令。而"smali2java"是一个工具,它的...

    Smali格式查看器

    【Smali格式查看器】是一种专门用于分析和查看Android应用APK文件中Smali代码的工具。Smali是Dalvik虚拟机(Android系统使用的虚拟机)的汇编语言,它是反编译APK后得到的中间层代码。由于Android应用是用Java编写的...

    Smali_BakSmali

    《深入理解Android Smali与BakSmali工具》 在Android应用开发中,Java源代码经过编译器处理后生成Dalvik字节码(.dex文件),这是Android系统执行的基础。然而,对于开发者来说,有时需要对这些字节码进行反编译或...

    smali 语法 高亮

    在Android应用开发中,Dalvik虚拟机执行的字节码是用一种名为smali的汇编语言编写的。smali代码对于人类来说通常不易阅读,因为它是一种低级别的指令集,但通过特定的语法高亮和格式化,可以提高可读性,便于理解和...

    免费Java代码直接转化成smali的代码工具

    java代码直接转化成smali代码工具java代码直接转化成smali代码工具java代码直接转化成smali代码工具java代码直接转化成smali代码工具java代码直接转化成smali代码工具java代码直接转化成smali代码工具java代码直接...

Global site tag (gtag.js) - Google Analytics