lnk捆绑执行exe
前言转载自:EmbedExeLnk
使用方法编译源码注:报错的解决在下面
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901 ...
PE结构简述
LordPE下载
MS-DOS头:兼容性,在DOS系统下提示无法运行
12345678910111213141516171819202122// 直接在VS里面输_IMAGE_DOS_HEADER然后CTRL点击即可看到结构定义,19个字段,重点关注第一个和最后一个typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // MS-DOS头的标志MZ,固定为4D 5A,实际值为0x5A4D WORD e_cblp; // 文件末页的字节数 WORD e_cp; // 文件页数 WORD e_crlc; // 重定位 WORD e_cparhdr; // 区段中头部的大小 WORD e_minalloc; ...
CVE-2017-11882原理、复现和Poc解析利用
影响版本
Office 365
Microsoft Office 2000
Microsoft Office 2003
Microsoft Office 2007 Service Pack 3
Microsoft Office 2010 Service Pack 2
Microsoft Office 2013 Service Pack 1
Microsoft Office 2016
漏洞原理分析:参考文章:CVE-2017-11882 漏洞分析总结
注:没给链接的工具可以网上搜搜,很多的
定位漏洞程序
打开能弹出计算器的poc文档:
使用processhacker分析进程状态,发现calc由cmd打开,但是cmd却没有父进程,这不正常,至少有一个程序负责拉起cmd
使用pchunter查找父进程得到其PID但是找不到具体是什么
重新打开poc文档,pchunter得到PID + process monitor的树形控件定位到cmd父进程为EQNEDT32.exe
注册表新建ENQEDT32.EXE并设置x32dbg为即时调试器(详细方法看文末的 ...
c++结课小结
期末周终于结束了哭唧唧~明天考完C++就正式进入暑假啦!
对象所占据的空间只是用于存放数据成员,函数成员不计入,函数的代码在内存中只占据一份空间
使用复制构造函数的情形:
用类的一个对象去初始化另一个对象时 当函数的形参是类的对象时(也就是值传递时),如果是引用传递则不会调用 当函数的返回值是类的对象时
未定义复制构造函数系统会自动给出,并且会执行: 浅复制(复制对象在内存中的每一个bit)
浅复制是在复制这个对象的时候,让数据中的新旧对象指向同一个外部内容,析构的时候容易发生重复释放 深复制是在复制这个对象的时候,为数据中的对象制作了外部对象的独立复制。
复制构造函数有且仅有一个
123456// 复制构造,在定义对象的时候'='是传参的意思A a; A b(a) // 等价于 A b=a; // 赋值A a, b; b = a;
函数名后面加const表示为常函数,在该函数当中不可以修改变量
1int getx() const { return x; }
函数参数尽量使用常引用而不是值 ...
比特串求解排名第k位的数据
前言最近听一个学长讲了如何利用比特串求解排名第k位的数据,觉得还挺巧妙的
分析下面以求解排名第k位和成绩第k小(即倒数排名为k)的学生成绩为例解释算法思路:
录入学生成绩后,将成绩转换为比特串,规则如下:
定义一个容量为101的整型数组存放比特串并初始化为0,学生成绩为n则数组下标为n的数据置1(0≤n≤100,故数组容量定为101)
例如:一个容量为6数据为2的数组按上述规则应为{0, 0, 1, 0, 0, 0}
将每个学生成绩的比特串逐列相加,得到一个聚合后的比特串
例如:{0, 0, 0, 1, 0, 0} 与 {1, 0, 0, 0, 0, 0}聚合后为{1, 0, 0, 1, 0, 0}
要得到排名为k(成绩相同认为排名相同)的学生成绩,只需要定义一个初值为0的sum,从高位下标向低位下标依次加上聚合比特串数组的数据,直到sum ≥ k,对应的下标就是排名为k的学生成绩
同理:要得到第k小的学生成绩,我们可以定义一个初值为0的sum,从低位下标向高位下标依次加上聚合比特串数组的数 ...