- 博客(152)
- 资源 (19)
- 问答 (1)
- 收藏
- 关注

原创 逆向目录
https://blog.csdn.net/Hello_MyDream/article/details/106505072汇编学习一https://blog.csdn.net/Hello_MyDream/article/details/106515598JCChttps://blog.csdn.net/Hello_MyDream/article/details/106515648汇编学习二https://blog.csdn.net/Hello_MyDream/article/details...
2020-06-05 15:36:00
24753

原创 CSDN写文章离开电脑时一定要记得保存及其他注意事项
1. 写文章离开电脑时一定要记得保存,有些浏览器采用了动态地刷新方式,你博客没有命名,CSDN系统有时就无法自动保存,浏览器一刷新,刚刚写得内容就没有了一. 一。2. 需要慎用Ctrl + z撤销,不仅撤销长度多大,而且至今还未找到反撤销。。。...
2019-02-01 13:23:26
24528
原创 vim配置
"" __ __ " __ __/_/___ ___ ____ / /_ _______" \ \ / / / __ `__ \/ __ \/ / / / / ___/" \ V / / / / / / / /_/ / / /_/ (__ )" \_/_/_/ /_/ /_/ ,___/_/\____/____/" /_/"
2021-03-25 11:54:19
147
原创 C/C++面试题
一.为什么构造函数不能使用virtual关键字修饰?1、虚函数是为了迟绑定吧,为什么要迟绑定?因为好多行为编译期确定不了,需要运行期确定并调用合适的函数去完成相应的功能。但是对象构造的行为是确定的,不管是不是多态,只要有new Object()这种动作,就一定会沿着继承的顺序依次执行对象的构造。这种确定的没有必要的事情,编译器开发的时候也就不会考虑这种机制。2、构造函数是用于创建对象的,而虚函数是对象创建后地址存在虚函数表中的,此时对象尚未创建,无法使用虚函数。实际上我是不认可第二个回答的
2020-10-23 19:49:53
168
原创 08-翻金币游戏
mianscene类:游戏的开始界面mypushbutton类:为开始按钮和返回按钮封装的无边框的按钮控件chooselevelscene类:选择游戏关卡的界面playscene类:游戏的出场景mycoin类:为金币封装的按钮dataconfig类:游戏配置类mainscene.h#ifndef MAINSCENE_H#define MAINSCENE_H#include <QMainWindow>#include "chooselevelscene..
2020-10-22 16:12:23
407
原创 02 Linux进程间通讯
进程间通讯( IPC:Inter Processes Communication )一. 管道(PIPE)管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符。 对于管道本身而言,不是普通的文件,不属于某个文件系统,其只存在于内存中;对于通讯而言,管道是半双工的通讯方式,数据在同一时刻只能在一个方向上流动;对于使用而言,管道没有名字,只能在具有公共祖先的进程之间使用。1. ...
2020-09-14 10:25:05
90
原创 学习 Qt 编程的好书精品推荐!
学习 Qt 编程的好书精品推荐!最近一段时间,准备开始搞Qt方面的东西,想找几本书看看。网上介绍QT的书籍也有很多,不想浪费时间,所以想找几本精品的书籍来看。花了半天的时间找了几本非常不错的,这里面整理好之后推荐给大家!下面介绍的几本书可以说每本都不错。不过放在这一堆大家也不知道先看哪个,后看哪个?所以这块给大家列举一下学习的顺序:由浅入深。大家也可以根据自己对于Qt方面的热衷程度与想要学...
2020-09-14 10:24:34
8883
1
原创 libevent基本用法
根节点1. struct event_base *event_base_new(void); //创建红黑树根节点成功返回结构体指针,失败返回NULL。2. void event_base_free(struct event_base *base); //释放开辟的根节点内存事件循环1. int event_base_loop(struct event_base *base...
2020-09-14 10:21:05
275
原创 01 Linux系统编程基础——进程
一. 概念1. 并行与并发:区分的关键点是“同时”。并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果。即宏观上同时,微观上交替执行。2.进程控制块PCB进程运行时,内核为每个进程分配一个PCB(进程控制块),维护进程相关的...
2020-09-14 10:19:59
104
原创 C语言常见问题总结
一.为什么不能在变量声明时对其进行赋值?变量的声明为:在变量已经存在的情况下,去告诉别人这个变量的存在。变量的声明不会再给变量开辟空间了。二.数组的下标为什么从0开始?1. 数组的出界点即代表数组元素个数,出界点不在数组下标范围内,即不对称边界:[0 , n)。2.因此我们可以将迭代时的条件记为i < n;而不是i <= n - 1;。三.浮点型在内存中的存储方...
2020-09-14 10:19:35
2734
原创 C语言中变量的存储类型
C语言中变量的存储类型:变量的存储类型:是指存储变量值的内存类型。 变量的存储类型决定了 变量何时创建、何时销毁、保持多久。 有三个地方可以存储变量:普通内存、运行时堆栈、硬件寄存器。变量的缺省(default,同默认)存储类型时,取决于它声明的位置。在任何代码块之外声明的变量总是存储的静态内存中,被称为静态变量,在程序运行之前创建。 在代码块内部声明的变量的缺省存储类型是自动的,...
2020-09-14 10:18:56
600
原创 图的广度优先遍历与深度优先遍历
一. 广度优先遍历(Depth-First Search)在进行遍历时,从图的深度入手,使用栈从起始顶点遍历到与之相连的某条通路的末尾,没有路时再选择回退,即顶点元素出栈。具体过程可以进行如下描述:创建一个访问标记数组visited,并初始化为false,表示此顶点没有被访问创建栈,将某个元素入栈(这里我们选取的是顶点数组中下标为0的元素),并将其输出while (!s.empty(...
2020-09-14 10:17:33
329
原创 PE结构中的VA、RVA、FOA
VA:虚拟内存地址 就是在4G虚拟内存空间中(0x00000000 ~ 0xFFFFFFFF)定位的地址。RVA:相对虚拟内存地址 从所在模块(dll)基地址开始的地址,即:模块基地址 + RVA = VAFOA:文件偏移地址 它是指某个位置距离文件头的偏移。与内存无关。...
2020-09-14 10:16:18
820
原创 windows家庭版打开组策略编辑器的方法
1、新建txt,添加如下代码。@echo offpushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >&
2020-09-12 17:43:44
839
原创 gcc添加环境变量
1、使用QT中的GCC来添加环境。2、在path新建环境变量添加:Qt\Tools\mingw530_32\bin后点击确认键。3、关闭命令行后重新打开即可。
2020-09-08 14:03:37
2281
原创 Kali Linux忘记密码怎么办?
1、启动你的Kali Linux,等出现GRUB引导菜单时,按向下方向键选择“恢复模式”,按E键进入编辑模式。2、进入编辑模式后,参照下图进行修改(将ro改为rw,在后面添加init=/bin/bash):3、修改完成后,按F10键或Ctrl+X键继续启动。4、启动完成后,出现如下图的命令行,这时输入passwd root,回车就可以直接设置新密码(修改其他用户,把root改为其他用户名即可)5、回车以后,输入新密码,并再次输入确认,系统提示密码更新成...
2020-07-24 22:22:30
19016
1
原创 Window10下使用administrator的方法
1、Win键搜索cmd,管理员身份打开;或者win + s可以搜索2、输入命令“net user administrator /active:yes”后回车3、win键点击头像切换用户即可注意:一般在软件安装或使用时需要权限,通过右键以管理员身份打开即可,不必使用administrator用户。...
2020-07-19 23:31:28
14449
原创 窗口操作函数
查找窗口找window窗口句柄可以使用spy++或者大漠这样的工具,但是在程序重启时句柄会有变化,所以需要使用函数。#include "stdafx.h"#include <stdio.h>#include <Windows.h>#include <TlHelp32.h>1、FindWindow + SetWindowText //参数:类名 标题 HWND hwnd = ::FindWindow(TEXT("#32770"), TEXT("飞
2020-07-10 02:18:12
26262
原创 调用约定
调用约定函数的调用约定就是:描述参数是怎么传递和由谁平衡堆栈的。__stdcall __cdecl __fastcall调用约定 参数压栈顺序 平衡堆栈 __cdecl 从右至左入栈 调用者清理栈 __stdcall 从右至左入栈 自身清理堆栈 __fastcall ECX/EDX传送前两个,剩下:从右至左入栈 自身清理堆栈 ...
2020-07-09 22:54:08
26185
原创 项目——PE解析器(MFC)
这个程序写了差不多两天吧,第一次用MFC写界面,还是比较陌生的,所以这里来整理以下。一. 文件对话框CFileDialog dlgFile(TRUE, \ NULL, \ NULL, \ OFN_HIDEREADONLY, \ _T("Data Files (*exe;*.sys;*.dll)|*exe; *.sys; *.dll|All Files (*.*)|*.*||"), \ /*_T("Describe Files (*.exe)|*.exe|Worksheet F
2020-07-06 02:27:32
25981
原创 MFC中关闭窗口的几种方式
一. 关闭主窗口1、ExitProcess(0);2、AfxGetMainWnd()->SendMessage(WM_CLOSE);3、PostQuitMessage(0);//最常用二. 关闭对话框1、DestroyWindow();在使用时有可能出现断错误:程序崩溃是由DestroyWindow函数使用不当造成的。MSDN中DestroyWindow函数中有这样一句话:A thread cannot useDestroyWindowto destroy a w..
2020-07-04 14:49:13
28362
原创 MFC销售系统项目——静态拆分窗口与自定义消息
一. 静态拆分窗口1、自定义两个类:CSelectView和CDispalyView(它的基类必须是视图类);CSelectView继承于CTreeView,CDispalyView继承于CFormView。2、CMainFrame类中,声明CSplitterWnd类型的对象:private: CSplitterWnd m_spliter; // 切分窗口类对象3、重写框架类CMainFrame的OnCreateClient函数:return TRUE; 自己初始化客户..
2020-07-04 01:31:48
25895
原创 关于_CRT_SECURE_NO_WARNINGS
写MFC时无论在预处理器处添加_CRT_SECURE_NO_WARNINGS还是在文件中定义_CRT_SECURE_NO_WARNINGS都还是报错,之后查到添加到stdafx.h文件中就好了,在这里记录一下。
2020-06-28 19:44:44
26137
原创 Windows进程
一. 进程的创建BOOL CreateProcess( LPCTSTR lpApplicationName, // name of executable module LPTSTR lpCommandLine, // command line string 命令行参数 LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD LPSECUR
2020-06-23 21:46:48
25915
原创 Window线程安全与线程控制函数
一. 线程安全问题多线程同时访问全局变量:一个线程取值后失去CPU另一个线程取值后也失去CPU,此时它们保存的就是相同的值。也是是说,比如两个线程再次对全区变量做++操作时变量只会被修改为同样的值。二. 临界区(线程锁)临界区:Critical Section (Critical:临界的、关键的)1、创建CRITICAL_SECTION: CRITICAL_SECTION cs; 2、在使用前进行初始化 ...
2020-06-21 03:17:52
26935
原创 Window线程与线程操作函数
创建线程HANDLE hThread1 = ::CreateThread(NULL, 0, ThreadProc1, &a, 0, NULL);HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全属性 通常为NULL SIZE_T dwStackSize, // 参数用于设定线程可以将多少地址空间用于它自己的堆栈
2020-06-21 02:58:58
26800
原创 Win32窗口相关API反汇编
1、Win32应用程序入口识别/*程序入口*///APIENTRY(API入口) __stdcallint APIENTRY WinMain(HINSTANCE hInstance, //ImageBase HINSTANCE hPrevInstance, //NULL LPSTR lpCmdLine, //命令行参数,可以用Debug版打印,也可以使用Release版使用Dbgview.exe查看 int nCmdShow) //指定程序窗口如何显示 看到KERNEL32.GetVer
2020-06-20 18:28:42
26901
原创 ODbg使用技巧
0x00:Shift + F2可以下条件断点,汉化版od条件断点会被更改,遇到这种情况就要用英文版了。 [esp + 4] !=[esp + 4]或0x xxxxxxxx(这里输入里面的数值或其他值):表示在[esp + 4]里面的数值不为这个值的时候再断。0x01:双击反汇编右侧的位置可以添加注释。0x02:断点停在在函数头部时可以点击follow in disassembly跳到函数调用位置。0x03:Ctrl + g可以直接全局搜索。0x04:F2断点,F7步入,F...
2020-06-20 13:57:42
27540
原创 Windows消息处理机制
一. 消息与事件Windows中的事件是一个“动作”,这个动作可能是用户操作应用程序产生的,也可能是Windows自己产生的。Windows为了能够准确的描述这些信息,提供了一个结构体:MSG,该结构体里面记录的事件的详细信息。二. 消息流程1. 系统 或 用户触发某个动作 //事件2. 系统将这些信息存储到MSG结构体中 //消息3. 系统将该消息存储到相关应用程序的消息队列中MSG Msg;4. while(GetMessage(&Msg,NUL...
2020-06-19 01:13:35
27286
原创 MFC常用控件
ComboBox:下拉框 m_combobox.AddString(TEXT("唐僧")); m_combobox.AddString(TEXT("孙悟空")); m_combobox.AddString(TEXT("八戒")); m_combobox.AddString(TEXT("沙僧")); m_combobox.SetCurSel(0); m_combobox.InsertString(2, TEXT("白龙马")); m_combobox.DeleteString(3); C.
2020-06-18 22:09:22
27938
原创 C语言宽字符
一. 多字节字符1. 基于ASCII的GB2312标准ASCII表 0 ~ 127拓展ASCII表 0 ~ 255GB2312 10000000 ~ 11111111(高位) + 10000000 ~ 11111111(低位) 问题:不同国家的字符集会产生乱码2. 基于UNICODE的UTF-8UNICODE(同一码 / 万国码):unicode是2个字节。 这一标准的2字节形式通常称作UCS-2(UnicodeCharacterSet)(原ASCII也位双字节)。然而,受..
2020-06-17 14:39:59
30080
原创 C++逆向基础与正向比较——Virtual关键字、虚函数表以及动态绑定的实现
添加Virtual后会多出四个字节,位于结构体的首地址。这个指针是虚函数表指针(vptr / 虚表指针),指向了虚函数表的开始位置;对虚函数表头继续寻址,就可以得到虚函数指针了。可以看出,结构体首地址的指针为三级指针。在vptr指向的位置维护了一个数组,即虚函数表,里面保存了当前类内所有虚函数的地址。这里找来一张图可以参考一下:使用指针来调用一下函数:#define _CRT_SECURE_NO_WARNINGS#include <iostream>using name
2020-06-16 16:22:42
29612
原创 PE结构解析
一. DOS头原来为DOS系统使用,现在只需要记住如下两项。1、DOC头: WORD e_magic * "MZ标记" 用于判断是否为可执行文件. DWORD e_lfanew; * PE头相对于文件的偏移,用于定位PE文件 如上图所示,DOS头一共40H个字节,即64个字节。结尾处4个字节指向了标准PE头的位置:D8。在这中间的文字是编译器加入的一些描述信息。这些字.
2020-06-16 00:35:53
28822
原创 C++访问父类私有成员
其实也很简单,因为首地址相同,通过指针访问就可以了。#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;class A { int a = 10;};class B:A { int b;public: B() { *(int *)this = 20; cout << *(int *)this << endl; }};int main(int .
2020-06-16 00:00:45
27810
原创 给软件添加代码
一. 代码节空白区域添加代码1. 根据SizeOfRawData - VirtualAddress的值来判断剩余空间是否足以添加代码2. 根据SizeOfRawData + PointerToRawData来到空余部分3. 将汇编指令转为硬编码:此处添加的代码是MessageBox,可以通过OD(走下角命令 bp MessageBoxA)来查看MessageBox的地址。6a 00 6a 00 6a 00 6a 00 e8 00 00 00 00 e9 00 00 00 00push 6
2020-06-11 16:35:45
27823
原创 C基础反汇编
switchswitch性能高于if语句的原因在于在case值较为连续的时候会生成值连续的大表,用switch的参数减去第一个最小的case值,和最大值进行比较,小于等于的话在表的范围内寻址即可[ecx*4+0F44D04h]。牺牲内存空间,提升效率,以空间换时间。有时间隔较大的还需要生成小表来记录大表的偏移量,省去大表的许多数据。小表记录偏移量的最大值为FF。int main(int argc, char *argv[]){ switch (1) { case 1: printf(.
2020-06-07 20:08:02
27982
原创 C语言参数传递——数据与内存宽度
如下图所示,将参数定义为char类型并不会节省空间,依然会按照4字节压栈传参。最后一行的堆栈平衡也很明显的。
2020-06-05 23:57:52
29577
原创 字符串截取
有一个字符串是这样的:china中国verygood天朝nice,里面既含有中文又含义英文,请编写一个函数,能截取任意长度的字符串n(n<=总长度)例:fn(5) = chinafn(6) = china中fn(8) = china中国v#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <m
2020-06-05 15:32:29
27366
FlashThief(优盘小偷).zip
2019-10-10
lua-5.3.5源码
2019-01-24
PotPlayer播放器
2019-01-13
vim下经典molokai配色方案
2019-01-13
汉化版Fiddler
2019-01-13
VC_Linux-Linux连接插件
2019-01-13
googleH5速度控制器
2019-01-13
Dev-Cpp 5.11
2007-02-06
shell脚本变量拿不到数据
2021-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人