• Android 5.0 + IDA 6.8 调试经验分享


    如今升级快。网上的资料仅仅能做參考。
    学到了NDK逆向这一块,昨天为了能让IDA 能动态调试SO,瞎折腾了非常久,这里分享一下我的经验。

    工具:
    IDA pro 6.8
    Android 5.x

    IDA 6.8 在看雪吾爱应该都能找到下载地址。
    我的手机是三星 on7 Android 5.1系统。
    曾经我一直用的是IDA 6.6。群里人说5.0以上的系统要用6.8…
    在启动android_server 服务的时候遇到以下这样的情况有可能就是IDA的版本号不正确了。
    这里写图片描写叙述
    以下開始正式写,内容可能有些反复。
    0x0: 将IDA pro 6.8 文件夹下的dbgsrvandroid_server 上传到手机 /data/local/tmp 文件夹下。
    详细命令:
    adb push dbgsrvandroid_server /data/local/tmp/android_server // 上传 dbgsrvandroid_server 依据自己实际情况改动
    adb shell // 得到Android系统的shell,以下是在Shell中的操作
    su //获得Root权限
    cd /data/local/tmp
    chmod 755 android_server // 改动android_server权限 rwxr-xr-x
    ./android_server //执行
    这个CMD不要关了。
    这里写图片描写叙述

    0x1 : 开启port转发
    另外打开一个cmd
    adb forward tcp:23946 tcp:23946

    0x2: 操作IDA
    打开IDA ->Debugger->Attach->Remote ARMLinux/Anroid debugger
    Hostname 就是Anroid机的主机地址。一般和电脑都在一个局域网吧? 填写Android主机的ip地址。port默认就可以。
    完毕后按下 Ok。


    这里写图片描写叙述

    按下Ok后会出现一个进程列表,选择你要调试的进程。


    附件里有一个So样例,先在Android机上执行起,然后在刷新IDA的进程列表。


    进程太多的话,能够用包名keyword搜索。
    附加后调试器会停在一个地方,先让程序跑起来吧,由于我们调试的是So模块。

    怎样调试XX模块?样例以附件中的Apk为样例
    从这里调出模块窗体
    从这里调出模块窗体。

    这里写图片描写叙述
    模块非常多。你须要知道你要调试的是什么模块,用搜索功能会方便非常多。
    这里写图片描写叙述
    这个就是样例中要调试的模块。用Android Killer分析出来的。


    在Module List窗体中双击欲调试的模块。会看到模块的导出函数。
    这里写图片描写叙述
    假如要调试 getCoin这个函数。 双击getCoin,就进入了函数的汇编代码界面。
    这里写图片描写叙述
    单击红色圆圈中的蓝色原点就能下断点。 我们须要改动这个函数的返回值,来达到改动金钱的目的,所以在 BX LR 这一行下断点。
    当IDA停下来后,就能够在寄存器窗体改动R0寄存器的值。
    全剧终。

    一些小问题的非专业解答:
    0x0:
    这里写图片描写叙述
    1、手机没有Root
    2、执行android_server 前请先su一下

    0x1:
    这里写图片描写叙述
    IDA 6.8文件夹下,执行idaq.exe

    0x2:
    这里写图片描写叙述
    。,, 换真机,模拟器不行。

    0x3:
    这里写图片描写叙述
    版本号不正确。升级IDA,或者在手机上刷一个低版本号的系统。

    记住:
    一定要Root。一定要Su,一定要改权限

    样例下载:http://pan.baidu.com/s/1i3wzetf
    參考文章:
    怎样使用ida在apk执行前动态调试其so中的函数
    http://bbs.pediy.com/showthread.php?

    t=178659

    一步步搭建ida pro动态调试SO环境。
    http://bbs.pediy.com/showthread.php?

    t=203080

    菜鸟总结so分析。arm 汇编,IDA静态分析
    http://www.pd521.com/thread-790-1-1.html

  • 相关阅读:
    为什么我们不要 .NET 程序员
    Jquery异步请求数据实例代码
    关系数据库中表的基本属性有哪些
    利用VC从DLL传递消息到EXE
    新实体与原实体之间为一对多关系
    本人C++ Builder开发的仿Windows桌面应用程序源码
    delphi窗体动态设计 在系统运行时动态更改控件属性
    DB.ASP 用Javascript写ASP很灵活很好用很easy
    CrazyScan Satellite scan software 卫星扫描
    delphi中窗体半透明效果如何实现
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7339230.html
Copyright © 2020-2023  润新知