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 源碼位置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM