Android逆向-1 dalvik字节码

  • A+
所属分类:Asura笔记本
摘要

第一种
第二种
.java编译成.class 再编译成 <code>.dex 最后编译得到 smali文件

1 .dalvik字节码

1 dalvik寄存器:

  • 32位: 所有寄存器
  • 64位: 使用两个相邻的寄存器

2 寄存器的命名法:

  • v : 局部变量寄存器 v0-vn 参数寄存器: vn-vn+m
  • p : 参数寄存器 p0-pn 变量寄存器 v0-vn

第一种
Android逆向-1 dalvik字节码

第二种
Android逆向-1 dalvik字节码

3 dex文件反汇编工具

.java编译成.class 再编译成 <code>.dex 最后编译得到 smali文件

.java -> .class -> .dex -> smali

  • dx.jar : .class 打包成.dex

    dx –dex –output=Decrypt.dex com/yijinda/demo/Decrypt.class

  • baksmali.jar: .dex反编译成 smali文件

    java -jar baksmali.jar -o smali_out/classes.dex

  • smali.jar: smali 打包成 .dex

    java -jar smali.jar -o smali_out/classes.dex

4 dalvik字节码类型

基础类型

Dalvik 类型 java类型
B byte
C char
S short
I int
J long
F float
D double
Z boolean
V void
L java类类型
[ 数组类型

字段

1 2 3 4 
//字段 Lpackage/name/ObjectName;->FieldName:Ljava/lang/String //字段格式 类型 (包名类名 /路径);->字段名称:字段类型; 

方法

1 2 3 4 
//方法 Lpackage/name/ObjectName;->MethodName(III)Z (III)Z: 这部分信息表示的是方法的签名信息 代表的意思是  三个int参数 返回boolean  

练习:

 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 
//分析字段: //    Lcom/alipay/sdk/app/H5PayActivity;->b:Ljava/lang/String; //    Lcom/auth/third/accountlink/ui/WebViewActivity;->a:Z //    Lcom/alipay/sdk/authjs/a;->m:Lorg/json/JSONObject; // 解答: package   com.alipay.sdk.app class H5PayActivity {     string b; }  package com.auth.third.accountlink.ui class WebViewActivity {    bool a; }  import org.json; package com.alipay.sdk.authjs class a {     JSONObject m; }  //分析方法: //    Lcom/alipay/sdk/j/h;->b()Z //    Landroid/content/Intent;->getExtras()Landroid/os/Bundle; //    Lorg/cocos2dx/lua/LoadingAct;->setContentView(I)V //解答 package com.alipay.sdk.j class h {       public boolean b() {} }  package android.content class Intent {         public  android.os.Bundle getExtras(){} }  package org.cocos2dx.lua class LoadingAct {         public void setContentView(int int_1){} }  

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: