systemtap引用自定义头文件的手艺精简版

先看上一篇:https://blog.csdn.net/dog250/article/details/108230157不够精简是不是?那是因为我的水平还不够6,其实stap是可以直接调用system来执行外部命令的,如此就不需要再进入guru模式来stap自己了。脚本如下:#!/usr/local/bin/stap// selftapprobe process("/usr/local/bin/stap").function("make_any_make_cmd"){ ext = "\'E
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

缉拿隐藏进程以及隐藏CPU利用率的进程

前面我介绍过很多隐藏进程的把戏,随后我对每一种把戏有针对性的给出了反制措施,可以翻看我2020/03~2020/08的文章,太多了,不再一一列举。如今,我要介绍一种超级简单的手段,手艺人必备。无论你是隐藏了进程,还是隐藏了进程的CPU利用率,只要它在CPU上运行,在下面的脚本面前,任何隐藏手段终归徒劳:#!/usr/local/bin/stapglobal tbaseglobal tdeltaprobe scheduler.cpu_on{ a = gettimeofday_us() t
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

10行代码玩转弹性调度的小把戏

Linux的进程调度器是通用的调度器,无论是O(n)O(n)O(n),O(1)O(1)O(1),还是CFS,均是基于统一的指标来对待所有进程的。也就是说,进程甚至无法自主退让。只要确定了一个进程的优先级,无论是是什么调度算法,该进程的地位总是不会变化,如果能做到下面的策略就好了:系统中进程多了,就加速退让。系统中进程少了,就加速抢占。工人来了,就退让。经理来了,就抢占。…考虑一个进程A在一个特定的系统中运行,它最多只能用40%的CPU,此时,如果有另外的待运行进程,那么这些进程自然分摊另外
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

手工拯救Linux kernel panic!

有的时候,kernel panic并不一定非要真的panic,比如说你自己模块里发生了内存违规访问,在你确定发生panic的地方并不会影响整个内核,其危害半径足以收敛的前提下,panic可以有不同的行为:直接将当前task给schedule出去。虽然在中断上下文这样做可能会危害无辜的进程,使其再也调度不回来了,但也总比整体重启要好。下面的代码展示了如何做:// panic_resched.c#include <linux/module.h>#include <linux/k
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

Flash Download failed--“Cortex-M4”,Invalid ROM Table发生在仿真器烧写时,一定要查看板子是否供电正常

调试比较大的STM32程序时,使用仿真器下载速度会比串口下载快很多,调试起来也非常方便,因此使用非常普遍。当您使用仿真器调试STM32时,有时会遇到突然不能正常烧写的情况发生。本来刚才还好好的,可突然就不能烧写了。一般发生的错误是Flash Download failed--"Cortex-M4”,Invalid ROM Table。当你试遍全网所有的解决方法都不能解决的时候,一定要再看看板子是否供电了。尽管是低级错误,但是很有可能会发生,尤其是在攻关、熬夜、头脑不太清醒的时候。
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

用Servlet实现统计网站被访问次数的功能

思路:1.新建一个Servlet类继承HttpServlet,重写doGet()和doPost()方法;2.在doPost方法中调用doGet()方法,在doGet()方法中实现统计网站被访问次数的功能,用户每请求一次servlet,使得访问次数times加1;3.获取ServletContext,通过它的功能记住上一次访问后的次数。实现代码:package readPath;imp...
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

校园网免认证

写在前面全网首发,仅适用于河南大学,转载前请留言告知。相信大家是不是有这样的经历,每次去综合楼连上校园网后都会跳到认证页面。它长这个亚子更有甚者根本不自动跳到认证页面,频繁的验证着实麻烦。那么有没有一种方法让校园网和平常用的无线网一样自动连接后直接就可以使用呢??恭喜你找到了宝藏,你只需要简单的几个步骤就可以解决这个问题。正常认证按往常一样连接上校园网认证,然后再打开那个认证界面,点我查看。点击图中所示的自服务账号密码和认证页面一样,登录进去点击左侧导航栏的用户–>无感
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

python函数基础十:返回值与全局变量

1.返回值1)什么是返回值返回值就是从函数内部传递到函数外部的数据。(如果实现函数的功能,产生了新的数据一般都需要将这个新的数据通过返回值返回)2)怎么确定函数返回值在函数体中通过return关键字来返回返回值: return 数据注意:同一个函数中,只有一个return有效。(因为执行函数体的时候只要遇到return函数直接结束)如果要在一个函数中返回多个数据,用能够保持多个数据的容器。常用元组: return 数据1, 数据2, 数据3,…3)怎么在函数外部获取函数返回值获取函数调用
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

1、JDK1.8下载、安装、配置

文章目录一、下载二、安装三、配置环境变量(win10为例)四、检验是否配置成功一、下载1、JDK1.8官网下载地址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html二、安装下载好了安装包后,双击进入安装向导,一直点击下一步就可以完成安装。三、配置环境变量(win10为例)1.打开“此电脑”,右键选择属性,选择高级系统设置。2.点击“环境变量”。3.在系统变量区域,点击新建。
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

如何使用ftrace实时获取系统中的spinlock快照

接上文:https://blog.csdn.net/dog250/article/details/108349046在这篇文章中,我给出了一个拯救panic的方法,其目的更多的是恶作剧性质。但仍然有不足,请看下面代码段中的注释:void stub_panic(const char *fmt, ...){ ... local_irq_enable(); // 这个时候如果current持有自旋锁,那可怎么办??? printk("rq:%d %d\n", preempt_cou
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

