文章目录

  • 一、代码调试器功能简介
  • 二、Attach 进程

一、代码调试器功能简介


代码调试器功能 :

  • 设置断点 : 无论什么类型的调试器 , 都必须可以设置断点 , 运行到断点处 , 挂起被调试进程 , 读取当前状态的 CPU 寄存器和内存数据 ;

    • arm 架构中 , 有一个单步调试标志位 , 将该标志位设置为 1 , 即可进行单步调试 ;
    • x86 架构中 , 主要是靠 int3 触发 , int3 对应 0xCC 机器码 , 将该机器码写入指令指定位置后 , 就会执行中断 , 调试器捕获该中断处理 , 就可以进入调试 ;
    • 如果没有设置断点 , 想要调试程序 , 只能在系统调用时 , 触发中断 ; 如 : printf , 打印日志 , 文件改变 , 显示内容改变 等 ;
  • 读写内存 : 可以读写 被调试进程 的内存数据 ;
  • 读写寄存器 : 可以读写 被调试进程 的 CPU 寄存器数据 ; 如果有多个线程 , 默认读写主线程寄存器 ;
  • 恢复运行 : 调试完毕后 , 还需要可以恢复运行 ; 调用 ptrace 函数 , 传入 PTRACE_CONT 参数 , 就可以继续进行 ;

上述所有操作 , 都是通过调用 ptrace 方法完成的 , 只是传入不同的参数 , 执行不同的操作 ;

参考 【Android 逆向】ptrace 函数 ( ptrace 函数族 | 进程附着 | 进程脱离 | 进程数据读写权限 | 进程对应的主线程寄存器读写 | 单步调试 |ptrace 函数族状态转换 ) 博客 ;

二、Attach 进程


进程 A 调试 进程 B , 首先要 attach 进程 B , attach 操作需要指定 进程 B 的 进程号 PID ;

进程 ID 在当前系统运行时是唯一的 ; 进程 B 每次启动时 , 进程号是随机分配的 , 值并不固定 ;

PID 进程号的取值范围 0 ~ 32767 ; 上限是 65535 一半 ;

一般情况下 1000 以下的进程号 , 是系统进程使用的 ;

以 非 root 权限执行的进程 , 都是 1000 以上的进程号 ;

Attach 进程代码 : PTRACE_ATTACH 参数表示该函数操作是 Attach 被调试进程 , nPid 参数为 进程 PID ;

ptrace(PTRACE_ATTACH, nPid, NULL, 0)

ptrace 函数参考文档 : https://man7.org/linux/man-pages/man2/ptrace.2.html

