zoukankan      html  css  js  c++  java
  • AndBug调试Android Dalvik Bytecode

    我们在开发android应用时,一般会使用eclipse来调试java代码。在有源代码的情况下,使用eclipse调试时很方便的。
       但是当我们做android逆向时,显然不会有源代码,这时候如果想要调试目标java代码呢?
        一种做法是: 我们可以用反编译工具将apk编译成源代码,然后再编译回去,在某些情况下这种做法是有效的,但是并不是所有的apk都能成功编译成源代码的,即使编译成了源代码,再编译回去时也可能会产生很多错误。

       这里向大家介绍一个有用的工具:AndBug,它可以在没有源代码的情况下,调试android上的java程序,并支持断点、call stack查看、查看class、method信息等。最重要的是,我们可以添加自己的脚本来加入我们所需要的功能,扩展这个工具。

       AndBug的主页是:https://github.com/swdunlop/AndBug

    一、安装AndBug

    安装很简单,只要两步

    1、下载源代码


       git clone https://github.com/swdunlop/AndBug.git
    2、编译
       make
       如果提示没有头文件,先安装python-dev 

    二、使用AndBug

    假设有这样一个例子:

      我们有一个apk,名字叫做HttpRequest.apk,它的界面包括一个按钮和一个文本框,当我们单击按钮的时候,程序会去访问一个固定的网页,并将页面的代码显示在文本框中,而这个网页的URL我们是不知道的,如下图所示:


    现在我们的任务是要找出这个URL是什么(当然,对于这个简单的例子,我们通过抓包或者静态反编译都能解决这个问题)

    我们将通过AndBug来完成这个工作


    1、首先在模拟器中启动apk,在命令行下输入 adb shell ps,找到相应的进程pid,在这个例子中pid是243




    2、进入AndBug目录,输入PYTHONPATH=lib ./andbug  shell  –p  243,不出意外的话就能attach上目标进程了




    3、我们可以在命令行中输入各种命令,输入”help”可以看到所有可用的命令。

       常用的命令有:
            classes:  查看加载的class
            Break:   下断点
            suspend: 暂停进程

             resume: 恢复进程运行


    4、我们应该在哪下断点呢?不要急,我们先看看这个apk用到了那些网络相关的类吧,输入:


       classes    java.net

      

     出现了一堆相关class,我们看到里面有java.net.URL,一般我们访问网络资源时,通常都会新建一个URL类,在这个类上下断点应该是合理的



    5、在java.net.URL类上下断点,输入


       break java.net.URL


       这条命令会对URL类中的所有方法下断点,如果只想断其中某一个方法,可以在参数后面加上方法名


    6、下面就是触发断点了,回到app界面,单击”get url”按钮


       呵呵,断下来了! 看看堆栈,应该是在URL的init函数处断了下来

       然后启动navi server,输入navi,可以看到server地址http://localhost:8080



    7、使用浏览器访问http://localhost:8080,神奇的一幕发生了,我们可以观察到当前线程的状态以及类成员变量,当然也包括我们关心的URL!


       


    以上只是一个简单的功能,我们完全可以通过添加自己的脚本,将AndBug打造成一个android逆向的利器!

  • 相关阅读:
    ArrayList removeRange方法分析
    LinkedHashMap源码分析(基于JDK1.6)
    LinkedList原码分析(基于JDK1.6)
    TreeMap源码分析——深入分析(基于JDK1.6)
    51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
    51 NOD 1049 最大子段和 动态规划 模板 板子 DP
    51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
    8月20日 训练日记
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959800.html
Copyright © 2011-2022 走看看