参考链接:https://www.52pojie.cn/thread-395689-1-1.html

res目录下资源文件在编译时会自动生成索引文件(R.java ),

asset目录下的资源文件无需生成索引。

一般来说:使用C++游戏引擎的资源文件放在asset下

      java开发中除音频和视频资源(放在raw或asset下),均放在res下。

  • Dalvik字节码是什么?

  Dalvik是Google专门为Android设计的一个虚拟机。

  Dalvik VM是基于寄存器的,而JVM是基于栈的,Dalvik有专属的文件执行格式dex(Dalvik executable),jvm使用的是java字节码。

  Dalvik VM你jvm速度更快,占用空间更少。

  • 什么是Smali?

  Smali,baksmali分贝时指安卓系统里的java虚拟机(Dalvik)所使用的一种。dex格式文件的汇编器,反汇编器。

  语法为一行宽松的Jasmin/dedeser语法,且实现了.dex格式的所用功能(注解,调试信息,线路信息等)。

  对apk文件进行反汇编后,便会生成此类文件。其中在Dalvik字节码中,寄存器都是32位的,能够支持任何类型,64位类型(Long/Double)用2个寄存器表示。

  • Dalvik字节码有两种类型:原始类型,引用类型。

  

  原始类型:  

      B --- byte

      C --- char

      D --- double

      F --- float

      I --- int

      J --- long

      S --- short

      V --- void

      Z --- boolean  

      [XXX --- array    //数组表示方式:基本类型前加上“[”,eg:int型数组表示为:[I

      LXXX/yyy --- object  //对象表示以L开头,格式为LpackageName/objectName;(分号必须有)

      //eg:String在Smali中为:LJava/lang.String; ,其中java/lang对应java.lang包,String就是定义在该包中的一个对象。

      //内部类表示为:LpackName/objectName$subObjectName;。即在内部类前面加“$”符号。

    方法定义:Func-Name(para-Type1para-Type2para-Type3...)Return-Type    //参数之间没有空格

    eg:hello()v    //void hello()

      hello(III)Z    //boolean hello(int,int,int)

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

  • Smali基本语法

  .field private isFlag:z  定义变量

  .method       方法

  .parameter     方法参数

  .prologue      方法开始

  .line 123     此方法位于第123行

  invoke-super   调用父函数

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

  invoke-direct   调用函数

  return-void   函数返回void

  .end method   函数结束

  new-instance   创建实例

  iput-object   对象赋值

  iget-object   调用对象

  invoke-static   调用静态函数

  • 条件跳转分支:

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

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

  "if-It vA, vB, :cond_**"    如果vA小于vB则跳转 到:cond_ **

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

  "if-gt vA, vB, :cond_**"    如果vA大于vB则跳转到:cond_ **

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

  "if-eqz vA, :cond_**"    如果vA等于0则跳转到:cond_ **

  "if-nez vA, :cond_**"    如果vA不等于0则跳转到:cond_ **

  "if-Itz vA, :cond_**"    如果vA小于0则跳转到:cond_**

  "if-gez vA, :cond_**"   如果vA大于等 于0则跳转到:cond_ **

  "if-gtz vA, :cond_**"     如果vA大于0则跳转到:cond_ **

  "if-lez vA, :cond_**"    如果vA小于 等于0则跳转到:cond **

  

  

安卓逆向学习---初始APK、Dalvik字节码以及Smali的更多相关文章

  1. APK反编译之一:基础知识—APK、Dalvik字节码和smali文件

    refs: APK反编译之一:基础知识http://blog.csdn.net/lpohvbe/article/details/7981386 APK反编译之二:工具介绍http://blog.csd ...

  2. 003dayPython学习初始模块和字节码

    一.注释: 1.单行注释 # 被注释的内容 2.多行注释 """ 被注释的内容 """ 二.模块 我们在编程的时候,往往是一个主.py文件, ...

  3. Android逆向基础----Dalvik字节码

    参考此微博,更多详细内容可以到这里查看 http://blog.csdn.net/dd864140130/article/details/52076515 Dalvik字节码 1.寄存器位32位,64 ...

  4. 【腾讯内部干货分享】分析Dalvik字节码进行减包优化

    http://wetest.qq.com/lab/view/?id=96?from=ads_test2_qqtips&sessionUserType=BFT.PARAMS.192184.TAS ...

  5. 实例具体解释:反编译Android APK,改动字节码后再回编译成APK

    本文具体介绍了怎样反编译一个未被混淆过的Android APK,改动smali字节码后,再回编译成APK并更新签名,使之可正常安装.破译后的apk不管输入什么样的username和password都能 ...

  6. 安卓逆向基础(001)-APK安装流程

    1.在/data/app下以报名为文件夹名新建文件夹 APK包存放在这里 以及lib文件 存放so 2./data/dalvik-cache 存放dex dex是dalvik虚拟机可执行文件 3./d ...

  7. 4. 如何解释dalvik字节码

    如何解释dalvik字节码 文档: 在Android系统源码目录dalvik\docs有相关指令文档 dalvik-bytecode.html 实战: 来直接实战模拟来理解枯燥的理论 用IDA打开一个 ...

  8. Dalvik字节码的类型,方法与字段表示方法

    Dalvik字节码有着自己的类型,方法与字段表示方法,这些方法与Dalvik虚拟机指令集一起组成了一条条的Dalvik汇编代码. 1.类型 Dalvik字节码只有两种类型,基本类型与引用类型.Dalv ...

  9. JVM学习笔记——类加载和字节码技术篇

    JVM学习笔记--类加载和字节码技术篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的类加载和字节码技术部分 我们会分为以下几部分进行介绍: 类文件结构 字节码指令 编译期处理 类 ...

随机推荐

  1. ATM取款机系统代码及此次作业感受

    本次乃我们软件工程专业开学第一个小测试,本来以为是和之前2016级相同的或者类似得软件,所以之前学了好久的那个程序完全失去了它的作用,当然了老师也从来没有按套路出过牌,所以这个下马威我觉得作用起到了. ...

  2. iOS工程中创建pch文件

    1.新建pch类文件 2.在工程配置中,Build Setting 下搜索"pre"寻找Apple LLVM6.1 - Language下的 Preflx Header 3.点开P ...

  3. Bootstrap(6)辅组类和响应式工具

    一.辅助类 Bootstrap 在布局方面提供了一些细小的辅组样式,用于文字颜色以及背景色的设置.显示关闭图标等等. 1.情景文本颜色 各种色调的字体 <p class="text-m ...

  4. DOS下的安全空间

    我们需要直接向一段内存中写入内容: 这段内存空间不应存放系统或其他程序的数据或代码,否则写入操作很可能引发错误: DOS方式下,一般情况,0:200~0:2ff空间中没有系统或其他程序的数据或代码; ...

  5. Linux后台运行进程

    方式一: /bin/bash /var/www/html/crontab.sh & 缺点:终端关闭的话,进程也会关闭. 方式二: nohup /bin/bash /var/www/html/c ...

  6. 队列 和 线程 之GCD dispatch

    1.dispatch_queue_create  创建队列开启异步线程(1,4,2,3) // 创建一个队列 dispatch_queue_t queue = dispatch_queue_creat ...

  7. django分页的东西, 不详细, 但是也足够了。

    视图函数中的代码 from django.shortcuts import render, HttpResponse, redirect import json from django.core.pa ...

  8. asp.net core mvc 统一过滤参数,防止注入漏洞攻击

    参考链接: http://www.lanhusoft.com/Article/132.html 在core下,多少有些改动,其中js部分被注释掉了,如下: public static string F ...

  9. VsCode基本使用

    迫于公司统一编辑器,初次接触VsCode,小白入门笔记 安装插件及其用途: 1. Bracket Pair Colorizer :对括号对进行着色,再也不会搞不清状况了. 2. Git History ...

  10. HISAT,sTRINGTIE,ballgown三款RNA-seq信息分析软件

    HISAT,sTRINGTIE,ballgown三款RNA-seq信息分析软件 2015年04月02日 11:35:47 夜丘 阅读数:8940 标签: 生物 更多 个人分类: 论文笔记   Bowt ...