论文部分内容阅读
Android系统是一款应用于移动电子设备的嵌入式操作系统,它由美国Google公司研发并推广,因其开源、免费、功能强大等特点而流行于世。在这个系统下的软件越来越多的同时,该平台上的病毒、木马、恶意软件也越来越多,对无源代码的软件的分析工作显得越来越重要。无源码的动态调试技术作为分析软件最方便实用的技术,在Windows、Linux系统下都已经非常先进,但在Android平台下却刚刚起步。本文主要研究Android应用在无源码的条件下进行动态调试的技术方法,将工作分为Android应用Java层无源码调试技术研究与Android应用Native层无源码调试技术研究两部分,其内容包括:一、在Java层调试技术研究中,本文针对官方的SDK开发工具无法调试无项目源代码的Android应用的问题,研究了Android SDK源代码和Android平台的调试构架体系中每个调试命令实现过程及原理,分析dex文件格式,提出了将传统Java平台调试系统与Dalvik指令字节码结合,在dex文件的汇编字节码上进行动态调试的技术方法,将通用个人计算机上的无源码动态调试技术应用到Anroid平台中,解决了调试无源码的Android应用过程中建立调试连接、反汇编、下断点、代码定位、设置观察点、查看寄存器等调试功能的技术实现问题。二、在Native层无源码调试技术的研究中,本文针对官方的NDK开发工具无法调试无项目源代码的so库文件的难题,研究了Android环境中elf文件格式、JNI调用的实现及Gdb的工作原理,提出了通过模拟Android系统JNI调用环境关联so库文件与Gdb技术方法,扩展了Gdb功能,使其支持Android应用中so库文件的调试并能对JNI调用进行控制,解决了调试无源码的Android应用的so库文件过程中加载调试文件、建立调试连接、反汇编、下断点、代码定位、JNI访问控制等调试功能的技术实现问题。本文提出的技术方法相对于Dalvikvm终端调试的方法,优势在于:调试对象是apk文件,由仅支持Java终端程序的调试提升到支持对Activity的调试;支持对JNI调用的Native库文件的动态调试;调试工作集中于调试端中,不需要编译新的Android系统镜像,具有更强的通用性,能应用到市场上的手机中。