• android调试系列--使用ida pro调试so


    1、工具介绍

    IDA pro: 反汇编神器,可静态分析和动态调试。

    模拟机或者真机:运行要调试的程序。 

    样本:阿里安全挑战赛第二题:http://pan.baidu.com/s/1eS9EXIM

    2、前期准备

    2.1  安装样本程序

    adb install AliCrackme_2.apk

    2.2 上传android_server文件

    adb push android_server /data/local/tmp/
    adb shell chmod 777 /data/local/tmp/android_server

     

    3、调试步骤

    3.1  开启android_server,监听23946端口,与IDA pro通信

    adb shell /data/local/tmp/android_server

    3.2  设置本地端口转发

    adb forward tcp:23946 tcp:23946

    3.3  以调试模式启动程序

    adb shell am start -D -n com.yaotong.crackme/.MainActivity

    3.4 启动IDA pro,点击Debugger->attach->Remote ARMLinux/Android debugger,输入localhost,选择要调试的进程即可。

    image

    3.5 附加程序成功后,选择,Debugger option,勾选

           suspend on process entry point

           suspend on thread start/exit

           suspend on library load/unload

           三项,然后按f9运行调试程序,此时IDA pro 挂起

    3.6  使用jdb恢复程序执行

    jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

    3.7 此时IDA pro断在linker中,此时module中并没有libcrackme.so,说明licrackme.so还没有加载到内容中,只需要跟几步f8,在寄存器中看到libcrackme.so加载进来了,就可以在module中找到,有两种情况

           1、如果IDA Pro能够解析成功,双击module中的libcrackme.so就可以看到它export的函数,就可以右键下断点了

           2、如果IDA Pro解析失败,需要再开一个IDA,查找到要下断的函数地址,加上libcrackme.so加载到内存的地址即可(在init_array下断只能使用这种方法)。

    3.8  IDA Pro按F9几次,直到断在自己下断的地方即可

    3、总结

    本章内容和调试原生程序有重复,就省略了一些内容。

    另外还有一种so函数是在用户操作的时候才能触发,只需要下好断点,用户进行触发即可

  • 相关阅读:
    [USACO08JAN]牛大赛Cow Contest
    [USACO07NOV]牛栏Cow Hurdles
    [USACO09JAN]最好的地方Best Spot
    [USACO08OPEN]寻宝之路Clear And Present Danger
    [BZOJ 1146] [CTSC2008]网络管理Network(树状数组+主席树)
    bzoj4009: [HNOI2015]接水果(整体二分)
    【bzoj2141】排队 [国家集训队2011]排队(树套树)
    洛谷P4689 [Ynoi2016]这是我自己的发明(树上莫队+树链剖分)
    【bzoj3083】遥远的国度(树链剖分+线段树)
    CF311B Cats Transport(斜率优化)
  • 原文地址:https://www.cnblogs.com/gordon0918/p/5594067.html
Copyright © 2020-2023  润新知