利用TCP重传机制来玩端口敲门服务

TCP无法在连接建立之前进行认证,对于无连接的UDP而言,或者也将不能。TCP有fastopen机制,但并不好用,本文的想法就是基于fastopen的,让第一个SYN包携带数据,然而又不能让它到达TCP层,必须在IP层完成认证。于是顺势就有了所谓的敲门服务。敲门的意义旨在避免非法连接的干扰,一来二去的,即便构不成DoS,服务端也需要对非法连接的客户端进行回应,这不但不安全,暴露了开放端口信息,也浪费了带宽资源。互联网是一个开放的环境, 不要与陌生人说话! 默默地丢掉非法连接比回复一个RST要好很
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

用nf_conntrack代替ipset搭建敲门验证程序

昨天晚上,杂耍了一个敲门服务:https://blog.csdn.net/dog250/article/details/108479651这里面的trick在于利用了TCP的重传特性:第一个把padding了认证数据,仅用于敲门,注定被丢弃。第二个重传包直接通过第一个敲门包敲开的大门,建立连接。我在服务端使用的是ipset的方案,还是比较清晰的,我觉的不错。早上起来,又思考了另一种方案,基于nf_conntrack来完成,毕竟我玩conntrack玩得那么熟,不拿出来杂耍两下子,总觉得虚度了
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

制作一枚有针对性的fork炸弹

恕我不再赘述bash实现的fork炸弹。我们看看把一个内部调用了fork的平常的程序制作成一枚fork炸弹是多么的简单。先看代码:#include <stdio.h>#include <stdlib.h>int main(int argc, char **argv){ if (fork() == 0) { printf("I am child\n"); exit(0); } printf("I am parent\n"); return 0
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

TCP的SYN报文可以携带payload吗?

对于敲门服务,是不是厌倦了复杂繁琐的服务端配置?Send TCP SYN packet with payload?众所周知,TCP的SYN报文是不能携带payload的,因为:序列号还没有协商号,无法确定数据的序列号区间。接收窗口还没有确定,不知道payload能不能被接收。…等等,等等…烦透了!在过程中,我非常讨厌去讨论标准,讨厌有人在耳旁叨叨类似“RFC规定…但没有强制…”,“Intel手册XXX…但是…”,正如“C语言未初始化的变量到底是多少”这个问题一样无趣。实际动手试一下不
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

修改任意Linux进程地址空间实施代码注入

提到进程注入,常规的方案就是使用ptrace,其POKEDATA,POKETEXT命令选项单从名字上就知道是干什么的,这里不再赘述。然而ptrace是个系统化的东西,太复杂,不适合玩手艺,有没有什么适合手工玩的东西呢?当然有!正如读写/dev/mem可以手工完成crash+gdb的功能hack内核一样,每一个用户态进程也有一个mem文件,即 /proc/$pid/mem 。我不敢保证每一个系统该文件都可写,但一旦它可写就好玩了。/proc/$pid/mem文件抽象的一个进程的地址空间,直接写该文
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

ROP(Return Oriented Programming)原理解析

先看一个代码:#include <stdio.h>#include <stdlib.h>// 下面的dummy_libc_part1和dummy_libc_part2假设是GLIBC库里的任意两段函数void dummy_libc_part1(){ // ... 这里可能会有别的指令 __asm("mov 0(%rsp), %rdi"); __asm("popq %r13"); __asm("call *%r14"); __asm("ret"); // ...
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

修改Linux的swap空间实现进程注入

连续两夜的大雨,舒服,下班回到家继续杂耍。昨晚杂耍了一把/proc/$pid/mem,写了一个关于进程代码注入的文章:https://blog.csdn.net/dog250/article/details/108618568这个方法无非还是利用了内核导出到procfs里的一个mem文件,而且幸亏它可写!这并不是一个通用的方法,至于说ptrace,stap这种,则更多的体现为一种工具,而非手艺。swap空间够通用了吧,哪个系统都有,它是现代操作系统的基础设施的重要组成部分,本文就拿swap空间开涮。
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

基于Python的智能分班系统

暑假时接到了朋友的给的程序需求,赶了个python随机分配人员至两个班级的程序,基于Python的随机数生成函数进行阳光分班操作,可保证分班结果无任何人工因素介入。最近有时间简单整理了下代码,补上了该博客。程序功能演示视频:...
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

spin_lock_bh想到的一些事

近日有人问我为什么在PREROUTING这个NF HOOK点的function里需要使用spin_lock/unlock_bh而不是spin_lock/unlock来保护临界区。面对这个问题,有点懵,说到spin_lock族,有很多系列接口:spin_lock/spin_unlockspin_lock_bh/spin_unlock_bhspin_lock_irq/spin_unlock_irqspin_lock_irqsave/spin_unlock_irqrestore…之所以有这么多,
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0

通过一个小实验认识Linux vDSO

这里不再解释vDSO的概念,而直接谈其意义:vDSO类似一个信息公告板,用户可以直取所需,而无需为此办理任何手续。vDSO相当于内核直接暴露出来的一个C库,作为GLIBC的补充。…类似gettimeofday之类的调用,每次都陷入内核去拿一个时间戳,显得有点昂贵了,不如内核把时间戳放在一个公共的可以暴露给任何用户的地方,用户自己去看就行了,这是vDSO的典型用例。为了简单化描述,我们关闭ASLR:[root@localhost ~]# sysctl -w kernel.randomize.
分类: 其他 发布时间: 01-12 10:15 阅读次数: 0