Android平台GDB调试环境搭建

2023-05-16

一、背景

Android系统采用GDB(The GNU Project Debugger,GNU工程调试器)作为原生程序的调试器,GDB调试源码的程序优势非常明显;但Android平台逆向分析的对象通常为无源码的二进制可执行程序,此类调试场景中IDA调试器的优势会特别明显,但本文依然介绍GDB调试Android平台非源码Native程序的环境搭建,以供读者参考和学习。

二、Android平台IDA调试环境搭建

Android中GDB调试非源码的环境搭建步骤较为繁琐,调试环境搭建步骤如下:

1、环境变量的设置,包含:android-sdk-windows\platform-tools;android-sdk-windows\tools;android-ndk-r9;android-ndk-r9\prebuilt\windows\bin;等等目录android-sdk-windows是sdk的目录;android-ndk-r9是NDK的目录。(一般情况需要开启三个CMD)

2、切换到目录android-ndk-r9\prebuilt\android-arm\gdbserver,使用命令adb push gdbserver /data/gdbserver 把gdbserver放入手机里。

3、另外开一个命令行程序,使用命令adb shell进入shell,然后输入su获取root权限。

4、使用命令chmod 777 /data/gdbserver, 给予gdbserver文件可执行权限。

5、使用命令ps 查看系统进程,获取需要调试的进程的pid信息。后面假定我需要调试的目标进程的pid值为205。

6、使用命令cat /proc/205/maps 获取指定进程的模块信息以及模块基址信息。其中205需替换成你的目标进程pid。

7、使用命令/data/gdbserver :1234 --attach 205 对指定进程进行attach调试,其中205需要替换成你的目标进程pid。(1234表示在tcp 1234端口监听,调试事件都发送到该端口上。直接从入口运行程序命令为(例如):/data/gdbserver :1234 /data/test)

8、另外开一个命令行程序,使用命令adb forward tcp:1234 tcp:1234 把手机的1234端口和本机的1234端口关联起来。

9、运行gdb程序命令:arm-linux-androideabi-gdb.exe,再使用命令target remote :1234调试程序。

