关闭

android逆向分析之从smali到java

标签: android反编译smalismali2java
19343人阅读 评论(1) 收藏 举报
分类:

通过上一篇 android逆向分析之反编译,在dex2jar的前提下,我们获取到了源码,在apktool的前提下,我们可以获取到资源和smali文件,本篇主要讲述smali几个最基本的知识和smali转java。

本片通过ServerListActivity.smali(来源于上篇apktool反编译出来的)来讲述,首先打开此文件,片段如下:

.class public Lcom/cpic/jst/ui/activity/ServerListActivity;
.super Lcom/cpic/jst/ui/activity/BaseActivity;
.source "ServerListActivity.java"

.class <访问权限> [关键修饰字] <类名>;
.super <父类名>;
.source <源文件名>

相当于public class ServerListActivity extends BaseActivity
.class指令表示当前的类名,类的访问权限是public,类名为Lcom/cpic/jst/ui/activity/ServerListActivity,类开头的L是遵循Dalvik字节码的规范,表示后面是一个类。

.super指定了当前类所继承的父类,后面指的就是这个父类的类名。

.source指定了当前类的源文件名。

# interfaces
.implements Landroid/text/TextWatcher;

# interfaces是注释,表示后面是一个interface。
.implements是接口关键字。

# static fields
.field public static final REQUEST_CODE_TO_SERVERLISTDETAILSACTIVITY:I = 0x7d8


# instance fields
.field public adapter:Lcom/cpic/jst/ui/adapter/HadVisitedListAdapter;

.field private address:Ljava/lang/String;

经过上述叙述,应该明白此处# static fields为注释,一个静态字段,# instance fields注释为一个非静态字段,address为一个private的字段,现在拉取完整的smali和java代码作对比,如下:

public class ServerListActivity extends BaseActivity
  implements TextWatcher
{
  public static final int REQUEST_CODE_TO_SERVERLISTDETAILSACTIVITY = 2008;
  public HadVisitedListAdapter adapter;
  private String address;
}
.class public Lcom/cpic/jst/ui/activity/ServerListActivity;
.super Lcom/cpic/jst/ui/activity/BaseActivity;
.source "ServerListActivity.java"

# interfaces
.implements Landroid/text/TextWatcher;


# static fields
.field public static final REQUEST_CODE_TO_SERVERLISTDETAILSACTIVITY:I = 0x7d8


# instance fields
.field public adapter:Lcom/cpic/jst/ui/adapter/HadVisitedListAdapter;

.field private address:Ljava/lang/String;

smali2java

对于没有加壳加密处理过的apk,我们还可以直接通过smali2java来实现反编译,如果去深挖smali2java会发现,其实smali2java就是apktool的界面化操作,通过apktool反编译,再去把smali读取出来,smali2java不仅仅可以把整个apk读取出来,还能打开单独的smali文件然后转成java文件。

这里写图片描述

这里写图片描述

但是打开源码后,会有一些资源文件已经成了一些十六进制的代码呈现在我们眼前,这就蛋疼了,天知道这是啥呢?

这里写图片描述

这里写图片描述

少年别急,这些都是小问题。

这里写图片描述

这里写图片描述

通过刚刚的十六进制便可以在public中找到对应的名称。

对于单独一个smali文件转java文件,点击 文件–>处理单个smali文件,找到需要转换的smali文件后确定,弹窗显示smali反编译为java成功。

工具链接(apktool、dex2jar、jdgui、Smali2Java)

1
0
查看评论

smali2java——直接将smali转换成java

http://www.hensence.com/cn/smali2java/ 主界面图smali2java是一个将smali代码反编译成java代码的工具。什么是smali?smali是将Android字节码用可阅读的字符串形式表现出来的一种语言,可以称之为Andr...
  • huangxiaoguo1
  • huangxiaoguo1
  • 2016-09-23 11:04
  • 14297

Android 反编译(一,apktool+smail2java)

一:解压缩(获取图片等资源)     对于apk中丰富的资源,如果我们在练习的时候需要引用某些apk中的资源文件时,最简单的办法使用解压缩工具对apk进行解压缩,然后在相应的目录下查找需要的资源文件。 二:反编译APK     我们可以通过解压缩的方式去使用某...
  • huangyabin001
  • huangyabin001
  • 2015-03-18 15:15
  • 21525

Smali反编译Java文件

我们在开发 安卓中,有时需要对其他apk文件进行反编译,以便我们方便进行学习交流研究使用。我们使用 Android SDK 默认生成的工程会自动添加一些类到我们的工程中。这些类在程序发布后会仍然保留在apk 文件中。我们对其进行反编译后 可以发现 会有Smali后缀名的文件。我们怎么对他进行反...
  • u013233097
  • u013233097
  • 2016-04-27 00:24
  • 7553

Android Studio插件之Code2Smali

Run? apktool d bin.apk? open code.smali? out Android Studio 搜索 Code2Smali,一步到位,支持IDEA 14+ and Android Studio 1.2+ 安装了重启下IDE 打开项目 打开要处理的java文件,在B...
  • ilittleone
  • ilittleone
  • 2015-03-13 22:22
  • 4129

实例详解:反编译Android APK,修改字节码后再回编译成APK

本文详细介绍了如何反编译一个未被混淆过的Android APK,修改smali字节码后,再回编译成APK并更新签名,使之可正常安装。破译后的apk无论输入什么样的用户名和密码都可以成功进入到第二个Activity。 有时难免要反编译一个APK,修改其中的若干关键判断点,然后再回编译成一个全新的可用的...
  • yanzi1225627
  • yanzi1225627
  • 2014-08-08 00:04
  • 43530

android 逆向工程apktool dex2jar jd-gui Jadx Smali2Java

android 逆向工程apktool dex2jar jd-gui Jadx Smali2Java app安全–签名校验: (签名只是对完整性和签名发布机构的校验机制,不能阻止 Apk 被修改,只是签名无法保持一致 不同私钥对应着不同的公钥,实质上不同的公钥就代表了不同的签名) JAVA...
  • keen_zuxwang
  • keen_zuxwang
  • 2017-06-03 07:46
  • 1730

Android smalidea无源码调试

Android smalidea无源码调试 已有功能 语法高亮/错误提示字节码级别调试 断点单步调试寄存器查看本地窗口 java 语法支持,debug 模式下同样支持 支持跳转,方便追踪变量/函数/类.(Xref也支持)查找用法重命名从 java 代码引用 smali 类 安装 下载插件...
  • justFWD
  • justFWD
  • 2016-09-07 17:00
  • 4149

smali转java

  • 2015-06-02 14:17
  • 6.22MB
  • 下载

apk反编译,smali文件修改,重新打包,java转samli插件在项目中的实际应用

一、工具介绍:1.apktool:aapt.exe,apktool.bat,apktool.jar;三个在同一目录结合使用,用来反编译apk,apk重新打包;2.dex2jar:该工具作用是将classes.dex文件,反编译出源码(如果apk未加固),反编译出文件,使用jd-gui工具进行查看;3...
  • wxk105
  • wxk105
  • 2017-03-15 17:12
  • 4857

smali转java

  • 2017-10-17 16:54
  • 364KB
  • 下载
    个人资料
    • 访问:263122次
    • 积分:2991
    • 等级:
    • 排名:第13885名
    • 原创:46篇
    • 转载:0篇
    • 译文:0篇
    • 评论:329条
    QQ交流群

    Android路上

    611566797
    博客专栏
    我的公众号