Windows_核心编程
文章平均质量分 63
Windows核心编程
17岁boy想当攻城狮
在时间的大钟上,只有两个字「现在」
展开
-
实时操作系统与非实时操作系统的区别
在介绍这两个概念之前要先介绍一下操作系统内核中的“线程调度器”这里就拿Linux内核来做举列在Linux内核中有一个scheduler线程调度器,有特殊的算法来挑选线程,专门用来给运行在虚拟内存管理模式下的线程分配CPU控制权的那么先来介绍一下介绍一下scheduler是如何调度线程的在目前的Linux内核(包括以往的历史版本)中scheduler使用的是时间片轮转的方法来调度线程原创 2018-01-25 16:07:09 · 18680 阅读 · 0 评论 -
c语言实现shellcode转换工具
shellcode是一种小型内嵌代码,一般用于入侵,和修补漏洞的。这种代码是非常简洁的而且跨平台性能高,因为后面博主要写关于shellcode的文章,所以今天这里给大家介绍如何使用c语言写一个能够实现汇编到机器码的转换程序首先你需要一个汇编解释器:这里博主已经上传到网盘:链接:https://pan.baidu.com/s/1TuF1OeBJzAwcwVrlR4d4BQ...原创 2019-07-12 15:19:33 · 2647 阅读 · 0 评论 -
使用select模型详细介绍并使用此模型来监视标准输入缓冲区stdin里是否还有数据
select是sock通讯下的一个api,主要用来检查sock文件描述符所指向的文件缓冲区里的状态,最常用的检查缓冲区里是否还有数据,在sock模型下凡事从网络中发来的数据都会临时存放到缓冲区里,然后程序员使用read等函数读走,这个函数不仅可以用来检查sock文件描述符,同时还可以用来检查标准的c语言输入输出缓冲区的状态!函数原型:int select( int nfds, fd_set FAR...原创 2018-06-26 02:07:50 · 1641 阅读 · 0 评论 -
开源:Http接口测试程序
此程序是博主开发用来测试自己开发的WEB服务器的,但是喜欢开源精神,优质代码分享者、创建者是基于刚刚开源的WEB库写的WEB库:https://blog.csdn.net/bjbz_cxy/article/details/88978210源代码注释写的很清楚,可以下载学习,是纯c/c++写的,有预编译来判断是windows还是linxu,如果是Linux删除_WIN32i_宏即可:...原创 2019-04-02 19:05:35 · 1166 阅读 · 0 评论 -
网红超火罗马桌面时钟效果
今天有时间,看到某些社交软件里兴起一种类似罗马转盘的时钟动态壁纸,看起来挺炫酷的,于是博主也实现了一下:运行时软件会自动将渲染好的罗马时钟嵌入到桌面下想要实现的话,可以参考博主前几篇文章的教程哦! 如果直接给源代码,你什么都学不到,这不是博主写博客的初衷,因为之前有不少人,copy博客里的代码去实现某些功能,并冠名自己的,所以博主非常的不愉悦,后面所实现的任何有象征性的功能都...原创 2019-07-12 03:36:48 · 11435 阅读 · 6 评论 -
shellcode助手
因为最近在做插件编程,用到了部分shellcode,包括博主以后也会写一些关于shellcode方面的代码。所以临时写了一个shellcode转换工具:没有做优化,只是临时写的dui界面,上篇文章里有教如何实现这样的功能,这篇文章只是对其进行了简单的界面封装!正所谓身为一个软件工程师,一切功能理应自己写软件实现~源码下载地址:链接: https://pan.baidu.com...原创 2019-07-12 23:32:01 · 453 阅读 · 0 评论 -
C/C++实现按下任意键继续功能
当我们在使用系统命令:stop时会在终端下弹出:按下任意键继续的代码!这里只需要C/C++自带的函数即可:kbhit函数原型:int kbhit(void);返回值:如果有按键按下返回非0否则返回0函数介绍:此函数是C/C++里的一个自带函数,可以用于监视键盘输入事件,当有键盘在当前线程下按下按键时,此函数会监视按键消息,但不会返回键代码!示列:所需头文件: include <conio.h...原创 2018-06-25 02:17:34 · 11868 阅读 · 0 评论 -
C++通过Wininet库提交POST信息登录到PHPChina中文开发者社区
与上一篇教程文章“c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区”不同的是这次我们使用Wininet库来提交POST请求并得到HTTP响应消息而非服务器响应消息!本步骤就不讲诉抓包和分析协议包的过程了,如果想知道的话可以去看一下我原先写的TCP提交POST请求里有详细的抓包过程"c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区"下面是...原创 2017-08-26 15:42:08 · 4471 阅读 · 0 评论 -
Windows核心编程_LOG软件
博主最近在EasyEXPERT软件上编写GPIB程序,因为要用到LOG来生成日志,但是EasyEXPERT很明显没有提供这样的方法但提供了command来加载外部程序传参运行参数,所以可以使用这个方法来编写外部运行程序来获取运行参数,然后写log,这里为了方便以后可能有人会用到,源代码就发出来吧!格式为:Log软件在生成的时候会读取当前目录下的path配置文件获取log的路径,然后log会...原创 2018-08-28 16:21:29 · 349 阅读 · 0 评论 -
near、far、huge,based四个个指针的区别
near、far、huge,based四个个指针的区别near即近的意思,是一个16位的指针最大寻址范围在0x00~0x65536即64kb,1kb=1024字节,1字节对应一个地址使用方法:int near *p; //定义一个16位的int指针当指向超出范围的指针时,此指针的地址会被编译器复位到0x00比如:int near *p = 0xffff; //超出64k...原创 2018-07-17 15:48:00 · 1168 阅读 · 0 评论 -
MFC调用dos窗口使用printf,cout打印输出
当我们使用AllocConsole函数调用一个dos窗口时,mfc为我们提供了几个打印函数比如_printf等用来向此终端打印输出信息,但是你会发现标准c语言的printf失效了,是因为mfc在帮我们调用的dos窗口里的输入输出缓冲区被重定向了,被重定向为STD_OUTPUT_HANDLE宏,而printf使用的是stdout宏作为io文件流描述符,所以我们对此宏以文件流的方式进行重定向即可:#...原创 2018-06-27 17:27:23 · 2331 阅读 · 0 评论 -
c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区
这篇文章讲述如何利用C++编写一个自动登陆到PHPChina中文开发者社区的程序!首先需要工具:1.IE2.HttpWatch3.C/C++集成开发环境1.首先打开IE然后在IE上方的地址栏中输入“http://www.phpchina.com/”2.然后在点击右上方的工具菜单下拉找到HttpWatch Professional选项 开启HttpWatch抓原创 2017-08-22 10:31:24 · 2189 阅读 · 3 评论 -
使用Visual Studio来创建动态库/静态库,并加载
使用Visual Studio来创建动态库第一步新建一个控制台程序第二步去掉SDL安全开发周期,以及选中创建DLL空项目在资源管理器中添加.h和.cpp文件在.h文件里可以写上函数的声明:#pragma once //编译器命令 once头文件卫士extern "C"/*以C的方式编译这段函数*/ __declspec(dllexport)/*将一个函数声名为导出函数,就是说这个函数要被其他程...原创 2018-06-04 16:54:10 · 6374 阅读 · 0 评论 -
获取指定域名的IP地址
获取指定域名的IP地址所需函数:gethostbyname函数原型:struct hostent* gethostbyname(const char *name)参数:const char *name//主机名或域名返回值:函数执行成功会返回一个hostent结构体,其结构体原型如下:struct hostent{char *h_name;//主机正式名char ** h_alia...原创 2018-06-04 14:02:57 · 6226 阅读 · 0 评论 -
Visual Studio2013修改IDE集成开发环境视图风格
一.打开Visual Studio2013二.选择标题栏-工具-选项三.选择列表控件下的-常规在颜色主题标签下的组合框里就是风格选项,可以选中Visual Studio2013所提供的风格界面!你也可以将该选项取消选中,达到最为极致的视觉效果!也可以修改其它窗口显示配置也可以在环境子选项中修改其它视图配置:这里试一将主题修改成深色:注意如果你的电脑开多个Visual Studio的话修改此参数其它...原创 2018-04-09 18:08:59 · 1774 阅读 · 0 评论 -
详解窗口句柄,进程ID,进程句柄,窗口与进程之间的关系
窗口句柄:在Windows或Linux等操作系统下窗口句柄对应着每个窗口的钥匙,例如,你要对某一个窗口进行操作,你必须知道你要操作哪一个窗口,这里就拿Windows做举例,Windows下几乎会创建许许多多个窗口,但是我们怎么知道我们操作的是哪个窗口?答:就是窗口句柄,每个窗口在被创建出来之后就会被赋予一个句柄,该句柄(句柄实则上是一个指针)指向一个数据结构体,结构体里明确表示着该窗口的各种信息,...原创 2018-04-09 16:07:03 · 7647 阅读 · 0 评论 -
Visual Studio开发工具分配字符数组的问题
当我们在使用c语言创建字符串时一般是这样的:char* str = (char*)malloc(20);memset(str,0,20);申请完内存需要使用memset来初始化字符串!而使用Visual Studio编译器则完全不需要这么做只需要这样:char* str = new char[20]();注意到后面的“()”了吗?当你这样做分配内存工作时,Visu...原创 2019-03-25 20:03:33 · 542 阅读 · 0 评论 -
VSCODE链接库
平常我们在makefile上使用-L链接一些指定库,但是移植到vscode上后为了方便我们不使用makefile,想要添加编译参数可以在tasks.jso文件下的args添加:把你的链接库参数输入进去即可!原创 2020-09-08 11:08:20 · 4714 阅读 · 2 评论 -
多线程编程:线程死锁的原因以及解决方法
多线程编程:线程死锁的原因以及解决方法关于线程死锁这个问题相信程序员在编写多线程程序时会经常遇到的一个经典问题,这种情况往往出现在多个线程同时对临界资源访问时所产生的。属于临界资源的硬件有打印机、磁带机等,软件有消息缓冲队列、变量、数组、缓冲区等。诸进程间应采取互斥方式,实现对这种资源的共享。当我们在使用两个不同的线程访问同一个临界资源时就会出现如下情况:线程A优先被创原创 2017-11-14 21:10:50 · 6204 阅读 · 1 评论 -
sqlite3:unique constraint failed xxx Frame.No
最近在写一个项目发现第一次写入正常,第二次到执行execDML时就崩溃了。因为是对sqliteC++版的封装,仔细一看代码也没问题随着断点调试发现出错行在execDML于是就进入源码看一下最终定位到出错行是这里出现了异常报了szerror通过异常捕获发现错误是:unique constraint failed xxx Frame.No去查了下,是插入重复主键报的错。比如你已经插入key为302的了,你又往302上插入值就会报错。...原创 2021-01-28 15:35:48 · 1033 阅读 · 2 评论 -
关于在Windows64上编译程序出现相邻变量地址偏移相差32字节问题
最近看到粉丝向我提交的问题,他本想写一段程序,就是通过变量A获取变量B的地址并打印代码如下:#include <stdio.h>int test(int a,int b){ int* p = &a; printf("%d",p+1); return 0;}int main(){ test(123,321); return 0;}代码看起来没有什么问题,但是始终无法通过偏移找到参数B的地址,后来我原创 2021-11-04 17:13:26 · 419 阅读 · 0 评论 -
Windows核心编程_窗口蒙版效果
首先先看一下界面效果:遮罩窗口:模糊模态窗口:保留特定控件模糊保留特定控件:遮罩+模糊效果:遮罩模态效果:怎么样是不是很炫酷,非常适合在提示用户新信息或者其它需要模态窗口时候展现的效果,那么接下来,博主就一步一步教大家如何实现这个效果!创建win32工程 #include "stdafx.h"#include <windows.h...原创 2018-07-17 19:02:00 · 2064 阅读 · 3 评论 -
Windows核心编程_Edit控件无法输入问题
最近博主遇到一个很奇怪的问题:CreateWindow( //edit控件 "edit", "", WS_VISIBLE | WS_CHILD | WS_BORDER/*|DT_CENTER*/ | DT_VCENTER, 100, 70, 100, 25, hWnd, NULL, NULL, NULL);创建了一个edit控件,看起来没有什么问题,...原创 2018-07-19 17:44:53 · 1939 阅读 · 0 评论 -
Windows界面编程_Miniblink(2) 嵌入到Win32窗口里
这里博主不教关于Miniblink其它功能,只教对UI界面编程相关的API!第一步如何在Win32的窗口里嵌入Miniblink?第一步先创建一个Win32工程第二步包含wke头文件:#include "wke.h"第三步:创建一个全局变量,用于存储wke创建的窗口实列wkeWebView m_web;第四步在IniInstance函数里做初始化 ...原创 2019-06-26 18:27:24 · 3174 阅读 · 0 评论 -
Windows核心编程_窗口属性表
这里来介绍一下窗口属性表,窗口属性表是一个链表,用于存储窗口句柄的,这里来介绍两个函数:SetProp,GetProp函数介绍:BOOL SetProp(HWND hWnd,LPCTSTR lpString,HANDLE hData);参数介绍:hWnd:指向窗口的句柄,该窗口的属性表要接收一个新项。lpString:指向以null结尾的字符串指针,或者包含一个标识字符串的原子(即...原创 2018-07-17 19:31:12 · 1301 阅读 · 0 评论 -
Windows核心编程_Miniblin(5) 前后端交互数据
前端向后端传递数组:前端代码:<script> function myFunction(){ var arrayObj = new Array(); arrayObj[0] = "张飞"; arrayObj[1] = 15; arrayObj[2] = 1.75; arrayObj[3] = "男"; arrayObj[4] = "...原创 2019-07-09 12:19:30 · 639 阅读 · 0 评论 -
Windows核心编程_修改开机密码
使用dos下的net user命令可以修改格式为:user net 用户名 密码如果用户名不存在,则创建一个,否则修改!使用方法:C/C++版:使用stdlib库命令stsyem调用dos里的net user命令!#include <stdio.h>#include <stdlib.h>int main(){ char user...原创 2018-08-30 15:54:00 · 1738 阅读 · 1 评论 -
Windows核心编程_FS段寄存器
Windows核心编程_FS段寄存器FS段寄存器Windows用来存储一些进程信息的,FS段的首地址是存储这些进程信息的首地址:在内核态FS指向GDT表的:0x30地址, 在用户态FS=0x3B也就是说当切换到用户态时,操作系统会把进程下正在执行的线程的某些信息写入到0X3B为起始地址的空间里,内核态时候也一样,操作系统也会写入一些关于内核程序的相关信息到0x3B里!由于进程的不同进程信息也不同,...原创 2018-06-21 16:40:24 · 4341 阅读 · 2 评论 -
Windows核心编程_静态编译和动态编译的区别
1.静态编译静态就是将需要的系统dll打包进PE文件(关于PE文件的深刻介绍博主会在后面对其进行介绍)中,编译器会将这些模块码,或资源文件的数据,全部添加到可执行文件中,存放在可执行文件的模块区或资源区,并且做文件地址映射!这样在运行的时候Windows就会将这些数据映射到内存中(文件与内存偏移映射后面会介绍)然后需要用到这些dll或者资源时,直接jmp或call或mov去引用这些数据...原创 2018-08-28 16:29:17 · 775 阅读 · 0 评论 -
Windows核心编程_异型窗口
异型窗口是Windows200在窗口中引入的WS_EX_LAYERED风格,并搭配:SetLayeredWindowAttributes API实现的,这里所说的异型窗口不是指椭圆型的窗口或三角型之类的窗口:这一类的窗口在早期的Windows里就已经规定了的,只需要在创建窗口时修改stsy风格就可以了,这里所说的异型窗口是不规则口,比如一些游戏界面:类似这种在Windows并没有显示指定的风格界面...原创 2018-06-22 15:46:43 · 1163 阅读 · 0 评论 -
Windows界面编程_Miniblink(6) 个人信息界面
先看一下Demo:按钮发光动画效果:字体效果: 鼠标移动到字体上会有阴影缓动使用skn皮肤+miniblink框架编写而成,结合之前的教程,可以轻易写出这样的界面本源码基于前几篇文章,这里直接给源码:Win32:// Win32Project1.cpp : 定义应用程序的入口点。//#include "stdafx.h"#include "Win3...原创 2019-07-09 18:12:50 · 2053 阅读 · 0 评论 -
Windows核心编程_Visual Studio2019找不到MFC项目
1.在创建新项目的搜索栏里搜索mfc2.如果没有则选中安装多个工具和功能3.添加功能1.选中:“使用c++的桌面开发”2.在安装详细信息里将MFC选中即可原创 2020-09-18 17:09:13 · 2635 阅读 · 0 评论 -
Windows核心编程_Edit操作
今天午饭时间无聊,顺手写了几个对Edit控件操作的函数,都是消息处理,有需要的可以拿去学习,非常简单//EDIT操作//写void settxt(HWND hwnd,char* str) { SendMessage(hwnd, 12, 0, (LPARAM)str);}//读char *gettxt(HWND hwnd) { char str[1024] = {0}; Sen...原创 2018-08-30 12:56:37 · 798 阅读 · 0 评论 -
Windows界面编程_Miniblink(3) 事件绑定
Miniblink继承保留了cef里js事件回调的方法,我们可以使用miniblink里jsBindFunction函数来对html里与js脚本绑定的button或者对其标签进行js绑定。注意使用这个框架开发的坏处在于你必须会前端编程和后端技术,懂得交互过程,因为后面还要介绍如何获取页面的消息事件如果不想这样写的话,可以去我的github上下载开源的封装ui库,基于miniblink,无需...原创 2019-07-03 11:24:19 · 5509 阅读 · 0 评论 -
Windows核心编程_更改当前工作目录
在Windows环境下开发每个程序都会有一个工作目录比如你在C盘下有一个.EXE文件你打开,那么这个程序的工作目录就在C盘下,你使用fopen等文件IO函数即便不给绝对路径给相对路径那么Windows会默认从工作目录下+相对路径比如工作目录是C盘然后fopen打开文件给相对路径fopen("TEST.TXT");实际上Windows在给你创建IO对象的时候是以这样的路径来选择...原创 2018-08-28 16:25:21 · 2290 阅读 · 0 评论 -
Windows核心编程调用打印机
这是我在工作中实现的代码,可以获取默认打印机并打印:失败返回1,成功返回0这个函数是用来调用默认打印机的,其实原理很简单就是用GetProfileStringA获取win.ini里的配置信息,得到默认打印机的名字然后调用CreateDCA、StartDoc、StartPage、TextOutA、EndPage、EndDoc打印机全家桶API函数开始打印CreateDCA函数是创建一个DC绘图环境,为打印创建一个绘图环境StartDoc 开始绘图StartPage 通知打印机开启一个打原创 2021-04-13 09:35:32 · 1980 阅读 · 1 评论 -
Windows核心编程_Visual Studio快速修改一列所有字符
有如下代码:a->p = 0;a->d = 0;a->c = 0;a->b = 0;我们在Visual Studio里想把“->”换成“.”,可以通过alt快捷键修改,不需要一个一个的去改按住alt然后鼠标选中要修改的即可原创 2020-12-16 15:34:50 · 768 阅读 · 0 评论 -
CRT、ATL、MFC 三者介绍和关系
CRT原先是指Microsoft开发的C Runtime Library,用于操作系统的开发及运行。后来在此基础上开发了C++ Runtime Library,所以现在CRT是指Microsoft开发的C/C++ Runtime Library。在VC的CRT/SRC目录下,可以看到CRT的源码,不仅有C的,也有C++的。 CRT原先的目的就是支持操作系统的运行。因为Windows操作系统...原创 2018-04-09 14:19:40 · 1239 阅读 · 0 评论 -
Windows核心编程_剪辑版操作
Windows核心编程_剪辑版操作前言:Windows提供了一组对剪辑版读写操作的API,不过在此之前需要了解剪辑版的特性:剪辑版是Windows下的一块内存区域,这块内存区域可以用来临时存储数据,但是这个内存块是共享的,它是独一的,并且当某个进程对此剪辑版进行操作时会,那么这个剪辑版会处于占用状态,也就相当于线程中的加锁同步机制一样,被占用时其它进程无法对此空间读写,所以...原创 2018-07-17 16:06:12 · 4344 阅读 · 0 评论 -
Windows核心编程_关闭Windows
下面介绍几种在Windows编程中关闭Windows的几种方式首先介绍一个APIExitWindowsEx这个API是WIndows下为开发人员提供的对操作系统睡眠的几种方式API介绍:函数原型:BOOL ExitWindowsEx(UINT uFlags, // 关闭参数DWORD dwReserved // 系统保留,一般取0);参数介绍:uFl...原创 2018-08-31 11:45:06 · 376 阅读 · 0 评论