Windows————MFC
一、概念1 MFC的入口在哪里??
CWinApp的InitInstance里面。
编写MFC程序,需要做的事情是实现一个CWinApp的派生类,然后实现一个InitInstance这个虚函数。
在InitInstance这个函数,去创建一个窗口,并将窗口的对象的指针赋值给m_pMainWnd这个指针。
需要定义一个CWinApp的派生类的全局对象。
2 MFC有几种编程模型?单文档,多文档,对话框。我们的课程主要讲解的是对话框编程。
3 如何创建一个对话框。
3.1 首先要有一个对话框资源。
3.2 有一个CDialog类的对象objDlg。
3.3.1 调用objDlg的DoModal函数创建模态对话框
12345678910111213141516#include <afxwin.h>#include <afxdialogex.h>#include "resource.h"class CMyApp :public CWinApp{public: virtual BOOL InitIns ...
汇编语言————练习
电话本12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120 ...
WEB前端基础
WEB通信web通信机制最基本的http请求方式:
客户端向服务器端发起一个请求
服务器端接收到请求后会在服务器端进行业务逻辑处理运算
服务器端返回结果到客户端
一个很实在的例子就是当你打开这个页面是,浏览器根据网址向网站服务器发送请求,服务器端返回这个页面的内容,然后你开始浏览这篇文章,在你阅读这 篇文章的时候服务器端,如果作者更新了这篇文章,你不重新F5刷新页面,那你是不知道这篇文章已经被更新了的,而且刷新一个页面所耗费的资源是比较多的。 这是比较原始的一直更新内容的方式,当然像这样的技术文章也不需要实现实时的更新。
http协议web通信中最常用的协议
超文本传输协议(HyperText Transfer Protocol,缩写:http)是一种用于分布式,协作和超媒体信息系统的应用层协议。http是万维网的数据通信基础
http协议特点简单方便客户端服务器请求服务时,只需要传送请求方法和路径。
灵活http允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记
无连接无状态无连接的含义时限制每次连接只处理一个请求,服务器处理完客户的请求,并受到客户的响 ...
汇编语言————基础
补码:等于源码取反再加1
基础知识点
8086CPU地址总线有多少根?
20根,2^20 = 1MB
汇编指令的格式,有哪些构成
操作码,操作数
内存
寄存器
立即数
8086寄存器有哪些,
AX,BX,CX,DX, AH,AL, BH,BL,CH,CL,DH,DL
SI,DI
SP,BP
IP
FLAGS
CS,DS,ES,SS
80386的呢?
EAX,EBX,ECX,EDX
ESP,EBP
ESI,EDI
EIP
EFLAGS
CS,DS,ES,SS,FS,GS
标志寄存器有哪些位?
CF:进位(借位)标志
OF: 溢出标志
ZF: 零标志
SF: 符号
PF:奇偶
AF:辅助进位
DF:方向标志
TF:陷阱标志
IF:中断标志
8086为什么有分段机制?
逻辑地址和物理地址如何表示?
操作大小是16位,地址总线20根,能访问内存1MB
逻辑地址:段基址:偏移
物理地址:段基址 * 16 +偏移
寻址方式有哪些?立即数寻址: mov eax, 0x10000
寄存器寻址: mov eax, ebx
存储器寻址: mov eax, ...
网络编程————密码学
密码学概论密码学是什么密码学是对安全通信技术的研究,要能够有效的防范潜在攻击
概念密码学最基础的几个概念是加密,解密,密文和密钥。比如 Alice 有一段数据要传递给 Bob ,就要首先运行加密算法把数据转换成密文,密文就是一些看起来不知所云的内容。密文到了 Bob 机器上,Bob 运行对应的解密算法,就可以把密文再转换成数据。那么什么是密钥呢?其实在加密和解密运算过程中有两个要素,一个是算法,另外一个是密钥,英文叫 key 。key 就是参与加密解密运算过程的一小段数据。
理论基础首先,当代密码学是“互联网上的密码学”。历史上,从凯撒年代,就有秘密通信的概念,所以也诞生了凯撒密码这样的加密方式。后来电气革命兴起,人们也发名了专门用于加密的硬件器材。但是真正密码学的大发展其实是计算机兴起之后。尤其是互联网到来后,所有的信息都是在公共区域进行传输,任何人都可以截取我们的数据,于是在数据传输之前进行加密就显得尤其重要,当代的密码学也是在这个情景下来发展的。
第二,我们要记住,没有不可破解的密码。理论上,任何密码至少都可以通过暴力搜索的方式来破解。互联网上的加密算法都是公开的,所以 key ...
网络编程————基础
简介Berkeley Socket套接字套接字( Socket)最初是由加利福尼亚大学Berkeley分校为UNIX操作系统开发的网络通信接口,20世纪80年代初,加利福尼亚大学 Berkeley将美国国防部高研署提供的tC/iP集成到Unix中,并很快开发了TCP/IP应用程序接口(API),即 Socket(套接字)接口随着UNIX操作系统的广泛使用,套接字成为当前最流行的网络通信应用程序接口之一。
WinSocket套接字90年代初,由 Sun Microsystems, JSB Corporation, FTP software, Microdyne和 MicrosoftW等几家公司共同制定了一套标准,即 Sockets规范。它是 Berkeley Sockets的重要扩充,主要体现在它增加了一些异步函数和符合 Windows消息驱动特性的网络事件异步选择机制。 Windows Sockets规范是一套开放的、支持多种协议的 Windows下的网络编程接口。目前实际应用中的 Windows Sockets规范主要有1.1版和2.0版,其中1.1版只支持TCP/IP协议,而2.0 ...
Windows————代码注入与拦截
权限权限管理
UAC机制管理方式在管理员账户下,运行一个程序,也是低权限,只有选择管理员方式运行,才会分配高权限。
调整UAC方法1:gpedit
方法2 :设置
使用案例123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110BOOL CMy01UACDlg::OnInitDialog(){ CDialogEx::OnInitDialog(); // 给按钮加小盾牌 // 3. 判断具体的权限状况 // 1. 获得本进程的令牌 HANDLE hToken = NULL; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, ...
Windows原理————PE文件
什么是文件 存储数据的实体。
不同的文件是给不同的软件去使用的。不同的文件主要是格式不同。
格式就是数组的排列组织方式
。软件读取文件,按照固定的形式去解析文件的。
什么是PE文件 (Portable Executable)可执行 文件的缩写。这种类型的文件,是供windows系统解析,解析完了之后能够创建出进程去运行的文件。
PE头部信息(DOS头,NT头,区段表)
我们学习PE文件学习的是什么呢??学习的就是PE文件的格式,学习格式就是在学习一堆结构体。很多东西需要记忆。
为了便于我们记忆,需要一些辅助性的工具。
PE头部粗略图
DOS头简介在windows系统中的可执行文件在设计的时候,考虑到了兼容性问题。在正常的可执行文件的一开始的部分。嵌入了一个DOS可执行文件。作用就是在MS-DOS系统下能够输出一行这个程序不是运行在此系统下的。
这里有两个字段是有用的:
第一个 e_magic 永远都是 0x4D 0x5A 0x5A4D 你需要知道大端和小端的知识。
最后一个 e_lfanew 它是真正的可执行文件的起始位置。
实验一:假 ...
Windows————进程线程
内核对象一、内核对象是什么?
内核对象本质上是一个结构体,但是这个结构体只能由操作系统内核部分进行访问,并且只能由它进行创建,如果用于想要操作一个内核对象,就必须通过句柄找到内核对象,并且使用相应的API进行访问。
内核对象的通用操作形式:创建内核对象:CreateXXX,打开一个内核对象 OpenXXX,关闭内核对象一般会使用到 CloseHandle()。
二、内核对象的特性
全局性:内核对象是跨进程的,可以在不同进程中访问同一个对象,通常使用字符串或ID标识一个对象。
引用计数:每一个内核对象都有一个引用计数,当创建或者打开一个内核对象的时候,引用计数会+1,当关闭一个内核对象的时候,引用计数会-1,当引用计数为0时,内核对象会被销毁。
安全性:大多数内核对象在创建的时候,都需要设置一个安全属性,安全属性描述了哪些用户可以以什么样的方式访问内核对象,目前通常使用NULL来填充这个字段。
句柄表:每一个进程都有一个句柄表,相同的内核对象在不同的进程中,可能句柄值是不一样的,通常句柄值是句柄表的下标左移两位(4的倍数),句柄表描述了内核对象所在的位置以及访问需要用到的权限。一个进程 ...
Windows————SDK
一、Windows窗口的创建流程注册一个窗口类RegisterClass
1.1、提供一个消息处理函数(窗口回调函数)
1.2、提供一个窗口类的名字
创建一个窗口 GreateWindow 能够创建一个窗口,得到一个窗口句柄,是系统找到串口的一个标识
更新显示窗口UpdateWindow(更新)
Show Window(显示)
编写一个消息循环While(GetMessage)(…))
{
TranslateMessage();
DispatchMessage(…);
}
编写一个消息处理函数(窗口回调函数)DWORD WINAPI WndProc(HWND hWnd,int nMessage,WPARAM wParam,LPARAM lParam)
{
Switch(message)
{
}
}
问题1:怎么理解这一些代码,这个过程这段代码,是定形式,是微软规定好的流程
问题2:消息是怎么获取到的
只有窗口才能够收消息,窗口收的息,需要通过 GetMessage来从程序的消 ...














