ICode9

精准搜索请尝试: 精确搜索
  • SCTF2021 pwn Christmas Bash 出题思路+预期解2022-01-19 19:34:04

    SCTF2021 pwn Christmas Bash 出题思路+预期解 sctf2021 pwn出题思路 赛题文件+exp: github 文章目录 SCTF2021 pwn Christmas Bash 出题思路+预期解题目描述Slang-christmas设计思路 2opcode生成scom文件结构dis模块逻辑 漏洞审计类型混淆栈溢出sleep 题目环境利用栈溢出

  • C++服务器开发精髓2022-01-19 10:33:50

    第一章 必知必会 1.1 RAII 先分配资源,再操作,任意一步出错需要回收资源。 避免冗余代码方式: goto语句(不推荐) do...while(0)循环(现有代码中大量存在) RAII(推荐) 在构造函数中申请资源,在析构中释放。对于多线程中锁的获取与释放,可充分利用器特性,避免每次返回都需要释放锁,避免冗余代码

  • C++学习 四、智能指针总结2022-01-18 14:59:55

    C++学习 四、智能指针总结 前言智能指针的作用智能指针的特点shared_ptr共享指针循环引用 unique_ptrweak_ptr手写一个shared_ptr类后记 前言 之前分别学习了C++的三种智能指针shared_ptr,unique_ptr,weak_ptr的使用,本篇来做一个总结。 智能指针的作用 C/C++的一大特色就

  • C++弱引用智能指针weak_ptr的用处2022-01-17 21:03:13

    weak_ptr也是一个引用计数型智能指针,但是它不增加对象的引用计数,即弱引用。与之相对,shared_ptr是强引用,只要有一个指向对象的shared_ptr存在,该对象就不会析构,直到指向对象的最后一个shared_ptr析构或reset()时才会被销毁。 利用weak_ptr,我们可以解决常见的空悬指针问题以及循

  • 内存泄漏-原因、避免和定位2022-01-14 10:01:42

    你好,我是雨乐! 作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成段错误(segment fault)或者内存泄漏(memory leak)。 今天,借助此文,分析下项目

  • 内存泄漏-原因、避免和定位2022-01-13 06:33:25

    你好,我是雨乐! 作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成段错误(segment fault)或者内存泄漏(memory leak)。 今天,借助此文,分析下项目中

  • 2022-01-12_HWQ_012022-01-13 01:02:41

    2022-01-12  23:28:54   如何写一个socket  : RAII 资源获取就是初始化,WSAStartup 和WSACleanup 应该设计成类的静态方法,因为他们只需要在类的初始化和退出调用。 类除了保留对外的接口,内部用到的变量和方法对调用者不可见,这种习惯叫pimpl用法。 编译时指定规范: g++ -g -o te

  • Effective C++条款13:用一个类管理内存2022-01-12 17:02:57

    一般的new/delete操作--不利于扩展,维护 //参照书本的new/delete操作示例 class Investment {}; void f() { Investment* pInv = new Investment(); //... delete pInv; } 这么做不会有问题,但不好,如果在//...处会return,或者其他操作导致未执行delete pInv;操作,

  • c++智能指针的使用,shared_ptr,unique_ptr,weak_ptr2022-01-11 12:34:18

    c++智能指针的使用 官方参考 普通指针的烦恼:内存泄漏,多次释放,提前释放 智能指针 负责自动释放所指向的对象。 三种智能指针 shared_ptr,unique_ptr,weak_ptr; 将shared_ptr存放在一个容器中,不再需要它的时候,要erase掉。 allocator负责封装堆内存管理的对象,它们在整个标准库中使用,特别

  • [BUUCTF-pwn] [HarekazeCTF2019]Harekaze Note2022-01-10 22:03:15

    未知高版本libc的堆问题 题目给了libc但下不来。github在国内没办法。 一般2.23的堆没有tcache第一个块在010,2.27以后加了250的tcache第1个在260,2.31以后在2a0 可以先泄露堆地址再根据大概的版本往下走。 先按2.27在本地作成,发现远程不能用,虽然小于2.31但tcache不能直接doublef

  • 简单分析栈以及栈溢出2022-01-09 20:58:24

    简单分析栈以及栈溢出 目标代码 #include<iostream> #include<cstring> bool IsPasswordOkay(void) { char Password[12] = {0,1,2,3,4,5,7,8,9,10,11};//直接将数组填满 for(int i=12;i<20;i++)//覆盖EBP和ESP所指向的返回地址 { print

  • 观察者模式2022-01-09 16:03:00

    被观察者维护一个队列,将观察者放入队列。有消息就通知观察者。下面展示一些 示例代码片。 /* 江湖中有多个帮派,还有一名无人不知,无事不晓的百晓生。当江湖中 发生武林打斗事件,百晓生作为天生的大嘴巴会广播武林消息,每个帮派的门 第对于事件的处理方式均不同,同帮派被欺负,要报

  • C++ - 智能指针及其内存管理2022-01-09 11:30:33

    C++ - 智能指针及其内存管理 智能指针 C已经有了指针了,为什么还要引入智能指针这种玩意? ​ 旧式C的指针使用存在两大问题: 没有自动回收机制。旧式指针使用完毕后必须手动释放,程序员若忘记释放就会导致内存浪费,而且浪费的内存难以察觉,甚至直到出现内存泄漏的程序将整个内存占

  • linux 遍历文件目录2022-01-06 23:04:56

    #include <stdio.h> #include <dirent.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <error.h> #include <sys/stat.h> #define MAX_FILE_NAME_LEN 256 typedef struct foldernode_t { char *

  • Go 语言指针2022-01-06 16:02:41

    什么是指针 一个指针变量指向了一个值的内存地址 类似与变量和常量,在使用指针前需要声明指针 var var_name *var-type var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。以下是有效的指针声明: var ip *int /* 指向整型*/ var fp *float32

  • 智能指针遇到的一些解答2022-01-05 20:05:00

    1. auto_ptr 不建议使用的原因: auto_ptr 采用 copy 语义来转移指针资源,转移指针资源的所有权的同时将原指针置为 nullptr,这跟通常理解的 copy 行为是不一致的(不会修改原数据),而这样的行为在有些场合下不是我们希望看到的。 例如参考《Effective STL》第 8 条,sort 的快排实现中有

  • C++智能指针unique_ptr2022-01-05 13:04:09

    unique_ptr提供了以下操作: 1. 构造函数 虽然这里的构造函数比较多,但是可以发现,实际上是没有拷贝构造和=操作符重载: void foo_constuct() { //这样构造是可以的 std::unique_ptr<int> p(new int(3)); //空构造 std::unique_ptr<int> p4; //下面三种写

  • std::move使用实例2022-01-04 19:03:11

    std::move使用实例 #include <iostream> #include <memory> class TestPtr : public std::enable_shared_from_this<TestPtr> { public: TestPtr(std::string str = "000") {std::cout << "TestPtr construct:" <<this

  • 单例模式懒汉模式,饿汉模式2022-01-03 17:01:47

    饿汉模式: 类加载的时候就已经实例化,并且创建单例对象,以后只管用即可。 天然多线程安全, 不需要时,也要占用资源(static 不占内存) class Sigleton{ private: Sigleton(){ std::cout << “Sigleton construct” << std::endl;} public: Sigleton(const Sigleton&) = delete; Sigle

  • C++智能指针之weak_ptr2022-01-03 15:32:47

    weak_ptr是一种不控制所指向对象生存周期的智能指针,它指向由一个shared_ptr管理的对象。将一个weak_ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数。一旦最后一个指向对象的shared_ptr被销毁,对象会被释放。即使有weak_ptr指向对象,对象也会被释放,因此,weak_ptr的名字抓住

  • SSH2022-01-02 10:36:56

    SSH 因为工作原因我平时用ssh还是挺多的,但从来没有好好的抓一下ssh的报文,按理说我应该拿出RFC文档好好地的研读,但从以往的经历当中也没有遇到ssh的相关的大故障,最近在学习wireshark,那就用wireshark抓个包分析一下为什么ssh有时候为卡住?有的时候就会非常的顺畅? # 操作系统是KALI LI

  • C++实现简易共享指针2021-12-28 20:33:00

    #include <iostream> #include <memory> using namespace std; template <typename T> class SharedPtr{ private: T *_ptr; int *_pcount; public: SharedPtr(T *ptr= nullptr):_ptr(ptr),_pcount(new int(1)){}//构造函数 SharedPtr(const Sh

  • 【面试】C++常见面试的问题整理2021-12-28 16:02:01

    变量的声明和定义有什么区别 变量的定义为变量分配地址和存储空间, 变量的声明不分配地址。一个变量可以在多个地方声明, 但是只在一个地方定义。 加入extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。 说明 :很多时候一个变量,只是声明不分配内存空

  • 微信HOOK 3.4.5.27 CALL信息留根-2021-12-272021-12-27 12:33:47

    1.二维码获取: HOOK:5D940000+20517A 5DB4517A CALL:5D940000+636CF0 特征码:FF 30 E8 ?? ?? ?? ?? 5DB4514F CC int3 5DB45150 55 push ebp 5DB45151 8BEC mov ebp,esp 5DB45153 56 push esi 5DB45154 68 D8F3415F push WeChatWi.5F41F3D8 5DB45159 8BF1 mov esi,ecx 5DB4515B

  • gcc里的coroutine_handle2021-12-26 16:04:29

    真正干事的是__builtin_coro_done, __builtin_coro_resume和__builtin_coro_destroy, coroutine_handle只是在void*外面包了一层。它没有析构函数,得去调destroy(). 它重载了(), h()等于h.resume()等于__builtin_coro_resume(ptr); 示意: template<> struct coroutine_handle<voi

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有