解析Smali代碼入門


解析Smali代碼入門


# Java Code
#public class HelloWorld {

#   push static void main(String[] args){
#   System.out.println("Hello World!");
#   }

#}
#
# int       -> I
# String     -> Ljava/lang/String;

# smali Code
.class public LHelloWorld;
#相當於 public class HelloWorld


#這里告訴你如何反編譯smali格式成dex格式,並運行它,會在控制台輸出helloworld字符串。
#Ye olde hello world application
#To assemble and run this on a phone or emulator:
#
#java -jar smali.jar -o classes.dex HelloWorld.smali
#zip HelloWorld.zip classes.dex
#
#adb push HelloWorld.zip /data/local
#adb shell dalvikvm -cp /data/local/HelloWorld.zip HelloWorld
#
#if you get out of memory type errors when running smali.jar, try
#
#java -Xmx512m -jar smali.jar HelloWorld.smali
#instead

.super Ljava/lang/Object;
# 繼承自父類 Object extends Object

.method public static main([Ljava/lang/String;)V
#方法 static void main();
#registers 說明了用到2個寄存器
   .registers 2
    # System.out
    # 用sget-object指令把System里面類型為PrintStream的out放到了v0
    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
# 字符串放到v1
    const-string v1, "Hello World!"
    #System.out.println("");
    # 把v1當成參數調用v0的void println(str)方法;
    invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
# 返回
    return-void
.end method


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM