背景
因為畢設是脫殼,就借鑒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 源碼位置