DexDump使用和解析

背景

因为毕设是脱壳,就借鉴http://cb.drops.wiki/drops/tips-9214.html
乌云上的这篇上交的大牛脱壳机的思路,卡在脱壳那里了

我们的第一个反应是有没有现成的程序,可以去翻译Dalvik字节码的,但是以读入内存中的DexFile结构体为输入,同时可以直接基于源码实现,也就是用C/C++实现的,而不是像更多的静态逆向工具直接以读入一个静态DEX文件为输入。找了下发现Android系统源码里本身就提供了DexDump(dalvik/dexdump/DexDump.cpp)这个工具,直接能满足这个要求。我们对DexDump代码稍作修改,插入到解释器中

使用

在win上 搜索sdk下的dexdump.exe文件 然后使用命令

 C:\Users\tangsilian\AppData\Local\Android\Sdk\build-tools\23.0.2\dexdump.exe C:\Users\tangsilian\Desktop\classes.dex
>>tangsilian.txt

得到如下的文件

Processing 'C:\Users\tangsilian\Desktop\classes.dex'...
Opened 'C:\Users\tangsilian\Desktop\classes.dex', DEX version '035'
Class #0            -
  Class descriptor  : 'Landroid/support/annotation/AnimRes;'
  Access flags      : 0x2601 (PUBLIC INTERFACE ABSTRACT ANNOTATION)
  Superclass        : 'Ljava/lang/Object;'
  Interfaces        -
    #0              : 'Ljava/lang/annotation/Annotation;'
  Static fields     -
  Instance fields   -
  Direct methods    -
  Virtual methods   -
  source_file_idx   : 893 (AnimRes.java)
...

Class #1633            -
  Class descriptor  : 'Landroid/support/v4/view/ViewCompat$Api24ViewCompatImpl;'
  Access flags      : 0x0000 ()
  Superclass        : 'Landroid/support/v4/view/ViewCompat$MarshmallowViewCompatImpl;'
  Interfaces        -
  Static fields     -
  Instance fields   -
  Direct methods    -
    #0              : (in Landroid/support/v4/view/ViewCompat$Api24ViewCompatImpl;)
      name          : '<init>'
      type          : '()V'
      access        : 0x10000 (CONSTRUCTOR)
      code          -
      registers     : 1
      ins           : 1
      outs          : 1
      insns size    : 4 16-bit code units
      catches       : (none)
      positions     : 
        0x0000 line=1810
      locals        : 
        0x0000 - 0x0004 reg=0 this Landroid/support/v4/view/ViewCompat$Api24ViewCompatImpl; 
  Virtual methods   -
    #0              : (in Landroid/support/v4/view/ViewCompat$Api24ViewCompatImpl;)
      name          : 'setPointerIcon'
      type          : '(Landroid/view/View;Landroid/support/v4/view/PointerIconCompat;)V'
      access        : 0x0001 (PUBLIC)
      code          -
      registers     : 4
      ins           : 3
      outs          : 2
      insns size    : 8 16-bit code units
      catches       : (none)
      positions     : 
        0x0000 line=1813
        0x0007 line=1814
      locals        : 
        0x0000 - 0x0008 reg=1 this Landroid/support/v4/view/ViewCompat$Api24ViewCompatImpl; 
        0x0000 - 0x0008 reg=2 view Landroid/view/View; 
        0x0000 - 0x0008 reg=3 pointerIconCompat Landroid/support/v4/view/PointerIconCompat; 
  source_file_idx   : 6861 (ViewCompat.java)

分析dexdump的源码,思考如何在解释器里利用
DexDump.cpp (dalvik\dexdump) 59520 2016-12-20 源码位置

posted @ 2017-03-06 17:37  Tesi1a  阅读(3580)  评论(0编辑  收藏  举报