文章目录

  • 一、C 标准库 ptrace 函数简介
  • 二、ptrace 函数真实作用

一、C 标准库 ptrace 函数简介


ptrace 函数 : 在 C 标准库 中有一个 ptrace 函数 , 该函数是一个系统调用方法 , 可以监视进程执行 , 查看 / 更改 被监视进程的 内存 和 寄存器 情况 , 常用于断点调试 ;

ptrace 函数对应的系统调用本质 : ptrace 标准库函数实际上调用的是 系统调用 __NR_ptrace ; 系统调用号 26 ;

ptrace 函数原型 : ptrace 函数实际上是由一系列的函数组成 , 具体调用哪个函数 , 要根据第一个参数确定 ;

       #include <sys/ptrace.h>long ptrace(enum __ptrace_request request, pid_t pid,void *addr, void *data);

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

注入的原理就是围绕 ptrace 函数进行的一系列操作 ;

Linux 系统分为 用户层 和 内核层 , 在用户层调用的方法就是普通调用 , 内核层调用的方法是 系统调用 ;

系统调用 : 如果在用户层需要用到 内核层 相关函数 , 则产生中断 , 切换到内核层 , 由系统处理相应中断 , 中断处理完毕后 , 通过用户寄存器返回 , 用户层 可以通过读取 中断处理寄存器 , 获取中断处理结果 ;

Linux 中有 syscall 函数 , 专门用于系统调用 ;

二、ptrace 函数真实作用


注入并不是系统 bug , 是系统接口的特殊使用方式 ;

就像 Java 的反射一样 , 都是设计时就设计好的功能 ;

每个操作系统都需要 调试介入机制 , 用于 问题追踪 , 错误诊断 , 开发调试 等场景 ;

问题追踪 : 如果想要对程序的进程进行调试 , 获取程序运行中某个时间节点的 , 完整的内存信息 , 操作系统必须提供相应的支持 , 这里的 ptrace 函数就是为 支持 C 标准库的 Linux / Android 系统提供的这种支持 ;

错误诊断 : 当程序运行出错时 , 系统或开发环境要进行报错 , 错误诊断的依据 需要 ptrace 函数追踪进程运行情况获取 ;

开发调试 : Linux 下的 strace , gdb 等工具 , 都要用到 ptrace 函数 ;

Android 中使用 ptrace 函数 , 必须有 root 或 system 权限 ;

【Android 逆向】ptrace 函数 ( C 标准库 ptrace 函数简介 | ptrace 函数真实作用 )相关推荐

  1. 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )

    文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...

  2. C++标准库与STL简介

    文章目录 1 C++标准库 1.1 C++标准库简介 2 STL简介 2.1 STL介绍 2.2 容器简介 1 C++标准库 重复发明轮子并不是一件有创造性的事,站在巨人的肩膀上解决问题会更加有效! ...

  3. python 标准库 excel_Python 操作 Excel 的函数库

    1. Python 操作 Excel 的函数库 我主要尝试了 3 种读写 Excel 的方法: 1> xlrd, xlwt, xlutils: 这三个库的好处是不需要其它支持,在任何操作系统上都 ...

  4. Python 2.7 学习笔记 内置语句、函数、标准库

    使用任何开发语言进行软件开发,都离不开语言提供的内置库(或Api),甚至说内置库的强大及使用是否方便都会影响大家对开发语言的选择. python语言,一样提供了很多内置的功能,可供开发时使用.主要有如 ...

  5. [转载] JAVA从菜鸟【入门】到新手【实习】一一一一Python 内置函数,标准库与第三方库(拓展库),常用框架

    参考链接: copyreg -注册pickle支持的函数 掌握了python的基本语法和面向对象的设计思想后是学习了程序设计的"使用"规则, 具体实现和调用要依赖"标准库 ...

  6. C/C++ 延时函数 (标准库)

    曾经有一次需要只使用标准库在C语言程序里做延时功能,但是百度和google了很久都没有能得到解答.后来一个偶然的机会在某本书上看到了一个C语言的延时函数,现在把它修改一下贡献给大家. /* 函数类型: ...

  7. python几次方函数_Python标准库math中用来计算x的y次方的函数是pow(x,y)。

    [判断题]Python表达式int("110", 2)的值为6. [单选题]关于 Python 的复数类型,以下选项中描述错误的是( ). [判断题]现代物流管理以实现顾客满意为第 ...

  8. python 内置函数 内置模块 标准库 第三方库 函数 模块 包 库

    大家在学习python时,会遇到这样的情况,有些东西直接就可以使用,例如str().len(): 而有些需要import 导入才能使用,比如sys.os.time.math: 还有些需要安装才能使用, ...

  9. merge函数_C++ - 标准库 merge 函数 的 用法及代码

    标准库 "merge" 函数 的 用法及代码 merge() 是 C++ 标准库的函数, 主要实现函数的排序和合并, 不仅仅是合并, 具体要求参照标准库. 如果是通用方法, 则第二 ...

最新文章

  1. C# 4.0 新特性之并行运算(Parallel)
  2. linux ssh命令详解
  3. Keras在mnist上的CNN实践,并且自定义loss函数曲线图
  4. Camera360与全球1.8亿用户共同创造更美的照片
  5. Android之解决toolbar里面显示返回按钮图片太大和没有水平居中的问题
  6. vue 分模块打包 脚手架_Vue面试官最爱的底层源码问题,你可以这样回答!
  7. Windows8之hyper-v探索
  8. 转载 @html.ActionLink的几种参数格式
  9. 记录自己的gitlab搭建之旅
  10. Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
  11. 2021年4大免费ER图工具
  12. 服务器硬盘安装win10系统,硬盘安装win10的方法
  13. 微信公众帐号测试号申请及配置
  14. 5.3.2 Counter对象
  15. 计算机英语趣味知识,看段子,学英语,懂点计算机知识才能看懂哦!
  16. 《30天吃掉那只 TensorFlow2.0》 开篇辞(Tensorflow 学习之路)
  17. 人参果水果宣传文案模版,水果店文案人参果
  18. openstack的部署与云主机实例
  19. 网站页面制作教程[纯萌新]
  20. 为网站配置免费的HTTPS证书 4-4

热门文章

  1. Nginx三部曲之一【配置文件详解】
  2. js中substring和substr的用法
  3. c语言过程中的理论杂篇。
  4. Python学习笔记整理(十五)类的编写细节
  5. springboot 异步不生效
  6. 对于python 3.x与python2.x中新型类的继承特性总结
  7. UVA1601万圣节的早上
  8. C#中抽象类和接口的区别与使用
  9. [福大软工] W班 总成绩排行榜
  10. linux 上配置swoole