侧边栏壁纸
博主头像
LanBaiCode博主等级

逆向、开发的记录

  • 累计撰写 18 篇文章
  • 累计创建 0 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

【Android】使用ida调试app的2种方法

LanBaiCode
2023-10-30 / 0 评论 / 0 点赞 / 350 阅读 / 610 字 / 正在检测是否收录...

导语

逆向基本上离不开ida,今天讲下如何使用ida来调试app

app运行时调试

第一种方法就是在app运行时,使用ida的Attach命令通过pid来附加上去

安装server

  1. 找到ida的安装目录,找到dbgsrv目录
    image-1698655593632
    image-1698655607327
  2. android_server64android_server32push到手机上
    image-1698655648282
    执行以下命令:
    adb push android_server64 /data/local/tmp && adb push android_server /data/local/tmp 推送到手机

运行server

  1. adb shell进入手机环境
  2. su获取root权限或者执行adb root这样一开始就有root权限
  3. cd /data/local/tmp切换到tmp目录
  4. chmod 777 android_server64 && chmod 777 android_server修改执行权限
  5. ./android_server64运行server
  6. 得到一个端口23946
    image-1698656324066

端口转发

  1. adb forward tcp:23946 tcp:23946运行完后需要新开一个终端进行端口转发

ida附加进程

  1. ida左上角导航栏Debugger->Attach->Remote ARMLinux/Android debugger
  2. 点击ok即可
    image-1698656438379
  3. command(curl) + F搜索目标进程的包名
    image-1698656473899
  4. 运行完后点击这里即可恢复进程
    image-1698656533830

app启动时调试

我们都知道,使用注入或者Hook的时候时机很关键,如果时机不正确,做再多也是白费,这时候需要在应用启动的第一时间附加上去

临时获取全局可调试权限

  1. adb shell进入手机环境
  2. su获取root权限或者执行adb root这样一开始就有root权限
  3. magisk resetprop ro.debuggable 1设置全局可调,重启失效
  4. stop;start;,以此种方式重启

以调试模式启动app

图形化

  1. 在手机的开发者选项中选择app
  2. 这种方法只适用于带有debug标志的应用
    image-1698656928383

adb命令

  1. 获取app的包名和启动类
  2. 一般都在AndroidManifest.xml中的android.intent.category.LAUNCHER上面
    image-1698657022064
  3. adb shell am start -D -n com.XXX.XXX/启动MainActivity
  4. 根据图中的,即为:adb shell am start -D -n com.aster.zhbj/com.aster.comic.app.view.WelcomeActivity
  5. 这时候会停在这个界面
    image-1698657147787
  6. 还需要启动Java层的调试器
  7. 首先使用ida附加进程得到PID
    image-1698657493773

ida附加完毕后,记得放行,不然后面的命令无法执行

  1. 打开monitor,mac如果打开白屏,需要下载旧版本的jdk1.8并设置相应的环境变量
  2. 检查端口
    image-1698675534143
  3. jdb -connect com.sun.jdi.SocketAttach:127.0.0.1,port=8656# 具体的端口看monitor jdb命令
0

评论区