• 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静态链接为什么需要链接?链接后达到什么效果?怎么链接?符号重定位依赖
  • 2023-02-23ARM应用调试思路、方法总结、笔记
    一、应用调试1:使用strace命令来跟踪系统调用二、应用调试2:使用GDB来调试应用程序编译gdb,gdbservertarxjfgdb-7.4.tar.bz2cdgdb-7.4/./configure--target=arm-linuxm
  • 2023-01-28OpenMP 线程同步 Construct 实现原理以及源码分析(上)
    OpenMP线程同步Construct实现原理以及源码分析(上)前言在本篇文章当中主要给大家介绍在OpenMP当中使用的一些同步的construct的实现原理,如master,single,critica
  • 2023-01-25谈谈程序链接及分段那些事
    谈谈程序链接及分段那些事如果读过我之前的文章就会知道,程序构建大概需要经历四个过程:预处理、编译、汇编、链接,这里主要介绍链接这一过程。链接链的是什么?链接链的就是目标
  • 2022-12-30符号表
    符号表是什么?我们知道,在编译的四个阶段中,最后一步链接的本质就是将不同的目标文件糅合到一块,生成最终可执行的二进制文件。而目标文件的互相糅合,实质上就是目标文件之间对
  • 2022-12-16记一次 .NET 某工控MES程序 崩溃分析
    一:背景1.讲故事前几天有位朋友找到我,说他的程序出现了偶发性崩溃,已经抓到了dump文件,Windows事件日志显示的崩溃点在clr.dll中,让我帮忙看下是怎么回事,那到底怎么回事呢?