编程
文章平均质量分 56
Mikasys
这个作者很懒,什么都没留下…
展开
-
Msf木马偷其他程序的Token 实现提权
#include <windows.h>#include <TlHelp32.h>#include <iostream>DWORD getParentProcessID() { //返回explorer.exe的pid HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 process = { 0 }; process.dwSize = sizeo原创 2021-10-20 13:38:50 · 2172 阅读 · 0 评论 -
C++ 底层分析 7.malloc free new delete
1.malloc和free底层调用malloc->_nh_malloc_dbg->_heap_alloc_dbg->_heap_alloc_base->HeapAllocfree->_free_dbg->_free_base->HeapFree原创 2021-04-27 21:46:01 · 135 阅读 · 0 评论 -
C++ 底层分析 6.模板、引用、友元、运算符重载
1.模板#include <iostream>using namespace std;template<class T>void Swap(T &a,T &b){ a = a + b; b = a - b; a = a - b;}int main() { double a = 1.5456456456,b = 2.5456546546; printf("%lf %lf\n",a,b); Swap(a,b); printf("%lf %原创 2021-04-27 21:45:27 · 260 阅读 · 0 评论 -
C++ 底层分析 5.动态绑定、多态
1.多继承无函数覆盖struct Base1 { public: virtual void Fn_1() { printf("Base1:Fn_1...\n"); } virtual void Fn_2() { printf("Base1:Fn_2...\n"); } }; struc原创 2021-04-27 21:44:45 · 162 阅读 · 0 评论 -
C++ 底层分析 4.虚函数表
kd> u IopCreateFile l200nt!IopCreateFile:80576c2c 6a3c push 3Ch80576c2e 6898a14d80 push offset nt!GUID_DOCK_INTERFACE+0x54 (804da198)80576c33 e8485ffcff call nt!_SEH_prolog (8053cb80)80576c38 64a124010000 mov ea原创 2021-04-27 21:44:20 · 127 阅读 · 0 评论 -
C++ 堆栈小问题
下面两个程序最终i的值不一样,但是反汇编居然一样,太诡异了#include <iostream>using namespace std;int main() { int i = 10; &i; if(i == 10) { int i = 3; //最终i=10 //i = 3 //最终i = 3 } return 0;vs2010使得上述代码的反汇编完全一样,让人琢磨不透,最终还是用vc6发现了端倪结论:以这原创 2021-04-27 21:43:44 · 109 阅读 · 0 评论 -
C++ 底层分析 3.权限控制 Class
1.将定义与实现分开将定义与实现分离,代码会有更好的可读性,但不是必须的xxx.h 只是一个文件,可以是任何的后缀名,如果你愿意,可以叫xxx.exe#include 的作用只是把里面的内容复制过来 仅此而已.如:#include "abc.exexxx.h 与 xxx.cpp并不要求一定同名2.public private的使用public:这个成员哪里都可以用,不用担心被修改,所以,一旦发布成public的成员,是不能够改名字的.private:这个成员只用于内部使用,不要在其他的地原创 2021-04-27 21:43:07 · 245 阅读 · 0 评论 -
C++ 底层分析 2.构造-析构,继承
析构函数(初始)可以没有,有了必须按照规则用作用:初始化对象用的,创造对象的时候调用特点:3个重载:函数名字一样 参数个数或者类型不一样析构函数(清理)原创 2021-04-27 21:42:30 · 265 阅读 · 0 评论 -
C++ 底层分析 1.this 指针
1.结构体参数传递:相当于复制一份,浪费空间struct Base{ int x; int y; int z;};void function(Base b){}int main(int argc, char* argv[]){ Base base; function(base); return 0;}2.结构体指针参数传递:只传结构体首地址,节省空间struct Base{ int x; int y;};int Max(Base* pb){ if (pb-&g原创 2021-04-27 21:42:05 · 230 阅读 · 0 评论