• 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函数是在用户操作的时候才能触发,只需要下好断点,用户进行触发即可

  • 相关阅读:
    PostgreSQL管理工具:pgAdminIII
    PostgresQL7.5(开发版)安装与配置(win2003测试通过)
    让PosggreSQL运行得更好
    在.NET程序中使用PIPE(管道技术)
    在浏览网页过程中,单击超级链接无任何反应
    字符串转换
    数组初始化
    使用现有的COM
    后台服务程序开发模式(一)
    COM的四本好书
  • 原文地址:https://www.cnblogs.com/gordon0918/p/5594067.html
Copyright © 2020-2023  润新知