【Android 逆向】代码调试器开发 ( 代码调试器功能简介 | 设置断点 | 读写内存 | 读写寄存器 | 恢复运行 | Attach 进程 )相关推荐

  1. Android平台手机UI应用开发——软件管理器

    第一次写博客,与大家分享源代码,博客很多地方不知道怎么设计,望见谅. 希望大家多多支持,雅林和大家一起学习Android,共同进步. 今天我们要做的这个软件管理器,主要目的是为了学习Android平台 ...

  2. Arduino终于支持代码补全了!小白们终于可以愉快的写代码了!Arduino IDE 2.0beta功能简介...

    Arduino终于支持代码补全了!小白们终于可以愉快的写代码了!Arduino IDE 2.0beta功能简介 前一段时间听到有人说Arduino的IDE特别不好用,功能太单一,最重要的是没有代码补全 ...

  3. Android逆向之旅---应用的反调试方案解析(附加修改IDA调试端口和修改内核信息)

    一.前言 在前一篇文章中详细介绍了 Android现阶段可以采用的几种反调试方案策略,我们在破解逆向应用的时候,一般现在第一步都回去解决反调试,不然后续步骤无法进行,当然如果你是静态分析的话获取就没必 ...

  4. Android逆向笔记-通过tracerPid对抗IDA调试

    这个TracerPid是追踪进程ID,如果没有进程对其追踪就是0. 在Linux中,每个进程都会在/proc/id这个id就是进程id创建目录,并且有个status文件,这个文件就可以查tracerP ...

  5. linux 内核启动调试,内核开发和调试的启动时参数

    内核开发和调试的启动时参数 这些参数主要用在内核的开发和调试上,如果你不进行类似的工作,你可以简单的跳过本小节. 1.debug linux的日志级别比较多(详细信息可以参看linux/kernel. ...

  6. android vr播放器 躺着,Android使用得图SDK开发VR播放器

    产品概述 Android SDK包含全景图片.VR视频.漫游主题等多种展示方式,支持小行星模式.陀螺仪.VR双屏沉浸式观看.文件下载.解码都在播放器中完成,您只需一个链接地址或是一条配置即可展现炫酷的 ...

  7. 【Android 高性能音频】Oboe 开发流程 ( Oboe 音频帧简介 | AudioStreamCallback 中的数据帧说明 )

    文章目录 一.音频帧概念 二.AudioStreamCallback 中的音频数据帧说明 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Started ② ...

  8. 【Android 逆向】ptrace 函数 ( C 标准库 ptrace 函数简介 | ptrace 函数真实作用 )

    文章目录 一.C 标准库 ptrace 函数简介 二.ptrace 函数真实作用 一.C 标准库 ptrace 函数简介 ptrace 函数 : 在 C 标准库 中有一个 ptrace 函数 , 该函 ...

  9. SkeyeWebPlayer.js H5播放器开发之播放器控制栏部分功能的实现(四)

    SkeyeWebPlayer.js H5免费播放器 支持Websocket-RTSP播放; 支持 m3u8(HLS) 播放; 支持 HTTP-FLV/WS-FLV 播放; 支持 HEVC/H265 播 ...

最新文章

  1. Google发布神经天气模型,几秒钟预测整个美国的降水量
  2. 网站SEO优化中该如何解决网站改版问题?
  3. 20155338 《网络攻防》 Exp7 网络欺诈防范
  4. 数据结构一:链表(约瑟夫问题)
  5. git 在 A 项目中引用 B 项目
  6. python编译文件瘦身_python优化、编译文件
  7. 《深入理解Kafka:核心设计与实践原理》笔误及改进记录
  8. iOS -- SKScene类
  9. 【Intellij Idea】设置JDK
  10. 强烈推荐!孩子的科普从这套全球畅销250万册的最酷科学书起步
  11. [转]URLRewriter使用通配符
  12. python中的面向对象:类与对象(重点!!!)
  13. os是android5.0,Funtouch OS 2.1曝光 完美改Android5.0
  14. python在末尾加关闭程序_廖雪峰的Python教程教程-02
  15. 《Pro SQL Server Internals, 2nd edition》的CHAPTER 2 Tables and Indexes中的Clustered Indexes一节...
  16. Ffmpeg 微信amr转换Mp3
  17. python的contour怎么画虚线_Python+Matplotlib画contour图
  18. 高等代数 :2 行列式
  19. iphone充电图_为什么我的iPhone无法充电?
  20. k8s(二):cenos7下搭建k8s集群(kubeamd方式)

热门文章

  1. 今年阿里双十一CDN要冲历史之最,峰值带宽达到5000G+,来高手分析一下他们的CDN节点数量和规模...
  2. 菜鸟学Java(十一)——GET与POST
  3. DirectX标准规定 DirectX和OpenGL的不同
  4. Java中Date及Timestamp时间相关内容【转】
  5. 4.ClassLink - 一种新型的VPC 经典网络的连接方式
  6. python3 练习题100例 (二十二)输入两个字符串,输出两个字符串集合的并集
  7. 腾讯SNG的实习offer(多篇面经分享)
  8. 在线引入bootstrap包
  9. C#模板设计模式使用和学习心得
  10. 1191: 冰法斗神龙 暴力枚举