安卓恶意代码分析

来源:互联网 发布:深圳java外包公司 编辑:程序博客网 时间:2024/04/27 19:15

看到了一篇讲安卓恶意代码分析的PPT
搬运到这里来

调试

  1. 动态调试Android SDK程序
    Dalvik虚拟机实现了JDWP(Java Debug Wire Protocol,Java调试有线协议),可以直接使用支持JDWP协议的调试器来调试Android程序
  2. DDMS与Eclipse ADT插件
    这里提醒一下,谷歌官方已经停止对Eclipse的友好了,转而推荐使用Android Studio
  3. Dalvik虚拟机中中所有对调试支持的实现代码位于Android系统源码的dalvik/vm/jdwp目录下。每一个启用调试的Dalvik虚拟机实例都会启动一个JDWP线程

动态调试Android 原生程序
原生程序使用传统的Linux程序调试方法如GNU调试服务器来连接进行调试。
原生程序分为动态链接库与普通可执行程序两种。前者大多内置于Android程序中,在调试时需要先启动Android程序加载它,然后使用远程附加的方式来调试,后者可以直接使用远程运行的方式来调试它。

代码注入法

所谓的代码注入是指首先反编译Android程序,然后在反汇编出的smali文件中添加Log调用的代码,最后重新打包程序运行来查看输出结果

栈跟踪法

栈跟踪法同样属于代码注入的范畴,它主要是手动想反编译后的smali文件中加入栈跟踪信息输出的代码
与注入Log输出的代码不同,栈跟踪法只需要知道大概的代码注入点,而且注入代码后的反馈信息比Log注入要详细的多

IDA Pro调试

(1)调试Android原生程序(远程调试)

所谓“远程调试”是指通过网络调试在另一个网络上的计算机运行的代码的过程。利用远程调试,我们可以使用Windows GUI版本的IDA作为一个前端接口,调试IDA支持的任何平台上的会话

(2)调试Android原生动态链接库(远程附加)

远程调试步骤

  1. 在IDA 6.1的目录下有一个android_server,是用来在远程端(目标机器)上运行的小程序。把ida 目录下android_server 传到android 目录中, 并设置适当权限。
    如: C:\ adb push android_server /data/local/tmp/ C:\ adb shell chmod 755 /data/local/tmp/android_server
  2. 把使用的例子debugnativeapp复制到Android设备中,如/data/local/tmp目录中,并加上可执行权限
  3. 启动Android调试服务器
    C:\ adb shell /data/local/tmp/android_server
    启动成功后提示信息:
    IDA Android 32-bit remote debug server(ST) v1.14. Hex-Rays (c) 2004-2011
    Listening on port #23946
  4. 打开另一个命令提示符执行以下命令
    C:\ adb forward tcp:23946 tcp:23946
  5. 启动IDA Pro主程序,点击菜单项“Debugger->Run->Remote ArmLinux/Android debugger”,打开调试程序设置对话框进行设置
0 0