这一篇文章是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。Smali是一种低级的、汇编式的语言,通常用于Android应用的逆向工程,而...
### Smali中文语法详细说明 #### 一、概述 Smali是一种用于Dalvik虚拟机的汇编语言,它主要用于反编译DEX文件为人类可读的形式。本文将详细介绍Smali的基本语法及其各种操作码的使用方式,这对于理解Android应用...
【Smali格式查看器】是一种专门用于分析和查看Android应用APK文件中Smali代码的工具。Smali是Dalvik虚拟机(Android系统使用的虚拟机)的汇编语言,它是反编译APK后得到的中间层代码。由于Android应用是用Java编写的...
【smali学习资料大全】 在Android应用开发领域,尤其是对系统级别的修改或者逆向工程有研究的开发者,smali语言是无法绕过的一环。它是一种汇编级别的语言,用于编译Android应用的字节码(Dalvik Executable, .dex...
5. 实战演练:通过具体实例展示Smali开发的应用,比如实现一个简单的HelloWorld程序,去除APK中的广告,以及对Android系统进行定制。 6. 常见问题:列出一些在进行Smali开发时可能遇到的问题,并提供相应的解决方案...
smali, smali/baksmali smali/baksmali是dalvik使用的dex格式的汇编器/反汇编程序,它是android虚拟机实现的。 这种语法基于jasmin的/dedexer语法,支持dex格式( 注释。调试信息。行信息。等等 )的全部功能。下载...
本文将深入探讨“android 反编译smali工具”,包括smali、smali-1.4.2.jar、baksmali-1.4.2.jar以及baksmali这四个工具,它们在Android反编译流程中的作用和使用方法。 首先,我们要知道,Android应用程序主要由...
`templatex.smali`是一个示例Smali文件,它可能包含了各种Smali指令的使用,如方法定义、变量声明、控制流指令(如`if`、`goto`)和数据处理指令(如`add-int`, `mul-float`等)。通过分析这个模板文件,你可以看到...
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 ...
《深入理解Apk反编译技术:以Smali2JavaUI工具为例》 在移动应用开发领域,了解Apk反编译技术对于开发者而言至关重要,无论是为了学习、调试,还是安全分析。今天我们将聚焦于一个名为"Smali2JavaUI"的神器,它是一...
《Smail分析转换工具Smali2Java:CTF逆向分析中的得力助手》 在信息安全领域,尤其是CTF(Capture The Flag)竞赛中,逆向工程是一项至关重要的技能。而Smali2Java,作为一款专门针对Android应用的逆向分析工具,...
文件夹内为smali语法中文手册(word版),介绍如下: Dalvik 虚拟机( Dalvik VM) 是 Google 专门为 Android 平台设计的一套虚拟机。 区别于标准 Java 虚拟机 JVM 的 class 文件格式, Dalvik VM 拥有专属的 DEX ...
[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转dex工具以及dex转smali .jar工具包,版本号V2.2.5baksmali-2.2.5.jar smali-2.2.5.jar是APK Android反编译工具,具体使用方法可参照网上相关教程进行。
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 ...
为了对APK进行逆向工程或者进行二次开发,有时我们需要对APK进行解包,而"smali11 用于解包"工具就是这样一个专门用于处理DEX文件的工具。它可以帮助我们查看和修改APK内部的代码,以理解应用的工作原理或者修复某些...
《深入解析smali2java源码》 在Android应用开发领域,我们经常接触到APK的逆向工程,其中,Smali是一种低级的字节码语言,用于表示Dalvik虚拟机(Android系统的运行环境)的指令。而"smali2java"是一个工具,它的...
smali语法中文.pdf smali是一种基于栈的中间语言,用于Android应用程序的反编译和重组。了解smali语法是 Android应用程序逆向工程和安全测试的重要一步。本文将对smali语法进行详细的介绍,包括基本语法、数据类型...
《深入理解Android Smali与BakSmali工具》 在Android应用开发中,Java源代码经过编译器处理后生成Dalvik字节码(.dex文件),这是Android系统执行的基础。然而,对于开发者来说,有时需要对这些字节码进行反编译或...