• 以调试模式启动安卓so动态调试步骤摘要


    步骤有点繁琐,这里记录要点


    准备阶段:
    创建模拟(mumu、雷电、Genymotion收费、avd不建议使用太占用内存)或者准备具有root权限的真机建议使用一家、nexus、pixel、小咪等等
    安卓设置点按10次版本号出现 开发者选项 ,开启调试模式,手机数据线链接电脑usb口
    准备adb、ddms、ida32位 、jdk 工具,并且安装好,这个自己百毒
    准备好将要调试的app。它在配置清单文件中配置了可调试,如果没有配置,可以逆向后手动添加,或者安卓系统开启强制可调式开关,一般app会默认配置有可调式。在app配置清单文件查看该app的包名和类名,后面要用。

    开启调试功能:
    1.运行android_ server
    在IDA里面找到android_ server(dbgsrv目录),把android_ server文件放到手机/data/local/tmp,
    命令
    adb push 文件名/ data/local/tmp/
    adb shell
    su
    cd /data/local/tmp
    chomd 777 android_ server
    ./android server [-p端口号] #(端口号默认是: 23946)

    2.端口转发
    adb forward tcp:端口号 tcp:端口号(上面端口号是什么,这里就是什么,比如adb forward tcp:23946 tcp:23946,我这里解释下这是什么意思, 语法是 forward [--no-rebind] LOCAL REMOTE 第一个是电脑本地端口,第二个是手机端口,adb在电脑本地端口上监听发来的链接,收到链接会通过数据线转发到手机android_ server调试端口号上)

    4.启动app调试模式:

    启动DVM虚拟机调试模式
    打开DDMS:观察程序的端口号,这不一定必须要ddms,也可以使用adb shell
    ps aux | findstr "包名",找到pid
    netstat -ano|findstr "pid"
    adb shell am start -D -n 包名/类名
    例子: adb shell am start -D -n com.example.javandk1/.MainActivity

    补充:此时观察DDMS,被调试的程序前面有一个红色的虫子;

    5.开启IDA关联app
    1)打开ida,选择debugger -第二项Remote ARMlinux (第四项)
    2)添加hostname和portt:
    hostname:主机号(默认127.0.0.1)
    port:端口号(之前android server运行时的端口号或者端口转发的端口号)
    3)出来进程列表:选择要调试的程序(可以ctrl+f,搜索包名)
    4)进来后,勾选三项:
    Suspend on process entry point程序入口点断下
    Suspend on thread start/exit线程的退出或启动断下
    Suspend on library load/unload库的加载和卸载断下
    补充:可以直接在这里F9 (左上角有一个三角形)运行程序
    也可以,直接执行第7步,然后IDA运行程序

    6.
    jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=端口号 (这里ddms看到的端口号)
    补充:此时观察DDMS,被调试的程序前面有一个绿色的虫子;

    1~创建模拟器(有真机可以忽略这个) 要记得打开ddms(要不然后面会报错)
    2~在IDA里面找到android_server(dbgsrv目录)
    3~把android_server文件放到手机/data/local/tmp
    adb push 文件名 /data/local/tmp/as
    4~打开一个cmd窗口:运行android_server
    1)adb shell 连接手机
    2)给一个最高权限:su
    3)来到/data/local/tmp:cd /data/local/tmp
    4)给androi_server一个最高的权限:chomd 777 android_server
    5)查看android_server是否拥有权限:ls -l
    6)运行andorid_server: ./android_server(端口号默认是:23946)
    补充:运行andorid_server并且修改端口号:./android_server -p端口号
    5~端口转发:
    adb forward tcp:端口号 tcp:端口号(之前转发的端口号是什么,这里就是什么)
    adb forward tcp:23946 tcp:23946
    6~打开DDMS:观察程序的端口号
    7~挂起程序:
    adb shell am start -D -n 包名/类名
    例子:adb shell am start -D -n com.example.javandk1/.MainActivity
    adb shell am start -D -n com.yaotong.crackme/.MainActivity
    补充:此时观察DDMS,被调试的程序前面有一个红色的虫子;
    8~IDA里面勾选三项
    1)打开ida,选择debugger -第二项-Remote ARMlinux(第四项)
    2)添加hostname和portt:
    hostname:主机号(默认127.0.0.1)
    port:端口号(之前android_server运行时的端口号或者端口转发的端口号)
    3)出来进程列表:选择要调试的程序(可以ctrl+f,搜索包名)
    4)进来后,勾选三项:
    Suspend on process entry point程序入口点 断下
    Suspend on thread start/exit线程的退出或启动 断下
    Suspend on library load/unload库的加载和卸载 断下
    补充:可以直接在这里F9(左上角有一个三角形)运行程序,然后放手;
    也可以,直接执行第九步,然后IDA运行程序
    9~挂载、释放(放手)
    jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=端口号
    补充:此时观察DDMS,被调试的程序前面有一个绿色的虫子;

  • 相关阅读:
    机器学习的模型泛化
    机器学习中的过拟合和欠拟合及交叉验证
    sklearn中的多项式回归算法
    PCA算法提取人脸识别特征脸(降噪)
    sklearn中调用PCA算法
    python实现PCA算法原理
    PCA主成分分析算法的数学原理推导
    python表白实现代码(可视化与动画版)
    《C++ Primer Plus》第7章 函数——C++的编程模块 学习笔记
    C++函数指针
  • 原文地址:https://www.cnblogs.com/GKLBB/p/15049316.html
Copyright © 2020-2023  润新知