欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ida动态调试apk(so层)

发布时间:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ida动态调试apk(so层) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

    • 查看所有设备
    • 在IDA里面找到android_server(dbgsrv目录)
    • 提权
    • 运行android_server服务端进行监听
    • 端口转发
    • 打开DDMS:观察程序的端口号
    • 打不开monitor.bat报错(Androidstudio/tools)
      • 报错1
        • 原因
      • 报错2
        • 原因
    • 总结monitor.bat所需的jdk
    • 挂起程序
      • 注意
    • 打开ida,进行调试
      • 由于目标计算机积极拒绝,无法连接。 when connecting to 127.0.0.1:23946
      • 因为没进行端口转发
    • 进程列表:选择要调试的程序(可以ctrl+f,搜索包名)
    • 进入后勾选三项:
      • 补充:
    • 挂载、释放(放手)

查看所有设备

adb devices

在IDA里面找到android_server(dbgsrv目录)

adb push C:\Program Files\IDA Pro 7.5 SP3\dbgsrv\android_server data/local/tmp/android_server adb push C:\Program Files\IDA Pro 7.5 SP3\dbgsrv\android_server64 data/local/tmp/android_server64

提权

adb shell su cd data/local/tmp chmod 777 android_server64 chmod 777 android_server

运行android_server服务端进行监听


端口号默认是:23946
补充:运行andorid_server并且修改端口号:./android_server -p端口号

端口转发

因为android_server监听的是23946,所以呢,我们转发端口也就需要转发23946

adb forward tcp:23946 tcp:23946

打开DDMS:观察程序的端口号

打不开monitor.bat报错(Androidstudio/tools)

报错1

原因

因为你的jdk不是64bit

报错2

!ENTRY org.eclipse.osgi 4 0 2021-06-16 15:16:45.533 !MESSAGE Application error !STACK 1 java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:567)at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)at org.eclipse.equinox.launcher.Main.run(Main.java:1438)

原因

因为你的jdk不是1.8的

总结monitor.bat所需的jdk

  • 版本不能太高(最好是1.8,也就是JAVASE8)
  • 必须是64bit,不能是32bit
  • 挂起程序

    adb shell am start -D -n 包名/类名

    adb shell am start -D -n com.example.ichunqiu_2/com.example.ichunqiu2.P_ichunqiu

    注意

    这里的包名和类名不一定一样,(不一样的时候不能省略,不能写成这样)

    adb shell am start -D -n com.example.ichunqiu_2/.P_ichunqiu

    打开ida,进行调试

  • 打开ida,选择debugger -第二项-Remote ARMlinux(第四项)
  • 添加hostname和port:
  • hostname:主机号(默认127.0.0.1)
    port:端口号(之前android_server运行时的端口号或者端口转发的端口号)

    如果出现以下原因

    由于目标计算机积极拒绝,无法连接。 when connecting to 127.0.0.1:23946

    因为没进行端口转发

    在cmd里面输入adb forward tcp:23946 tcp:23946

    进程列表:选择要调试的程序(可以ctrl+f,搜索包名)

    进入后勾选三项:

  • Suspend on process entry point程序入口点 断下
  • Suspend on thread start/exit线程的退出或启动 断下
  • Suspend on library load/unload库的加载和卸载 断下
  • 补充:

    可以直接在这里F9(左上角有一个三角形)运行程序,然后放手;
    也可以,直接执行第九步,然后IDA运行程序

    挂载、释放(放手)

    jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=端口号

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

    总结

    以上是生活随笔为你收集整理的ida动态调试apk(so层)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。