关于SMALI语法】的更多相关文章

Smali背景: Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器.其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等). Smali,Baksmali分别是冰岛语中编译器,反编译器的叫法.也许你会问为什么是冰岛语呢,因为Dalvik是一个冰岛渔村名字.   Smali语法简单介绍如下: Davlik字节码中,寄存器都是32位的,能够支持任何类型,64位类型…
看阿里巴巴的<深入探索Android热修复>,里面的代码看不懂,一查才知道是Smali语法,百度了语法,转载如下 转载自smali 语言语法 1.smali apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件.smali语言是Davlik的寄存器语言,语法上和汇编语言相似,Dalvik VM与JVM的最大的区别之一就是Dalvik VM是基于寄存器的.基于寄存器的意思是,在smali里的所有操作都必须经过寄存器来进行. 2.基本数据类型 B—by…
Smali语言其实就是Davlik的寄存器语言: Smali语言就是android的应用程序.apk通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件,文件的展示语言. Smali语法简单介绍如下: Davlik字节码中,寄存器都是32位的,能够支持任何类型,64位类型(Long/Double)用2个寄存器表示: Dalvik字节码有两种类型:原始类型:引用类型(包括对象和数组)   原始类型:v   void  只能用于返回值类型 Z   boolean…
前言 前面我们有说过android反编译的工具,如何进行反编译.反编译后可以得到jar或者得到smali文件.Android采用的是java语言 进行开发,但是Android系统有自己的虚拟机Dalvik,代码编译最终不是采用的java的class,而是使用的smali.我们反编译得到的代 码,jar的话可能很多地方无法正确的解释出来,如果我们反编译的是smali则可以正确的理解程序的意思.因此,我们有必要熟悉smali语法. 类型的表示 java里面包含两种类型,原始类型和引用类型(包括对象)…
0x01.前言 Android采用的是java语言进行开发,但是Android系统有自己的虚拟机Dalvik,代码编译最终不是采用的java的class,而是使用的smali.我们反编译得到的代码,jar的话可能很多地方无法正确的解释出来,如果我们反编译的是smali则可以正确的理解程序的意思.因此,我们有必要熟悉smali语法. 0x02.关键字 .field private isFlag:z — 定义变量 .method — 方法 .parameter — 方法参数 .prologue —…
类型 Dalvik的字节码中拥有两个主要的类型:基类和引用类型.引用类型 引用类型是对象和数组,其他的一切都是基类   基类被一个简单的字符描述.我没有提出这些缩写词———他们实际以字符串的形式存储于dex文件中 他们被定义与dex格式网页文档中(在AOSP库中的路径是dalvik/docs/dex-format.html) V  空类型---仅仅可以用来作为返回类型 Z  Boolean 布尔型 B  Byte字节型 S  Short短整型(16位) C  Char字符型 I  Int 整形…
smali文件格式 每个smali文件都由若干条语句组成,所有的语句都遵循着一套语法规则.在smali 文件的头3 行描述了当前类的一些信息,格式如下: .class < 访问权限> [ 修饰关键字] < 类名> .super < 父类名> .source <源文件名> 打开MainActivity.smali 文件,头3 行代码如下: .class public Lcom/droider/crackme0502/MainActivity;     //指令…
数据类型 Dalvik字节码只有两种格式:基本类型和引用类型.对象和数组属于引用类型 语法 含义 V void,只用于返回值类型 Z boolean B byte S short C char I int J long F flot D double L Java类 类型 [ 数组类型 Ljava/lang/String; 相当于java.lang.String [I 相当于一维int数组,int[] [[I 相当于int[][] 方法 它使用方法名,参数类型和返回值来描述一个方法 packag…
一.什么是Smali? Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种dex格式文件的汇编器,反汇编器.其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等) 二.smali的语法 1.原始类型 B---byte C---char D---double F---float I---int J---long S---short V---void Z---boolean [XXX---array…
今天发现用Apktool和Jeb反编译出来的smali在语法上有一定区别,比如一个Java函数: private void packageNameCheck() { com.example.testfor360.MainActivity mm = new com.example.testfor360.MainActivity(); mm.packageNameCheck(); } 用Jeb反编译出来是这样的: .method private packageNameCheck()V .regist…