smali语法积累记录】的更多相关文章

1.constructor 我们知道运行一个类的时候会先调用static方法中的内容,比如: static { System.loadLibrary("qihooTest"); } 为什么呢? 上面这段代码用smali语言写出来是这样的: .method static constructor <clinit>()V #不带参数的构造方法 .locals 1 .prologue .line 64 const-string v0, "qihooTest" i…
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 整形…
初学者可以从查询到现在的pl/sql的内容都可以在我这里的笔记中找到,希望能帮到大家,视频资源在 资源, 我自己的全套笔记在  笔记 在pl/sql中可以继续使用的sql关键字有:update delete insert select--into commit  rollback savepoint   ,在这里需要注意的是查询跟以前有些不一样了 plsql由三个块组成:声明部分,执行部分,异常处理部分 declare:在此声明pl/sql用到的变量,类型及游标,以及局部的存储过程的和函数 be…
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…
项目中使用到了Oracle的MERGE INTO语句,在这里简单记录下使用方法 使用场景如下: 存在对一张数据量很大的表,你需要对里面的大量数据进行更新,如果数据不存在,就进行插入的操作. 常规想到的办法是先根据条件查询一番,如 果存在,那么就更新,否则就插入? 起始在Oracle9i 后可以用merge into轻轻松松搞定这个问题,避免多次的查询判断以及更新插入操作,而且效率更高 1.merge into简介 用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连…
一.什么是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…
Smali是什么 Smali是Android虚拟机的反汇编语言. 我们都知道,Android代码一般是用java编写的,执行java程序一般需要用到java虚拟机,在Android平台上也不例外,但是出于性能上的考虑,并没有使用标准的JVM,而是使用专门的Android虚拟机(5.0以下为Dalvik,5.0以上为ART).Android虚拟机的可执行文件并不是普通的class文件,而是再重新整合打包后生成的dex文件.dex文件反编译之后就是Smali代码,所以说,Smali语言是Androi…
大神写了一个Robot Framework的脚本,好多语法之前没接触过,就有了这篇,记录下来一起学习,欢迎纠错 第二三四五列,一般是入参,红色的表示必填的入参.浅灰色表示选填的入参.深灰色表示无需填写. 1.&{接口名} &{task}=  :接口自定义名称 POST:接口请求类型 /v1/task/submit:接口请求路径 {"platform": "amazon", "puid": ${puid}, "shop&q…
一.smali的包中信息 .class public Lcom/aaaaa; .super Lcom/bbbbb; .source "ccccc.java" 1.它是com.aaaaa这个package下的类 2.继承自com.bbbbb 3.由ccccc.java编译得到的smali文件 二.smali中的声明 # annotations .annotation system Ldalvik/annotation/MemberClasses; value = {Lcom/aaa$qq…
9.Lambda表达式 [1]Lambda表达式缩写推演,如下图: [2]Lambda语句:=>右边有一个语句块(大括号"{}"):Lambda表达式:=>右边只有一个表达式. [3]Lambda本身无类型,不可赋值给var变量: [4]编译时会生成一个静态方法,然后再实例化成委托传递使用: Lambda详见:Lambda表达式 10.标准查询运算符(SQO) "标准查询运算符"是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,…
1.自动属性 之前的实现方式: private int id; public int Id { set {id = value;} get {return id;} } 现在可通过自动属性实现: public int Id{ get;  set; } 2.推断类型(var):推断类型,又名隐式类型,使用var关键字,可以是内置类型.匿名类型.用户定义类型或 .NET Framework 类库中定义的类型. 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型 var.隐式…
在这一节,我们来介绍一下内部类.对于Java文件中的每一个内部类,都会产生一个单独的smali文件,比如ActivityThread$1.smali.这些文件的命名规范是如果是匿名内部类,则命名规则是外部类+$+数字,否则的话是外部类+$+内部类的名字.    当在内部类中调用外部类的私有方法时,编译器会自动合成一个静态函数.比如下面这个类:public class  Hello {    public class  A {        void  func() {            se…
一 .smali数据类型 1.Dalvik字节码 Davlik字节码中,寄存器都是32位的,能够支持任何类型,64位类型(Long/Double)用2个连续的寄存器表示: Dalvik字节码有两种类型:原始类型:引用类型(包括对象和数组) 原始类型:          v   void  只能用于返回值类型           Z   boolean           B   byte           S   short           C   char           I   …
一.smali的包中信息 .class  public Lcom/aaaaa;.super  Lcom/bbbbb;.source "ccccc.java" 1.它是com.aaaaa这个package下的类2.继承自com.bbbbb3.由ccccc.java编译得到的smali文件 二.smali中的声明 # annotations .annotation system Ldalvik/annotation/MemberClasses; value = {Lcom/aaa$qqq;…
http://ruby-china.org/topics/8307 http://www.daqianduan.com/4820.html http://www.cnblogs.com/ruochenchen/archive/2013/01/03/2843285.html http://bbs.pediy.com/showthread.php?t=179388 https://github.com/ShaneWilton/sublime-smali/blob/master/smali.tmLan…
数据类型 dalvik字节码有两种类型,原始类型和引用类型.对象和数组是引用类型,其它都是原始类型. smali数据类型都是用一个字母表示,如果你熟悉Java的数据类型,你会发现表示smali数据类型的字母其实是Java基本数据类型首字母的大写,除boolean类型外,在smail中用大写的”Z”表示boolean类型. V void,只能用于返回值类型 Z boolean B byte S short C char I int J long (64 bits) F float D double…
预备知识 DDMS Dalvik Debug Monitor Serivce,Dalvik调试监控服务,为Android SDK提供的一款拥有监控Dalvik虚拟机的调试软件,启动文件位于<Andorid SDK>/tools/monitor.bat(低版本的SDK为ddms.bat)     adb forward命令 用于创建一个端口映射,将本地端口(PC端口)映射到远程端口(手机端口),例如: adb forward tcp:8001 tcp:8002 之后PC端访问8001端口的数据包…
前面,我们在谈INSERT语句时,使用两种语句:INSERT…SELECT  和  INSERT…VALUES. INSERT…SELECT可以使用子查询.因为在写SELECT时.  ***  =    ***,这就是子查询. 我们还以tdb_goods这张表为例,这张表目前一共有22条数据,但是这22条数据中有很多重复的信息,下面我们简单来查看一下. select * from tdb_goods\G; 比如这21.22条记录,他们的商品类别都是笔记本配件,他们的品牌都是索尼.这些都是重复的信…
刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young to simple啊,程序员的苦逼日子开始了,特地记录如下. 在学习ROS的helloworld程序时,发现,ROS中居然使用cmake编译,头大,一不做二不休,看书练习.记录如下,环境kubuntu 18.04系统,最新升级的,目录/home/municationk/WORKM/cmake/t1 两个文件main.c…
学习内容参考来源:www.runoob.com JOIN准备 --为了方便练习,在数据库中创建演示数据: create database TEST; use TEST ; ---------- go --建立[网站信息表],可以视作基础资料表: create table website (id int primary key, name varchar(255), url varchar(255), alexa varchar(255), country varchar(255) ) inser…
标题示例 === 标题示例 ---- #标题示例 ##标题示例 ###标题示例 >引用示例 >>引用示例 >>> 引用示例 _斜体示例_ *斜体示例* __粗体示例__ **粗体示例** + 无序列表示例 * 无序列表示例 - 无序列表示例 > 建议一个文档中只使用一种无序列表方式 1. 有序列表 2. 有序列表 这是一个链接示例:[张飞_博客](http://www.cnblogs.com/zhangfei/p/) 这是一个链接示例:[张飞_博客][1] [1]…
作者:Gabor Paller    翻译:YULIANGMAX v1.0 表中的vx.vy.vz表示某个Dalvik寄存器.根据不同指令可以访问16.256或64K寄存器. 表中lit4.lit8.lit16.lit32.lit64表示字面值(直接赋值),数字是值所占用位的长度. long和double型的值占用两个寄存器,例:一个在v0寄存器的double值实际占用v0,v1两个寄存器. boolean值的存储实际是1和0,1为真.0为假:boolean型的值实际是转成int型的值进行操作.…
from http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html Dalvik opcodes Author: Gabor Paller Vx values in the table denote a Dalvik register. Depending on the instruction, 16, 256 or 64k registers can be accessed. Operations on long and double v…