Back

Tags: #c++

  • C++类内存模型(MSVC)

    学习MSVC编译器下的C++面向对象类的内存布局模型,详细研究成员对象、成员方法、虚表指针、虚表、虚偏移表指针、虚偏移表如何放置及其内容。关注每个类的构造、析构特征,通过汇编分析当对象构造、析构时发生的事情。

  • windows-x64汇编开发

    学习Windows平台的x64架构下,如何使用汇编进行开发。学习x64架构下寄存器的变化和x64的ABI规范。

  • c++逆向

    学习并总结MSVC19.0编译器中对于C语言变量与数组的优化。变量包括:全局变量、局部变量、动态初始化全局变量、静态局部变量。数组包括:数组的识别、数组遍历的特征以及多维数组的寻址公式

  • 栈帧结构

    通过汇编语言了解函数在调用时栈的结构,如何传递参数、如何保存返回值、`esp`和`ebp`这两个寄存器如何变化,局部变量如何分布。寄存器环境如何保存和恢复的。

  • 初探符号执行

    学习使用angr库,通过符号执行将加密后的flag输出出来。凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数

  • Base64编码学习

    研究Base64编码的原理,使用C++和汇编编写base64的编码、解码的代码。最后编写PIC的汇编解码代码,用来解码后续的shellcode。

  • ShellCode学习

    学习ShellCode的基础知识,包括ShellCode的生成、ShellCode的注入、ShellCode的检测、ShellCode的免杀等。提供一个windows通用的shellcode的模板

  • 使用C++实现一个压缩壳

    制作一个加壳程序,程序会压缩指定可执行文件的数据,并注入解压PE的代码、修复IAT、修复重定位表最后跳转到OEP进行原始逻辑的执行

  • 优雅的使用VSCode进行C++开发调试

    在Linux环境中使用VSCode+Clangd+LLDB+CMake+Ninja进行linux C++、Android C++开发调试。具体链路为:VSCode->Clangd->LLDB->CMake->Ninja。本文系统环境为:ArchLinux,内核版本为6.11.4-arch1-1。

  • C++面试题学习

    学习Github上知名的开源面试题库:interview,本文记录所有知识点的验证、理解、最新查证,以及个人的联想总结。