zoukankan      html  css  js  c++  java
  • ida 动态调试apk

    前提条件: Android机器root

    adb shell 命令进入手机控制台

    1. 将调试服务器上传到Android机器【本地电脑控制台】

    adb push /Applications/IDA Pro 7.0/ida.app/Contents/MacOS/dbgsrv/android_server  sdcard

    2. 加上可执行权限【手机控制台】

    chmod +x  ./data/media/0/android_server

    3, 执行【手机控制台】

     ./data/media/0/android_server

     

    4. 本地的代理服务 代理android_server

    adb forward tcp:23946 tcp:23946

    5. 运行希望调试的android应用【本地电脑控制台】

    adb shell am start -D -S -n com.bank.rummy/org.cocos2dx.javascript.AppActivity

    6.获取进程ID 【手机控制台】 说明bank为android应用关键字

    关键字信息,可以通过jeb反编译软件或者jadx获取。

    wayne:/ # ps -A | grep bank
    
    u0_a163      24348  8466 2127580 237540 SyS_epoll_wait f0a6af94 S com.bank.rummy
    

      

    7. 创建一个本地的代理服务,将jdwp数据转发到准备调试的进程

    模版:adb forward tcp:本地监听端口 jdwp:准备要调试的进程ID

    如: adb forward tcp:23947 jdwp:24348

    23947端口是随意指定的。 

    8. 连接本地的代理服务

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

     说明:

    jdb是调试Java的客户端。

    在第7步骤和第8步骤之间可以使用ida连接,准备调试Android应用的so文件, 具体步骤如下:

    1.

     2.

    此步骤需要强调的是: hostname可以写127.0.0.1, 因为本地开启代理服务,转发数据到android_server.   第4步设置的。

    3.

     4. 选择想要调试的进程后,稍等片刻后,ida会自动断点,这是程序入口断点。此时还没有加载我们要调试的so文件。继续运行后, 还需要执行第8步使用jdb才行。

     5.已经出现了我们想要调试的so文件。libcocos2djs.so

     6. 选择关键点下断点。 xxtea_decrypt

  • 相关阅读:
    Unity3D中使用委托和事件
    进程与线程浅析(三)之线程三国战斗模拟
    NGUI学习笔记(一)UILabel介绍
    Mongodb学习笔记(2)--修改器
    Mongodb学习笔记(1)--入门
    Java8学习笔记(七)--Collectors
    Java8学习笔记(六)--Optional
    Java8学习笔记(五)--Stream API详解[转]
    Java8学习笔记(四)--接口增强
    Java8学习笔记(三)--方法引入
  • 原文地址:https://www.cnblogs.com/dzqdzq/p/11229094.html
Copyright © 2011-2022 走看看