摘要: 1. ptrace 函数简介 Ptrace是一个系统调用,它提供了一种方法来让‘父’进程可以观察和控制其它进程的执行,检查和改变其核心映像以及寄存器。 主要用来实现断点调试和系统调用跟踪。利用ptrace函数,不仅可以劫持另一个进程的调用,修改系统函数调用和改变返回值,而且可以向另一个函数注入代码, 阅读全文
posted @ 2020-03-06 16:59 ZhaoKevin 阅读(1626) 评论(0) 推荐(1) 编辑
摘要: netfliter 简介 netfilter是在Linux 2.4.X内核引入的一个子系统,它提供了一个抽象的、通用框架,这个框架提供了一整套的钩子函数的管理机制。包括钩子函数的原型定义,注册,注销等。下面将基于Linux 3.14.77 的内核代码简要介绍一下netfilter框架的实现。 net 阅读全文
posted @ 2020-02-27 22:57 ZhaoKevin 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 基础知识 函数传参存在两种方式,一种是通过栈,一种是通过寄存器。对于x64体系结构,如果函数参数不大于6个时,使用寄存器传参,对于函数参数大于6个的函数,前六个参数使用寄存器传递,后面的使用栈传递。参数传递的规律是固定的,即前6个参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8 阅读全文
posted @ 2020-02-22 18:06 ZhaoKevin 阅读(2433) 评论(0) 推荐(0) 编辑
摘要: gdb 常用选项 help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h run:重新开始运行文件(run text:加载文本文件,run bin:加载二进制文件),简写r start:单步执行,运行程序,停在第一执行语句 list:查看原代码(list n,从第n行开始查看代 阅读全文
posted @ 2020-02-22 12:32 ZhaoKevin 阅读(396) 评论(0) 推荐(0) 编辑
摘要: objdump 介绍 objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具 objdump 选项介绍 实例 首先,在给出后面大部分测试所基于的源代码以及编译指令。 源代码如下: 对以上源代码进行编译生成可执行程序 ,如下: 查看当前使用的objdump的版本号: 显示 pass_ 阅读全文
posted @ 2020-02-19 07:09 ZhaoKevin 阅读(3099) 评论(0) 推荐(0) 编辑
摘要: 博客园用markdown写文章,有时需要粘贴大段的日志,需要用到折叠显示,在此记录一下相关语法,以备后用。 语法: 展开查看:点击的标签 内容:填写需要展示的内容 展开查看 内容 阅读全文
posted @ 2020-02-15 17:29 ZhaoKevin 阅读(338) 评论(3) 推荐(1) 编辑
摘要: 内核源码探查 通过对linux内核源码的追踪,可以看到对pid最大值的限定最终集中到include/linux/threads.h文件中的 上了,代码如下: 从代码可知, 如果编译内核时设置了CONFIG_BASE_SMALL选项,则默认的pid的最大值是0x1000,即4096个,否则默认的最大值 阅读全文
posted @ 2020-02-15 09:14 ZhaoKevin 阅读(5067) 评论(0) 推荐(0) 编辑
摘要: 精简.vimrc配置,简约不简单 该配置没有花里胡哨的插件,只是用ctags和cscope然后配合vim提供的基础功能就可以完成常见的代码编辑,浏览,查找等工作。 "***********************vim 配置************************* set nocompat 阅读全文
posted @ 2020-02-11 20:34 ZhaoKevin 阅读(199) 评论(0) 推荐(0) 编辑
摘要: printf 格式化并显示数据 `printf "%x" 16` 阅读全文
posted @ 2020-02-11 20:10 ZhaoKevin 阅读(218) 评论(0) 推荐(0) 编辑
摘要: crash简介 crash是redhat的工程师开发的,主要用来离线分析linux内核转存文件,它整合了gdb工具,功能非常强大。可以查看堆栈,dmesg日志,内核数据结构,反汇编等等。crash支持多种工具生成的转存文件格式,如kdump,LKCD,netdump和diskdump。同时crash 阅读全文
posted @ 2020-02-11 17:01 ZhaoKevin 阅读(5242) 评论(0) 推荐(0) 编辑