rbp
  • 2024-09-30C++ Data Member Pointers 和 Member Function Pointers
    https://itanium-cxx-abi.github.io/cxx-abi/abi.html#member-pointers2.3MemberPointers2.3.1DataMemberPointersThebasicABIpropertiesofdatamemberpointertypesarethoseofptrdiff_t.Adatamemberpointerisrepresentedasthedatamember's
  • 2024-09-28深入汇编:计算机工作机制解析
    深入汇编:计算机工作机制解析计算机的工作原理计算机的工作原理可以概括为以下几个步骤:输入:用户通过键盘、鼠标或其他输入设备提供数据。处理:CPU(中央处理单元)根据程序指令处理数据。存储:内存和硬盘等存储设备用于保存数据和程序。输出:处理结果通过显示器、打印机等输出设备
  • 2024-09-28TSCTF-J 2024 部分WP
    TSCTF-J2024部分题目复现(未完结)iPlayBingo:F12拿到answerCheck.wasm文件,同时观察js代码找到关键函数Check()利用Wabt将answerCheck.wasm文件转为answerCheck.c和answerCheck.h文件,但此时可读性依然较差。用gcc链接成answerCheck.o文件,此时可以使用IDA反汇编。​ 关键的函数
  • 2024-09-20++i与i++在效率上的细微差别
    在一些特定的使用中,i++可能将原值用中间量存起来以待使用,下面看相关程序的汇编代码(使用gcc)。i++源程序:#include<stdio.h>intmain(){  inti=1;  printf("%d\n",i++);  return0;}i++汇编:main:.LFB0:  .cfi_startproc  endb
  • 2024-09-10c++引用
    c++指针和引用的区别指针和引用在C++中都用于间接访问变量,但它们有一些区别:指针是一个变量,它保存了另一个变量的内存地址;引用是另一个变量的别名,与原变量共享内存地址。指针(除指针常量)可以被重新赋值,指向不同的变量;引用在初始化后不能更改,始终指向同一个变量。指针可以为
  • 2024-09-02记一次 .NET某实验室自动进样系统 崩溃分析
    一:背景1.讲故事前些天有位朋友在微信上联系到我,说他们的程序在客户那边崩掉了,让我帮忙看下怎么回事,dump也拿到了,那就上手分析吧。二:WinDbg分析1.哪里的崩溃既然是程序的崩溃,自然是有原因的,皮裤套棉裤,必定有缘故,不是皮裤太薄就是棉裤没毛,用!analyze-v观察下异常信息。0:107>!
  • 2024-08-27NASM 与 GDB 简易调试指南
    本文目标:在Linux平台中,利用nasm与gdb快速构建一个编译与调试工具链,以下仅做简单演示。主要还是因为学习“计算机组成原理”中intel指令相关内容的时候,太生涩难懂了。就是想简单实操一下,深刻理解,因此才出了这篇文章。我们以一下程序为例举例说明。section.datahel
  • 2024-08-27记一次 .NET某实验室自动进样系统 崩溃分析
    一:背景1.讲故事前些天有位朋友在微信上联系到我,说他们的程序在客户那边崩掉了,让我帮忙看下怎么回事,dump也拿到了,那就上手分析吧。二:WinDbg分析1.哪里的崩溃既然是程序的崩溃,自然是有原因的,皮裤套棉裤,必定有缘故,不是皮裤太薄就是棉裤没毛,用!analyze-v观察下异常信息。
  • 2024-08-25C++函数调用栈从何而来
    竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~个人主页:rainInSunny | 个人专栏:C++那些事儿、Qt那些事儿目录写在前面原理综述x86架构函数调用栈分析如何获取rbp寄存器的值总结写在前面  程序员对函数调用栈是再熟悉不过了,无论是使用IDE调试还是GDB等工具进行调试,都离
  • 2024-08-25C++函数调用栈从何而来
    竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~个人主页:rainInSunny | 个人专栏:C++那些事儿、Qt那些事儿文章目录写在前面原理综述x86架构函数调用栈分析如何获取rbp寄存器的值总结写在前面  程序员对函数调用栈是再熟悉不过了,无论是使用IDE调试还是GDB
  • 2024-08-19“i++”是怎么工作的?
    我们以下面这么一段代码开始voidtest_inc(){inti=10;i=i++;printf("i=%d\n",i);}运行输出i=10看起来出乎意料,来我们看看他编译之后的汇编代码就明白了test_inc:.LFB20:.cfi_startprocendbr64pushq%rbp
  • 2024-08-18X86-64 Reference Sheet
    X86-64ReferenceSheetIhttps://www.cs.cmu.edu/afs/cs/academic/class/15213-s20/www/recitations/x86-cheat-sheet.pdfX86-64ReferenceSheetIIRegistersRegisterPurposeSavedacrosscalls%raxtempregister;returnvalueNo%rbxca
  • 2024-08-12从汇编层看64位程序运行——有惊无险的栈溢出
    大纲main进入时寄存器状态rbp:1rsp:df18分析过程离开时寄存器状态rbp:df10rsp:def8foo7进入时寄存器状态rbp:df10rsp:def8分析过程离开时寄存器状态rbp:df10rsp:def0foo进入时寄存器状态rbp:df10rsp:def8分析过程离开时寄存器状态rbp:df10rsp:def8main进入时寄
  • 2024-07-18记一次 redis 事件注册不当导致的内存泄露
    线上的程序跑着跑着内存越来越大,并且没有下降的趋势,重启一下程序也只能短暂恢复。通过htop命令再按一下M键按内存占用大小排个序,程序会占好几个G。那好,让我们来分析一下。收集dump通过top或htop进程管理器,或ps命令查找到目标进程id,然后使用如下命令生成dump:created
  • 2024-07-16暑期集训经典栈溢出
    checksec看保护:NXida看一下(这是main函数)func1()func2()func3()func4()func5()先静态分析一波:进到func5()之后系统会给一个起始地址,从这个地址开始输入,判断一下rbp指的地址有没有被改掉,被改掉就fail了,而很直观的看出buf有溢出漏洞,程序中又有后门函数win,所以就将返
  • 2024-07-14函数调用栈
    1、程序源代码:[xuanmiao@localhostPractice]$catmain.c#include<stdio.h>intplus(inta,intb){intc=a+b;returnc;}intmain(){inta=1,b=2;intc=0;c=plus(a,b);return0;}2、编译[xuanmiao@localhostPractice
  • 2024-06-07Dragon_Knight_CTF-stack(栈迁移)
    Dragon_Knight_CTF-stack(栈迁移)程序的保护情况如下,可以看到没有开启pie保护Arch:amd64-64-littleRELRO:PartialRELROStack:NocanaryfoundNX:NXenabledPIE:NoPIE(0x3fe000)可以看道main函数也很简洁,只有一个0x10大小的溢出,程序给了libc,版
  • 2024-05-30指针与引用区别
     =====来自:https://www.cnblogs.com/honernan/p/12175899.html每日一问1:指针和引用的区别 指针(pointer)和引用(references)都是对另一个变量的一种关联,即通过指针和引用可以使用另一个变量。而它们最大的区别在于:指针是一个变量,而引用不是。但在c++底层中,引用是通过
  • 2024-05-21再探虚函数
    虚函数是一种成员函数,其行为可以在派生类中被覆盖,支持动态调用派发。使用示例代码如下:extern"C"{//避免operator<<多次调用,简化汇编代码voidprintln(constchar*s){std::cout<<s<<std::endl;}}void*operatornew(size_tn){void*p=malloc(n);
  • 2024-04-24boom lab分析
    单步调试:(gdb)bt#10x0000000000401347instrings_not_equal()#20x0000000000400eeeinphase_1()#30x0000000000400e3finmain(argc=<optimizedout>,argv=<optimizedout>)atbomb.c:74这里的执行流程为:/*Hmm...Sixphasesmustbemoresecur
  • 2024-04-22深度解读《深度探索C++对象模型》之数据成员的存取效率分析(三)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。前面两篇请通过这里查看:深度解读《深度探索C++对象模型》之数据成员的存取效率分析(一)深度解读《深度探索C++对象模型》之数据成员的
  • 2024-04-22palurctf_Palu
    Paluctf_Palubamuwe@bamuwe:~/palu$checksecPalu[*]'/home/bamuwe/palu/Palu'Arch:amd64-64-littleRELRO:NoRELROStack:CanaryfoundNX:NXenabledPIE:NoPIE(0x400000)Canaryfound,soweshouldtr
  • 2024-04-21深度解读《深度探索C++对象模型》之数据成员的存取效率分析(二)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。接下来的几篇将会讲解非静态数据成员的存取分析,讲解静态数据成员的情况请见上一篇:《深度解读《深度探索C++对象模型》之数据成员的存取
  • 2024-04-18深入分析C++对象模型之移动构造函数
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。C++11新标准中最重要的特性之一就是引入了支持对象移动的能力,为了支持移动的操作,新标准引入了一种新的引用类型——右值引用,右值引用一
  • 2024-04-17深度解读《深度探索C++对象模型》之拷贝构造函数
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文。写作不易,请有心人到我的公众号上点点赞支持一下,增加一下热度,也好让更多的人能看到,公众号里有完整的文章列表可供阅读。有以下三种情况,一个类对象的初始