美文网首页
Android逆向——Smali语法

Android逆向——Smali语法

作者: 冰至如归 | 来源:发表于2019-08-19 14:38 被阅读0次

一、android盗版软件大部分都是二次打包完成的。基本上就是反编译,注入广告,打包签名,上传市场。其中注入广告或者破解游戏都是通过smali来达到的。smali就是DVM内部执行的核心代码!

二、语法

1.dalvik字节码有两种类型,原始类型和引用类型。对象和数组属于引用类型。其他的都是原始类型。

2.原始类型:

V void 返回值类型

Z boolean

B  byte

S short

C char

I int

J long(64位)

F float

D double(64位)

3.对象类型

对象的表示以L开头,格式是LpackageName/objectName;,

String对象在smali中为:Ljava/lang/String;

内部类对象为:LpackageName/objectName$subObjectName;在内部类前加$符号

4.数组类型

int[]      [I

int[][]    [[I

String[]  [Ljava/lang/String;

5.方法

Lpackage/name/ObjectName;

->MethodName(III)Z

翻译成java是:Lpackage/name/ObjectName表示包名;MethodName是方法名;III表示三个整型参数;Z表示返回boolean类型

方法的参数是连接起来的没有分隔符

fool()V-----------------void foo()

set(Ljava/lang/String;Ljava/lang/String;I)V---------------void set(String name, String id, int age)

foo(Z[I[ILjava/lang/String;J)Ljava/lang/String;------------String foo(boolean,int[],int[],String,long)

6.参数

Lpackage/name/ObjectName;

->FieldName:Ljava/lang/String;

包名->字段名:字段类型

7.寄存器DVM

DVM与JVM最大的区别就是DVM是基于寄存器的。基于寄存器的意思是说:在smali中所有的操作都必须经过寄存器来进行。

8.smali基本指令语法

.field private isFlag:z  定义变量

.method  方法

.parameter  方法参数

.line 8  此方法位于第8行

invoke-super  调用父函数

const/high16  v0,0x7fo3    把0x7fo3赋值给v0

invoke-super  调用父函数

invoke-direct  调用函数

return-void  函数返回void

.end method  函数结束

new-instance  创建实例

iput-object  对象赋值

iget-object  调用对象

invoke-static  调用静态函数

条件跳转分支:

if-eq vA,vB, :cond_**  如果vA等于vB则跳转到:cond_**

if-ne........               不等于

if-lt                         小于

if-le                        小于等于

if-gt                        大于

if-ge                      大于等于

eqz                        等于0

nez                        不等于0

ltz                          小于0

gez                       大于等于0

gtz                        大于0

lez                        小于等于0

相关文章

  • Android逆向——Smali语法

    一、android盗版软件大部分都是二次打包完成的。基本上就是反编译,注入广告,打包签名,上传市场。其中注入广告或...

  • android 逆向 初级系列(二)

    1. 引言 最近利用空闲时间学习了下smali语法,当然是为逆向破解服务的。本文是Android apk的初级逆向...

  • Android逆向基础:Smali语法

    Smali是什么 Smali是Android虚拟机的反汇编语言。我们都知道,Android代码一般是用java编写...

  • smali 介绍

    本篇介绍 smali 可以看成是虚拟机的汇编语言,在逆向时可以看懂smali可以提升不少效率. Smali 语法 ...

  • Android 逆向工程 —— Smali 语法样例分析

    Android 程序是基于 Dalvik 虚拟机运行的,在逆向安卓程序时,一般会选择 Smali 的语法格式。大部...

  • 初识[android逆向] smali

    初识[android逆向] smali,烦请各位大佬多多海涵,小萌新一枚。 smali文件: 无论是普通类、抽象类...

  • Android逆向之smali语法宝典

    前言 Android采用的是java语言进行开发,但是Android系统有自己的虚拟机Dalvik,代码编译最终不...

  • 【CTF】Smali

    0x01 题目描述 都说学好Smali是学习Android逆向的基础,现在刚好有一个smali文件,大家一起分析一...

  • Smali常见语法

    1. 获取assets目录中的资源 android: smali: 2. new对象的语法 android: sm...

  • smali学习笔记之四种方法破解一个简单creakme

    概述 自己以前学习android逆向的一个笔记,虽然超级简单,但是涉及到smali汇编,java层逆向的思路以及x...

网友评论

      本文标题:Android逆向——Smali语法

      本文链接:https://www.haomeiwen.com/subject/pfwssctx.html