zoukankan      html  css  js  c++  java
  • [Android Security] 如何把java代码转换成smali代码

    copy : https://www.cnblogs.com/gordon0918/p/5466514.html

    1、概述

    Smali是Android系统中Dalvik虚拟机指令语言,在apk逆向过程中有许多工具可以把smali代码转化成java代码。但是在学习Smali语法的过程中,有时候需要进行java代码和smali代码的对照,如果可以把java代码转换成smali代码,学习起来岂不是很方便。于是网上搜了一把,很失望,都是各种转smali为java的工具。后来想了想,java变成smali不就是写android程序—>dex—>smali的过程嘛,然而java代码编译完是class文件,如何变成dex文件呢?后来在一本书中找到了答案,记录如下。

    2、java代码转smali代码

    把java代码转成smali代码共需要以下三个步骤

    1、编译java代码为class文件

    javac smaliTest.java

    这个比较简单,会生成smaliTest.class文件

    2、把class文件转成dex文件

    我们知道apk包里java代码最后生成的是class.dex文件,把class转化成dex文件就需要用到android SDK提供的一个工具dx,该jar包位于android-sdkuild-tools23.0.1lib,找到该包后执行以下命令

    java -jar dx.jar --dex --output=smaliTest.dex smaliTest.class

    3、把dex转化成smali文件

    这时候会使用到另外一个工具baksmali,该工具位于android-sdkplatform-tools,找到该包后执行以下命令

    java -jar baksmali.jar smaliTest.dex

    OK,完成,此时会生成一个out目录,在out目录下的smaliTest.smali就是我们要看到的smali代码了

    3、示例程序

    java代码如下:

    public class smaliTest {
           public static void main(String[] args){
               System.out.println("hello smali");
           }
       }

    smali代码如下

    复制代码
    .class LsmaliTest;
    .super Ljava/lang/Object;
    .source "smaliTest.java"
    
    
    # direct methods
    .method constructor <init>()V
        .registers 1
    
        .prologue
        .line 3
        invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    
        return-void
    .end method
    
    .method public static main([Ljava/lang/String;)V
        .registers 3
        .parameter
    
        .prologue
        .line 5
        sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
    
        const-string v1, "hello smali"
    
        invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
    
        .line 6
        return-void
    .end method
  • 相关阅读:
    slf4j + log4j 记录日志
    Executors介绍
    Java集合(JDK1.6.0_45)
    Java多线程系列目录(共43篇)
    线程池体系
    FutureTask
    23种设计模式分类
    结构型 之 适配器模式
    信号量Semaphore详解以及应用
    Excel格式转化工具
  • 原文地址:https://www.cnblogs.com/0616--ataozhijia/p/8919504.html
Copyright © 2011-2022 走看看