依次通过以上步骤之后便可在GDB中调试非源码程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android平台GDB调试环境搭建 的相关文章

  • Android:如何在多语言资源中重用字符串

    自从我的第一个 Android 项目以来 这个问题一直困扰着我 考虑以 en 作为默认值的多语言字符串资源 res values strings xml lt The default language en res values de st
  • Android 中的短信编码

    我的问题是我想发送特定类别和特定编码的短信 0 类和 7 位编码 当检查 Android Telephony SmsManager 和 SmsMessage 时 您无能为力 SmsManager 提供两个功能 发送文本消息和发送数据消息 如
  • 在 Android 中获取联系方式需要花费大量时间?

    您好 目前正在做一个与联系人相关的项目 我正在从联系人中获取详细信息 电子邮件 电话号码和联系人姓名 效果很好 但问题是获取联系方式需要很长时间 超过 1000 个联系人 包括从社交网站同步的联系人 这样我就放了一个Asynchronous
  • 带有 CollapsingToolbarLayout 的 PreferenceFragment

    我想要具有滚动活动的首选项片段 例如 Telegram 应用程序 我用了一个android support v7 widget RecyclerView in FrameLayout这是我的活动 xml
  • 如何在android中将多个图像合并为一个图像?

    我正在开发 android 的分布式应用程序 我已将单个图像分成 4 个部分 然后对其进行处理 现在我想将 4 个位图图像组合成一个图像 我怎样才能做到这一点 Bitmap parts new Bitmap 4 Bitmap result
  • 将片段部分移出屏幕

    我已经被这个问题难住有一段时间了 我试图将包含在 FrameLayout 中的片段向右移动 以便只有片段的左侧 20 可见 我认为我遇到的问题是父级不会让片段移出其边界 或者我不知道如何移动它 我所尝试的一切只是将片段推到右墙上 然后缩放片
  • 从非风味应用程序引用的 Android 多风味库 - AAPT:找不到资源

    我有包含字符串资源的库
  • Robolectric 1.2:“警告:无法找到 Android SDK 的路径”

    I used Robolectric 1 1 jar 与依赖项 在我的项目中并成功使其工作 但是当我将罐子更改为 1 2 SNAPSHOT jar 与依赖项 我收到以下警告 警告 无法找到 Android SDK 的路径 两个jar包都下载
  • com.google.android:android:jar 的 dependency.dependency.version' 丢失

    我正在尝试使用 Eclipse 运行一个简单的虚拟 Android 项目 并且我正在尝试使用 Maven amd 我已按照已接受答案的教程进行操作this https stackoverflow com questions 6735562
  • 如何使用 Retrofit 2 和 RxJava 处理分页

    我知道如何处理 Retrofit 响应 但在使用 rx java 处理来自 REST API 的分页时遇到问题 背景 我使用的其余 api 为我提供了以下响应 并在标题中提供了下一页的链接 HTTP 200 OK Allow GET HEA
  • Android 上的嵌套滚动

    我们的活动中有一个主要的水平滚动视图 以及嵌套在其中的几个垂直滚动视图 这个想法是水平滚动 直到找到所需的垂直列表 然后上下滚动 理想情况下 一旦开始垂直滚动 我希望垂直滚动具有 锁定 现在会发生什么 如果您非常小心 您可以垂直滚动 但如果
  • Android - 如何设置所有屏幕的背景颜色?

    维护字体和颜色样式的最佳实践是什么 我制作了一个 color xml 文件 用于更改按钮等单独元素的颜色 但我不确定 Android 希望开发人员如何组织他们的样式 例如 我希望所有屏幕都具有相同的背景颜色 我怎么做 我需要为每个 Acti
  • 使用 Delphi 10.2.1 Tokyo 的模态 Android 对话框

    我有以下用于在 Android 上显示模式消息的 Delphi 代码 该代码在 10 1 Berlin 上运行良好 但在 Delphi 10 2 1 Tokyo 上停止运行 此过程现在会挂起 Android 应用程序 procedure c
  • Android Fragment 中的 SharedPreferences

    我正在尝试读取 Fragment 内的 SharedPreferences 我的代码用于获取任何其他活动中的首选项 SharedPreferences preferences getSharedPreferences pref 0 我收到错
  • Android 缩放和密度问题

    Update 一些研究表明 华硕 Transformer TF700T 高端 的像素密度应约为 224 因此 android 报告的 159 值要么是错误的 要么已被某种方式修改 system 中的 lcd 密度键 build prop 由
  • 抽屉式导航不显示片段

    我创建了一个新的 Android Studio 项目 我的 MainActivity 是导航抽屉活动 所以 我无法显示碎片 我在互联网上和这里读过很多帖子 解释 我打开导航抽屉 选择菜单 播客 PodcastsFragment 应该显示 但
  • XML 文档结构必须在同一实体内开始和结束

    我是 eclipse 的新手 我刚刚开始编写一些代码 实际上只是从网站复制并粘贴 谁能帮我解决这个问题 错误出现在最后一行
  • Android 中 Activity 的服务回调

    我有我的 GPSTracker 的摘要 它返回用户的位置 其作品 public class GPSTracker extends Service implements LocationListener public GPSTracker C
  • startDrag 方法 已弃用且无法编译程序

    startDrag android content ClipData android view View DragShadowBuilder java lang Object int 已弃用 如何解决这个问题而又不失去对旧版本的兼容性 还有
  • PinnedHeaderListView 滚动和标题问题

    背景 我正在尝试模仿 Lollipop 的联系人应用程序显示联系人首字母的固定标题的方式 正如我所写的here https stackoverflow com q 27621425 878126 问题 由于原始代码 发现here http

