背景
因为毕设是脱壳,就借鉴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 源码位置