`
乾斌-朴
  • 浏览: 3464 次
  • 性别: 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开发详解-便宜版

    5. 实战演练:通过具体实例展示Smali开发的应用,比如实现一个简单的HelloWorld程序,去除APK中的广告,以及对Android系统进行定制。 6. 常见问题:列出一些在进行Smali开发时可能遇到的问题,并提供相应的解决方案...

    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 ...

    Smali2JavaUI apk反编译神器

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

    smali中文手册.zip

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

    smail分析转换工具 Smali2Java

    《Smail分析转换工具Smali2Java:CTF逆向分析中的得力助手》 在信息安全领域,尤其是CTF(Capture The Flag)竞赛中,逆向工程是一项至关重要的技能。而Smali2Java,作为一款专门针对Android应用的逆向分析工具,...

    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]...

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

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

    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反编译工具,具体使用方法可参照网上相关教程进行。

    Smali格式查看器

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

    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_BakSmali

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

    smali 语法 高亮

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

Global site tag (gtag.js) - Google Analytics