随机推荐

  • 【每日一题-17】线索化二叉树与单例模式

    将二叉搜索树转换成一个排序的双向链表 提示 xff1a 要求不能创建任何新的结点 xff0c 只能调整树中结点指针的指向 xff0c 也就是left当prev xff0c right当next 中序线索化的变型 span style fon
  • go学习笔记(1)——感悟

    在接触到go语言之前 xff0c 我本人一直学习的是C C 43 43 语言 xff0c 本想着凭借原有的语言功底能够很快的去自学任何一门新的编程语言 xff0c 只不过渣小白毕竟还是渣 xff0c go语言的更新对于其他语言的一些继承和更
  • go学习笔记(2)——go环境安装及代码包说明

    Linux下go的环境变量的配置 首先将下载的go的安装包解压到 usr local中 xff08 1 xff09 下载方法 xff1a go 1 8 Linux x86 64 下载 wget http ark mytorchwood co
  • go学习笔记(3)——go命令行

    go命令行清单 在安装好go机器上的Terminal中输入 go help 命令 xff1a Usage go command arguments The commands are build compile packages and de
  • go学习笔记(4)——比较两个类型相等

    字符串比较方法 xff1a xff08 1 xff09 61 61 xff1a 逐个比较且不分大小写 xff0c 相等返回true xff0c 不相等返回false fmt Println 34 你好 34 61 61 34 你好 34 t
  • 2021年校招软件测试工程师经典面试题,月薪15K你需要掌握哪些知识点?

    软件测试工程师 xff0c 和开发工程师相比起来 xff0c 前期可能不会涉及太深奥的内容 xff0c 但是涉及的面还是比较广的 面试实习生或者一年左右的岗位 xff0c 问的也主要是一些基础性的问题比较多 涉及的知识主要有MySQL数据库
  • CCF2021-9-19

    一共五道题目 xff0c 可以带参考书和纸笔进考场 xff0c 忘了带纸笔 xff0c 带了本参考书没用上 xff0c 总体做的情况不太好 第一题和第二题都是使用数组 xff0c 第一道题拿了满分 xff0c 第二题70 xff0c 后面数
  • go学习笔记(5)——字符串拼接方法

    字符串拼接清单 xff1a xff08 1 xff09 使用 43 61 运算符直接进行拼接 xff1a 需要注意的是 xff0c go语言拼接的两个对象必须得全部都是字符串类型 xff0c 否则会出现直接报类型不匹配的错误 xff0c 关
  • go学习笔记(6)——音乐播放器实现

    声明 xff1a 首先说明这个项目来自于许式伟的 Go语言编程 xff0c 书中也给出了详尽的源代码描述 xff0c 不过代码中还是存在一些问题 xff0c 首先说明一下所存在的问题 问题一 xff1a 音乐的播放结构体中定义了五个属性字段
  • Go格式化输出

    1 GO数据类型转化为JSON类型 函数原型 xff1a func Unmarshal data byte v interface err GO数据类型输出为JSON类型示例 package main import 34 encoding
  • C学习回顾1

    1 求下面程序的输出 include lt stdio h gt int main int i 61 43 printf 34 d n 34 printf 34 d 34 printf 34 d 34 i 4321 return 0 结果分
  • golang Unmarshal拿不全数据问题

    说明 xff1a 这个问题出现在后端调用json Unmarshal方法去解析数据库中存的数据时 xff0c 解析出来的结果中只能拿到部分数据 xff0c json格式经检查后正确无误 xff0c 同时也没有字段名出错等低级错误 首先来看要
  • Golang开发新手常犯的50个错误

    50 Shades of Go Traps Gotchas and Common Mistakes for New Golang Devs 原文地址 xff1a http devs cloudimmunity com gotchas and
  • Go学习之regexp包学习

    Go中regexp包主要存放的是处理正则表达式相关的结构和处理函数 xff0c 具体的函数原型可以在GOROOT中寻找相应的包查看 下面只是给出各个不同的函数的功能和使用方法 xff0c 正则表达式的基本概念可以查看正则表达式基本概念学习总
  • Go1.1.1新功能module的介绍及使用

    Go1 1 1版本发布 2018 08 24发布 已经过去几天 xff0c 从官方的博客中看到 xff0c 有两个比较突出的特色 xff0c 一个就是今天讲的module xff0c 模块概念 目前该功能还在试验阶段 xff0c 有些地方还
  • linux系统故障(一)之grub恢复

    linux系统故障 xff08 一 xff09 之grub恢复 前言 1 什么是linux系统故障 xff1f 2 什么是grub xff1f 3 grub坏了我们怎么恢复 xff1f 4 grub恢复的具体方法 xff1f 实验环境 本次
  • MSCOCO数据集下载安装---image_caption(内涵报错)

    参考博客 xff1a https blog csdn net ccbrid article details 79368639 在linux上 步骤 1 git clone cocoapi2 进入文件夹3 放入image和annotation
  • Ubuntu安装RTL8812AU无线网卡

    Ubuntu安装RTL8812AU无线网卡 下载资源解压并使用管理员权限 xff0c 运行以下指令重新插拔无线网卡 xff0c 安装成功 下载资源 链接 xff1a https pan baidu com s 161Pje1p27yuzDt
  • Linux线程--生产者消费者模型

    在生产者 消费者模型中 xff0c 主程序分别启动了生产者线程和消费者线程 xff0c 其中生产者线程不停的写入共享的循环缓冲区 xff0c 二消费者线程这不停的从缓冲区中取出数据 在生产者写入缓冲区时 xff0c 首先要获得互斥锁 xff
  • Android平台GDB调试环境搭建

    一 背景 Android系统采用GDB xff08 The GNU Project Debugger xff0c GNU工程调试器 xff09 作为原生程序的调试器 xff0c GDB调试源码的程序优势非常明显 xff1b 但Android