忆杰的博客

忆杰的博客

ida调试Dalvik显示局部变量

用ida进行Dalvik调试还是有很大的优势, 最关键的是可以不用打包. 现在有很多app都开始检查是否重新打包的. 虽然也可以去pass调这些地方. 但是显然很麻烦.. 另外一些app还加壳了. 搞起来更加麻烦… 所以可以用ida进行调试还是一种选择. 不过原来用ida调试Dalvik的时候有一个致命问题. locals窗口变量都没法显示.. 最近纠结了几次. 算是找到了一个解决办法.

在ida的locals窗口如果是显示成这样.

QQ Photo20150825155854

这里局部变量v0 v2都没法显示. 去到ida的论坛咨询这个问题, 说是丢失了变量类型信息. 所以没法显示类型.

QQ Photo20150825160051

 

因为ida自己没法确定类型形式. 所以需要我们自己来指定变量的类型信息, 其实ida的教程里面有说. 只是以前没仔细看. 原来是这样. 比如现在要显示v2的类型. 我们要在Watch View窗口.自己添加一个类型, 类似这样

(Object*)v2
(String)v2
(char*)v2
(int)v2

QQ Photo20150825160822

 

这样用ida调试相对就舒服很多了!

网友评论:

  1. joen 说:

    #include

    static main()
    {
    auto bptSize;
    auto i;
    auto bptEa;
    auto bptType;

    //
    // 获取断点数量
    //
    bptSize = GetBptQty();

    Message( “Btp Size:%d\n”, bptSize );

    //
    // 循环的获取每一个断点地址. 然后修改断点的类型
    //
    for( i = 0; i < bptSize; i++ )
    {
    //
    // 根据断点编号获取断点地址
    //
    bptEa = GetBptEA(i);

    //
    // 获取断点的属性
    //
    bptType = GetBptAttr( bptEa, BPTATTR_TYPE );

    Message( "Btp index:%d Ea:%x Type:%x\n", i, bptEa, bptType );

    //
    // 这里将断点先删除, 然后再添加一个X断点
    //
    DelBpt( bptEa );
    AddBpt( bptEa );
    }
    }

发表评论

您必须登录 才能进行评论。