- 2024-08-21GC终结标记 SuspendEE 是怎么回事
一:背景1.讲故事写这篇是起源于训练营里有位朋友提到了一个问题,在!t-special输出中有一个SuspendEE字样,这个字样在coreclr中怎么弄的?输出如下:0:000>!t-specialThreadCount:3UnstartedThread:0BackgroundThread:2PendingThread:0DeadThread:
- 2024-08-07查看Linux某进程的物理内存大小
如题,步骤如下1)ps命令查看某进程的PID2)通过/proc文件系统查看方法一查看/proc/[pid]/statm内存使用情况,以页为单位,每页4KB。每列含义分别为:虚拟内存、物理内存、共享内存、 文本、库、数据、脏页。$cat/proc/3092/statm1296470432201310上述结果表示PID=3092的
- 2024-08-06Linux 下 objdump 命令的使用
目录一、概述二、常用参数说明三、实例四、实例分析一、概述objdump工具是用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。该命令常用于Linux下反汇编目标文件或者可执行文件。什么是反汇编反汇编(disassembly)是
- 2024-07-31CSAPP
深入理解计算机系统0xff杂项InstructionsetArchitecture:ISA,指令集体系架构软件和硬件之间的一层抽象层冯诺依曼计算机,即程序存储型计算机重要思想:程序就是一系列被编码了的字节序列(看上去和数据一模一样)https://www.cnblogs.com/SovietPower/p/14877143.html0x00参
- 2024-07-18记一次VMware 虚拟机遇到意外重启的内核级排查操作
背景:用户业务虚拟机遇到不明原因导致操作系统重启,引起业务中断需求:要求排查具体原因,定位问题根源先来查看虚拟机的事件,事件发生时间:13:37:21 再到虚拟机对应的宿主机查看相关日志,宿主机日志看到的时间需+8才能与VCenter上的事件时间对应得上,因此我们过滤05:37分左右的日志
- 2024-07-01记一次 .NET某网络边缘计算系统 卡死分析
一:背景1.讲故事早就听说过有什么网络边缘计算,这次还真给遇到了,有点意思,问了下chatgpt这是干嘛的?网络边缘计算是一种计算模型,它将计算能力和数据存储位置从传统的集中式数据中心向网络边缘的用户设备、传感器和其他物联网设备移动。这种模型的目的是在接近数据生成源头的
- 2024-06-16emojiCTF2024
看到一个新生赛,来打打,发现自己还是太菜了连最正常的hash扩展一开始都没看出来,丢大脸这次就巩固了一下hash扩展密码其他的都是常规题了其他方向基本不会,新生赛都打不了,(哭crypto签到0111001001111010011000100111011101110110010100000100011101010011011110110011000101100
- 2024-06-13记一次 .NET某工厂报警监控设置 崩溃分析
一:背景1.讲故事前些天有位朋友在微信上丢了一个崩溃的dump给我,让我帮忙看下为什么出现了崩溃,在Windows的事件查看器上显示的是经典的访问违例,即c0000005错误码,不管怎么说有dump就可以上windbg开干了。二:WinDbg分析1.程序为谁崩溃了在Windows平台上比较简单,可以用
- 2024-06-01hook的几种方式及原理学习
原文概述对于大型的工程项目,依赖许多人的配合,包含大量不同的代码库与服务,有的我们能够访问程序的源代码,有的可以访问程序的可重定位文件,有的可以访问到可执行文件及其环境,假如我们想在在不同的层面改变或者添加一些逻辑,操作系统、编译器以及程序语言、代码库等都提供了一些机制
- 2024-04-04pwn.college Fundementals Program interaction
BinaryFileshacker@program-misuse~level51:~$file/usr/bin/cat/usr/bin/cat:ELF64-bitLSBsharedobject,x86-64,version1(SYSV),dynamicallylinked,interpreter/lib64/ld-linux-x86-64.so.2,BuildID[sha1]=b357ed53c8c9cb1a312f83b28982304effae0135,for
- 2024-02-26.NET高级调试之sos命令输出看不懂怎么办
一:背景1.讲故事很多.NET开发者在学习高级调试的时候,使用sos的命令输出会发现这里也看不懂那里也看不懂,比如截图中的这位朋友。.NET高级调试属于一个偏冷门的领域,国内可观测的资料比较少,所以很多东西需要你自己去探究源代码,然后用各种调试工具去验证,相关源代码如下:coreclr:
- 2024-02-05安卓动态链接库文件体积优化探索实践
背景介绍应用安装包的体积影响着用户下载量、安装时长、用户磁盘占用量等多个方面,据GooglePlay统计,应用体积每增加6MB,安装的转化率将下降1%。 安装包的体积受诸多方面影响,针对dex、资源文件、so文件都有不同的优化策略,在此不做一一展开,本文主要记录了在研发时针对动态
- 2024-01-13聊一聊 .NET高级调试 中必知的符号表
一:背景1.讲故事在高级调试的旅行中,发现有不少人对符号表不是很清楚,其实简而言之符号表中记录着一些程序的生物特征,比如哪个地址是函数(签名信息),哪个地址是全局变量,静态变量,行号是多少,数据类型是什么等等,目的就是辅助我们可视化的调试,如果没有这些辅助我们看到的都是一些无意义的
- 2023-12-30从执行文件查看elf文件的各种详细信息
代码如下program8_6.c:1#include<stdio.h>23inta=0x55555555;4intb=0x66666666;5intc=0x77777777;6intd=0x88888888;78intmain()9{10a=0x11111111;11b=0x22222222;12c=0x33333333;13d=0x44444444;1415
- 2023-12-23C++ --- 函数重载
什么是函数重载函数重载: 是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。函数重载是C++在C语言基础上进行的改进,解决了C语言同名函数无法服务不同类型
- 2023-12-16Android BPF 应用流量统计
1.BPF和eBPFBPF(BerkeleyPacketFilter)最早的网络数据包捕获。eBPF(extendedBerkeleyPacketFilter)新出了一个BPF替换了之前老的BPF,但是名称有的时候也常BPF,也有叫eBPF的。功能得到加强,除了能网络数据包捕获外,也能用于trace内核函数,内核中自带的一个ftrac
- 2023-12-12聊一聊 .NET高级调试 中必知的符号表
一:背景1.讲故事在高级调试的旅行中,发现有不少人对符号表不是很清楚,其实简而言之符号表中记录着一些程序的生物特征,比如哪个地址是函数(签名信息),哪个地址是全局变量,静态变量,行号是多少,数据类型是什么等等,目的就是辅助我们可视化的调试,如果没有这些辅助我们看到的都是一些无意
- 2023-11-04crash —— 查看进程的内核栈的内容
有时我们有这样的需求,想查看某个进程的内核栈里的全部内容,介绍下面的几种做法:方法1:得到进程的栈底地址以及栈大小,然后使用rd指令读取使用mach指令获取内核栈的大小crash>mach|grepSIZEMEMORYSIZE:64GBPAGESIZE:4096KERNELSTACKSI
- 2023-10-28ELF文件结构分析(x86 gnu版本)
为了学习使用objdump和size命令,以simple_section.c为例进行分析。编译环境是x86ubuntu,首先编译这个文件。gcc-csimple_section.c命令解释objdump作用:分析二进制文件的内容信息objdump--helpUsage:objdump<option(s)><file(s)>Displayinformationfromobject<fi
- 2023-09-24crash —— 查看当前系统每个page的信息
linux中page数据结构可以通过mem_map数组访问,下面的方法可以输出每个page的相关成员。通用版本下面这个命令可以显示每个page的一些关键成员的值。crash>kmem-pPAGEPHYSICALMAPPINGINDEXCNTFLAGSffffea000000000000
- 2023-08-05elf文件
main.c(文件大小是100个字节)intsum(int*a,intn);intarray[2]={1,2};intmain(){intval=sum(array,2);returnval;}main.o(文件大小是1416个字节)7f454c4602010100000000000000000001003e0001000000000000000000000000000000000000
- 2023-05-23Kernel panic 堆栈信息怎么看
Kernelpanic是指Linux内核遇到了无法继续执行的致命错误,此时会在屏幕上输出一些错误信息,其中就包括堆栈信息。堆栈信息是指发生错误时CPU执行的代码路径,可以通过堆栈信息来定位错误发生的位置。通常,堆栈信息会以类似下面的形式输出:Kernelpanic-notsyncing:Attempted
- 2023-05-19关于/proc/id/status中内容的描述
Name:gedit/*进程的程序名*/State:S(sleeping)/*进程的状态信息Tgid:9744/*线程组号*/Pid:9744/*进程pid*/PPid:7672/*父进程的pid*/TracerPid:0/*跟踪进程的pid*/Uid:1000100010001000/*uideuidsuidfsuid*/Gid:1000100010001
- 2023-05-13OS版hello world
OS版helloworld其实就是让BIOS拉起一个裸机汇编(实模式),对应是保护模式。ds段寄存器。写一个汇编程序helloOs.S#以下是AT&T的语法,$开头表示立即数(如自定义符号代表的偏移量)%开头表示寄存器BOOTSEG=0x7c0#0x7c00.code16#告诉汇编编译器as把当前汇编翻译成16位的指令,若
- 2023-03-26程序员的自我修养-编译链接
目录常见场景编译过程ELF文件格式.textSection.data和.rodatSection.symtabSection.rel.textSection静态链接为什么需要链接?链接后达到什么效果?怎么链接?符号重定位依赖