1 .dalvik字节码
1 dalvik寄存器:
- 32位: 所有寄存器
- 64位: 使用两个相邻的寄存器
2 寄存器的命名法:
v
: 局部变量寄存器 v0-vn
参数寄存器: vn-vn+m
p
: 参数寄存器 p0-pn
变量寄存器 v0-vn
第一种

第二种

3 dex文件反汇编工具
.java
编译成.class
再编译成 <code>.dex
最后编译得到 smali文件
.java -> .class -> .dex -> smali
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){} }
|
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/245707.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论