安卓破解软件需懂的Smali语法

Smali中语法:

类型

v   void  只能用于返回值类型

Z   boolean

B   byte

S   short

C   char

I    int

J    long 2个寄存器

F   float

D   double  2个寄存器

对象类型:Lpackage/name/ObjectName;  相当于java中的package.name.ObjectName;解释如下:

L:表示这是一个对象类型

package/name:该对象所在的包

;:表示对象名称的结束

数组的表示形式

[I  :表示一个整形的一维数组,相当于java的int[];

对于多维数组,只要增加[ 就行了,[[I = int[][];注:每一维最多255个;

对象数组的表示形式:

[Ljava/lang/String    表示一个String的对象数组;

方法调用的表示形式:

Lpackage/name/ObjectName;——>methodName(III)Z  详解如下:

Lpackage/name/ObjectName  表示类型

methodName   表示方法名

III   表示参数(这里表示为3个整型参数)

说明:方法的参数是一个接一个的,中间没有隔开;

method(I [[I I Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

method(int,int[][],int,String,Object[])

在java中则为:
String method(int, int[][], int, String, Object[])

 

字段的表示形式

Lpackage/name/ObjectName;——>FieldName:Ljava/lang/String;

即表示: 包名,字段名和各字段类型

有两种方式指定一个方法中有多少寄存器是可用的:

 .registers  指令指定了方法中寄存器的总数

.locals        指令表明了方法中非参寄存器的总数,出现在方法中的第一行

方法的传参:

当一个方法被调用的时候,方法的参数被置于最后N个寄存器中。如果一个方法有2个参数,5个寄存器(v0-v4),那么参数将置于最后2个寄存器——v3和v4。 非静态方法中的第一个参数总是调用该方法的对象。
例如,非静态方法LMyObject;->callMe(II)V有2个整型参数,另外还有一个隐含的LMyObject;参数,所以总共有3个参数。假如在该方法中指定了5个寄存器(v0-v4),以.registers方式指定5个或以.locals方式指定2个(即2个local寄存器+3个参数寄存器)。当该方法被调用的时候,调用该方法的对象(即this引用)存放在v2中,第一个整型参数存放在v3中,第二个整型参数存放在v4中。

寄存器的命名方式:

 V命名

P命名  第一个寄存器就是方法中的第一个参数寄存器

比较:使用P命名是为了防止以后如果在方法中增加寄存器,需要对参数寄存器重新进行编号的缺点

特别说明一下:Long和Double类型是64位的,需要2个寄存器

例如:对于非静态方法

LMyObject——>myMethod(IJZ)V;

有4个参数:LMyObject,int,long,bool;   需要5个寄存器来存储参数;

P0    this

P1    I (int)

P2,P3  J (long)

P4    Z(bool)

补充:
@ static fields 定义静态变量的标记
@ instance fields 定义实例变量的标记
@ direct methods 定义静态方法的标记
@virtual methods 定义非静态方法的标记
构造函数的返回类型为V,名字为<init>。

if-eq p1, v0, :cond8 表示如果p1和v0相等,则执行cond8的流程:
:cond8
invoke-direct {p0}, Lcom/paul/test/a;->d()V
调用com.paul.test.a的d()方法
if-ne p1, v0, :condb 表示不相等则执行condb的流程:
:condb
invoke-direct {p0}, Lcom/paul/test/a;->c()V

时间: 2024-10-26 11:10:44

安卓破解软件需懂的Smali语法的相关文章

安卓动态调试七种武器之长生剑 - Smali Instrumentation

安卓动态调试七种武器之长生剑 - Smali Instrumentation 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器.因此,笔者将会在这一系列文章中(共7篇)分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用. 0x01 长生剑 长生剑是把神奇的剑,为白玉京所配,剑名取

[转载]安卓动态调试七种武器之长生剑 - Smali Instrumentation

本文转载自: http://drops.wooyun.org/papers/6045 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器.因此,笔者将会在这一系列文章中分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用. 目录如下: 安卓动态调试七种武器之长生剑 - Smali Instrumentati

AOPR密码破解软件比AOPB更强大

AOPR全称Advanced Office Password Recovery,AOPB全称Advanced Office Password Breaker,均为Office密码破解软件,但是AOPR的强大功能完全可以碾压AOPB.在本篇文章中,小编将为你一一介绍这两款软件之间的区别. Office密码破解工具的应用原理 在现代社会,时间就是金钱,这点毋庸置疑.而另一个真理是,当某些东西变成绝对必要的时候,将会失去这个东西.例如,花费数小时写成的Word文档或PPT演示文稿以及即将要发送给经理的

apk反汇编之smali语法

类型 Dalvik的字节码中拥有两个主要的类型:基类和引用类型.引用类型 引用类型是对象和数组,其他的一切都是基类   基类被一个简单的字符描述.我没有提出这些缩写词———他们实际以字符串的形式存储于dex文件中 他们被定义与dex格式网页文档中(在AOSP库中的路径是dalvik/docs/dex-format.html) V  空类型---仅仅可以用来作为返回类型 Z  Boolean 布尔型 B  Byte字节型 S  Short短整型(16位) C  Char字符型 I  Int 整形

QQ空间一键删除留言破解软件

该破解软件批量删除空间说说.日志.留言.相册.分享.访客.微博等 由于腾讯限制,软件一天只能删除一两百条 ,无需告诉别人密码 ,自己即可删除,保护自己空间隐私不外泄.软件破解图如下: 破解版软件下载地址: 下载地址1  下载地址2   下载地址3

Smali语法简单介绍

Smali语言其实就是Davlik的寄存器语言: Smali语言就是android的应用程序.apk通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件,文件的展示语言. Smali语法简单介绍如下: Davlik字节码中,寄存器都是32位的,能够支持任何类型,64位类型(Long/Double)用2个寄存器表示: Dalvik字节码有两种类型:原始类型:引用类型(包括对象和数组)   原始类型:v   void  只能用于返回值类型 Z   boolean

破解软件下载站点

对于有些人对某些软件要购买序列号很苦恼,今天我为大家推荐一些站点,能提供某些破解软件 一:3DMgame(是国内著名的游戏破解站) 许多游戏发布不久之后就被破解了,在这个地方都可以找到,相信一些游戏的爱好者一定会喜欢上这里. 二:大眼仔 这里许多的软件都是由站长亲自破解,相信大伙访问这里一定会爱上这里,爱整软件的就转移到这里来吧1 三:轻志狂 这里的软件方向主要是净化和优化了的 四:吾爱破解 是国内最大的破解论坛,破解方向很广泛.

带你认识Office密码破解软件的攻击先锋

如果将Advanced Office Password Recovery破解Office文档密码形容成一场战争,那AOPR的初步攻击一定是这场战争的先锋官.初步攻击是AOPR尝试破解密码的第一个攻击,一般就会首战告捷.本文将带你了解并掌握Office密码破解软件的初步攻击的使用方法. AOPR攻击先锋是如何工作的 初步攻击是一组事先定义好的攻击,它一般在AOPR不能立刻恢复密码的时候开始尝试破解密码.初步攻击一般有4个攻击步骤,依次是查找密码攻击.密码缓存预破解.初步字典破解.初步暴力破解.在A

带你认识Office密码破解软件的加速器

Advanced Office Password Recovery能够在同类软件中脱颖而出的重要原因之一就是极快的破解速度,而这一优势依托于Office密码破解软件的加速器,本文将主要介绍AOPR的加速器. Office文档密码难以破解的原因 从Office 2007开始,微软不断升级密码保护强度,连不常用的OpenDocument和韩文Office密码都十分牢固.在最新版Office 2013中微软又进一步提高保护实力,并且在Office 2013中使用的都是计算密集型加密方式.因此Offic