自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fzuim的博客

不忘初心,方得始终。

  • 博客(114)
  • 资源 (19)
  • 问答 (1)
  • 收藏
  • 关注

原创 【设计模式】图说设计模式

http://design-patterns.readthedocs.io/zh_CN/latest/index.html

2018-08-14 09:18:21 274

原创 【Inline Hook应用篇】限制打开文件选择对话框

我们要实现限制程序不允许发送文件,可以通过限制“文件选择对话框”实现。对于文件选择对话框的限制,基础点的就是Hook:GetOpenFileName、SHBrowseForFolder,对这两个API的Hook,可以限制市面上80%的文件发送,但对于QQ之类的在XP系统以上就不能成功限制了。具体是因为QQ在选择文件发送的对话框,采用COM接口来实现,所以要限制QQ发送文件,还需要额外Hook C...

2018-07-31 19:06:31 1343 1

原创 【Inline Hook应用篇】限制剪切板(针对文件类型)

限制剪切板,主要是限制不允许粘贴。我们对这两个系统API进行挂钩:GetClipboardData和OleGetClipboard//!<限制剪切板InitHook("user32.dll", "GetClipboardData", (DWORD)hook_GetClipboardData);InitHook("ole32.dll", "OleGetClipboard",...

2018-07-31 13:50:18 1062 2

原创 【Inline Hook基础篇】挂钩系统API

对于怎么挂钩系统API的实现,网上对此的解释有很多也很详细。这边暂不进行长篇大论,就简单的说明下原理:修改系统API的前几个字节,并写入 JMP 0x15a123 汇编指令,实现调用系统API自动跳转到我们的API的过程。对于API HOOK的实现,现成的有MHOOK、DETOUR等类似的框架实现。既然我们要清晰的认识具体怎么实现,那么我们就自己编写实现方式,不采用第三方库。其实也很简单,没啥...

2018-07-31 13:40:03 1466

原创 【Inline Hook基础篇】框架搭建

Windows程序员对于HOOK技术应该都很熟悉,HOOK俗称:钩子。即将自己想实现的功能,挂钩到系统的函数上,达到调用系统的函数时能自动执行我们实现的功能。对于HOOK,也分为:消息钩子,API钩子,内核钩子。消息钩子和API钩子都是在应用层(Ring3)上实现,内核钩子则是在内核层(Ring0)上实现的。此次开篇,逐重讨论下Inline Hook的实现方式,Inline Hook也是AP...

2018-07-31 10:27:52 1501 2

原创 【工具类】ZwQuerySystemInformation枚举进程

曾经基于兴趣搞过很多小功能,但后来工作中比较少用到,代码也就安静的沉没在磁盘中。最近打算整理下之前弄过的东西,也不算荒废之前的付出吧。。。void InitProcessList(){ ZWQUERYSYSSTEMINFORMATION MyZwQuerySystemInformation = (ZWQUERYSYSSTEMINFORMATION)GetProcAddress(Get...

2018-07-25 09:51:06 787

转载 【编程笔记】不同模块不同的堆

在linux下,每个进程只有一个heap,在任何一个动态库模块so中通过new或者malloc来分配内存的时候都是从这个唯一的heap中分配的,那么自然你在其它随便什么地方都可以释放。这个模型是简单的。但是在windows下面,问题变得复杂了。1、windows允许一个进程中有多个heap,那么这样就需要指明一块内存要在哪个heap上分配,win32的HeapAlloc函数就是这样设计的,...

2018-07-17 15:31:51 406

原创 【工具类】C++花式字符串操作

分割字符串void Separate(const wstring& src, const wstring& strSet, vector<wstring>& container){ wstring::size_type pos = 0; pos = src.find_first_not_of(strSet, pos); w...

2018-07-06 14:03:23 711

原创 【编程笔记】随笔_20180619

经过了大半个月的忙碌,总算有了几天相对清闲的时间。之前大半个月基本上,天天在赶项目,一个接一个。虽然难度不大,但是也很烦,毕竟想要找个时间好好整理下思绪,5月末的时候,上头下了个死命令:最后4天,立马搞出个WebService服务,提供给以后项目做同步信息用。。。当初接到时候,内心还是有点小波澜,毕竟之前很少写过一整个服务器的框架,而且还是HTTP。不过出于自己对于新东西的好奇心,还是迅速的投...

2018-06-19 14:53:16 191

转载 【编程笔记】extern “C”和.def文件和__stdcall和__cdcel的作用

动态链接库的使用有两种方式,一种是显式调用。一种是隐式调用。 (1) 显式调用:使用LoadLibrary载入动态链接库、使用GetProcAddress获取某函数地址。(2) 隐式调用:可以使用#pragma comment(lib, “XX.lib”)的方式,也可以直接将XX.lib加入到工程中。DLL的编写 编写dll时,有个重要的问题需要解决,那就是函数...

2018-04-04 09:52:01 2620

原创 【工具类】格式化打印信息

#pragma once#include <Windows.h>void odprintf(PCWSTR format, ...){ va_list args; va_start(args, format); int len = _vscwprintf(format, args); if (len > 0) { len +...

2018-03-21 10:24:27 391

原创 【MFC编程】屏幕截图,并保存成文件

获取屏幕位图代码:HBITMAP CScreenShotDlg::GetScreenBitmap(){ HDC hSrcDc; HDC hMemDc; HBITMAP hBitmap; HBITMAP hOldBitmap; int nWidth; //!<有效宽度 int nHeigth; //!<有效长度 int...

2018-03-15 15:49:40 1495

原创 【编程笔记】虚函数表

如果一个C++类中包含有虚函数,C++编译器在进行编译时,会通过动态联编机制,为这个类生成一个“虚函数表”。 我们通常把所有的方法都是纯虚函数的类,叫做:接口类。class BasicTable{public: virtual void Function1() = 0; virtual void Function2() = 0;};对于这个接口类里面方法的实现,...

2018-03-12 16:54:07 299

原创 【设计模式】单例模式之类模板实现

/** Copyright (c) 2018,Fzuim* All rights reserved.** 文件名称:SingletonObj.h* 摘 要: 单例模式,使用类模板* 用法示例 DECLARE_SINGLETON(CDestObject);** 当前版本:1.0* 作 者: Fzuim* 完成日期:2018年3月8日*/#pragma oncete...

2018-03-08 13:28:45 1816

原创 【设计模式】单例模式之线程类

好记性,不如烂笔头。对于单例模式的理解和应用还是需要多多实践,这次有感而发,写份基于线程运行的单例模式。 单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。 头文件:#pragma once#include &l...

2018-03-08 09:57:56 255

转载 Win32平台下OpenSSL编写SSL,TLS程序

一、简介:SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.TLS(Transport Layer Security)是IETF的TLS 工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0,即RFC2246.SSL/TLS提供的安全机制可以保证应用层数据在互联网络传输不 被监听,伪造和窜改.ope...

2018-02-08 16:53:28 602

原创 【开源项目】FileZilla源码自带线程封装

#if !defined(AFX_THREAD_H__67621B15_8724_4B5D_9343_7667075C89F2__INCLUDED_)#define AFX_THREAD_H__67621B15_8724_4B5D_9343_7667075C89F2__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER >

2018-02-02 13:51:26 919

原创 【开源项目】POCO线程类分析

最简单的Poco线程调用方式:Thread thread;MyRunnable r;thread.start(r);关注的重点,就是MyRunnable:线程的运行体。class MyRunnable: public Runnable{public: MyRunnable(): _ran(false) { } void run() {

2017-12-04 14:00:56 859

原创 【开源项目】POCO线程池分析

一、接口 ThreadPool(int minCapacity = 2, int maxCapacity = 16, int idleTime = 60, int stackSize = POCO_THREAD_STACK_SIZE); /// Creates a thread pool with minCapacity thre

2017-12-01 11:14:04 3712

原创 【开源项目】微信后台PhxRPC编译教程

一、简介 PhxRPC是微信后台团队推出的一个非常简洁小巧的RPC框架,编译生成的库只有450K。 二、环境 首先,这份代码的编译得需在Linux的环境下,并检查下是否安装了git工具(命令行输入git,系统就会告诉你是否安装,并且提示你怎么安装)。环境确认无误。 三、获取源码 1、获取PhxRPC源码:git clone –recursive https://github

2017-11-30 19:15:23 685

原创 【MFC编程】MFC将ListCtrl列表导出到Excel-采用文件流写Excel兼容Html格式(不需要Excel环境)

 如标题所言,将ListCtrl的内容导出到Excel文件。不需要Excel环境支持!  TCHAR szFilter[] = _T("Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*||"); CFileDialog file(FALSE, _T(".xls"), _T("TransForm"), OFN_HIDEREADONLY | OFN_OVER...

2017-11-29 17:30:14 1484

转载 【工具类】VLD(Visual LeakDetector)内存泄露库的使用

 VLD简介由于C/C++语言没有所谓的垃圾收集器,内存的分配和释放都需要程序员自己来控制,这会给C/C++程序员带来一定的困难。当您的程序越来越复杂时,它的内存管理也会变得越来越困难。内存泄漏、内存越界是最常见的内存问题之一。 内存泄漏如果不是很严重的话,在短时间内对程序不会造成太大的影响,而且在进程终止的时候,所有分配的内存都会释放掉。但是对于长时间运行的程序,其破坏力是惊人的,从...

2017-11-29 10:49:29 296

原创 【算法】最长路径——百度2017校招机试题

解析:这道题目刚拿到手,很容易就确定是道优先搜索算法的题目,和我博客之前写的一道迷宫题目一致。根据题目,我们只要在输入的矩阵中找到最高点和最低点,然后从最高的地方开始4个方向的轮训,直到最后到达最低点。那既然是要求最长的奔跑路径,那么每次4个方向轮训肯定是要走当中值最大的那一个了。 #include <iostream>#include <stack>us...

2017-09-30 15:25:45 371

原创 【算法】等差数列——2017网易校招机试题

如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列 输入描述:输入包括两行,...

2017-09-08 10:26:59 458

原创 【网络编程】I/O完成端口模型详解

简答粗暴——完成端口例子:http://download.csdn.net/download/fzuim/9968393首先摘抄一段《Windows核心编程》I/O完成端口的一段话:Windows的设计目标是一个安全的、健壮的操作系统,能够运行各种各样的应用程序来为成千上万的用户服务。回顾历史,我们能够采用以下两种模型之一来架构一个服务应用程序。串行模型:一个线程等待一个客户发出的请求。当...

2017-09-07 14:56:26 1332

原创 【设计模式】简单工厂类模式<初探>

 背景:主要是解决,在不同的情况下需要创建不同类型对象,然后对该对象进行操作。比如:任务类型,我们可能就分了:A任务,B任务,C任务...自然而然,我们首先会去定义个基任务类型:CBaskTask,然后派生出,CChildTask1、CChildTask2、CChildTask3...在不同的场景下,我们可能要建立不同的类型任务,然后对其进行操作。我们总不能用switch-case来...

2017-08-14 09:24:41 252

转载 ADO数据库编程

一、数据库操作准备// ---------------------------------------------------------------------------------------------------------------------------------1、导入ADO动态链接库  在工程的stdafx.h中加入如下语句:  #import

2017-07-31 09:16:38 306

原创 【算法】深度优先搜索

以一道题目,作为介入点:定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5×5数组下所示:intmaze[5][5]={0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,0,...

2017-07-25 10:06:31 416

原创 【算法】打印顺序——2017华为招聘机试题

某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别采用数字1~9表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则执行任务A的打印。请编写一个程序,根据输入的打印队列,输出实际打印顺序。函数原型:void printOrder(const int input[...

2017-07-21 15:50:57 11640 2

原创 【算法】括号匹配——2017华为招聘机试题

给定一个字符串,里边可能包含“()”、"{}"、“[]”三种括号,请编写程序检查该字符串的括号是否成对出现,且嵌套关系正确。输出:true:代表括号成对出现并且嵌套正确,或字符串无括号字符,false:未正确使用括号字符。分析:这个题目,如果有做过较多笔试题目的应该知道,简单的采用一个栈的特性,就能解决,左括号栈顶字符必须和第一个入栈的右括号字符匹配;#include "stdafx.h...

2017-07-21 15:40:22 2406

原创 【DLL注入】C++远程DLL注入

这是个很古老的DLL注入技术,采用的是创建远程线程的方式。将LdadLibraryA的函数地址当做线程的回调地址,线程参数采用待注入DLL的绝对路径值。这个参数我们得采用VirtualAllocEx和WriteProcessMemory的方式在目标进程进行内存空间的申请和写入。废话不多说,贴上自己写的代码:DLL注入函数: bool Dll_Inject(DWORD&amp; v_d...

2017-06-28 16:53:54 1782

原创 【工具类】通过进程令牌启动新的进程

对于进程令牌(Token)比较常用的就是:explorer.exe这个进程的令牌,那么我们就以这个为例,通过explorer.exe的进程令牌启动一个新进程。启动进程的API为:CreateProcessAsUser。首先获取explorer.exe的进程令牌Token:lpName我们传:"EXPLORER.EXE",返回的令牌在hToken;BOOL GetTokenByName...

2017-05-27 15:33:25 940

原创 【编程笔记】UNICODE和UTF-8和ASCII互转

最近维护一个项目时发现,MFC的Cstring类型写到ini文本时,出现了乱码。因为写入的数据带有类似的特殊字符❀,由于ini默认创建的编码格式为GBK编码格式,但是这个特殊字符在默认的GBK编码下是不能识别的,会以?的形式存在。那这个特殊字符的编码是什么,暂时还没搞清楚。但是既然知道存在这样的bug,那么我们就有了相应的解决方法:在写入ini文件时,先将unicode编码的内容转成utf-8(u...

2017-05-25 16:10:23 3671

原创 C++操作Sqlite数据库

这篇文章,主要介绍的是:利用网上封装好操作sqlite3的类CppSQLite3DB,来进行数据的操作。由于源码是开放的,所以可以很清楚的知道执行open操作时,到底用了哪些Sqlite3接口,这里不再做详细介绍。1、下载CppSQLite3.h和CppSQLite3.cpp这个封装好的源码文件;2、下载Sqlite3文件,不知道的可以网上搜索下,主要有sqlite3.dll,sqlite3.h文...

2017-05-08 15:04:47 2090

原创 【工具类】C++封装线程类

/** \file * Thread.h,定义线程创建和停止接口,通过内联函数提供给其它模块使用** \author Fzuim** 版本历史* \par 2014-7-7*** */#pragma once#include &lt;process.h&gt;typedef unsigned int (WINAPI *THREAD_FUNC)(LPVOID lp...

2017-04-10 16:05:49 1465

原创 C++计算当前时间点间隔N天的时间(不使用CTimeSpan类)

涉及到有效期的设置,需要计算N天时间间隔的时间。其实这只是个工具代码,记录下与己方便,便是与人方便。。#define QUADPART 10000000i64std::string CalTime(int v_nTimeSpan){ char chTime[MAX_PATH] = {0}; SYSTEMTIME Curtime; SYSTEMTIME OutTime; GetL

2017-03-10 16:31:42 1823 1

原创 【设计模式】职责链模式&lt;初探>

职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。其思想很简单,考虑员工请假。公司的管理者一共有三级,总经理、总监、经理,如果一个员工要求请假,应该向主管的经理申请,如果请假天数在经理的职权内,那么经理可以直接批准,否则将申请上交给总监。总监的处理方式也一样,总经理可以处理所有请求。这就是典型...

2017-03-10 15:30:59 295

原创 【设计模式】观察者模式

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。它还有两个别名,依赖(Dependents),发布-订阅(Publish-Subsrcibe)。可以举个QQ订阅的例子,当QQ订阅号发表新文章的时候,即状态发生了改变,那些订阅的读者就会收到通知,然后进行相应的动作,比如去看文章,或者收藏起来。订阅号与读者之间存在种一对多的依赖关系。...

2017-03-10 13:57:54 414

原创 C++通过进程名获取进程句柄

记录下一段,比较常用的代码。#include <TlHelp32.h>//通过进程ID获取进程句柄HANDLE GetProcessHandle(int nID){ return OpenProcess(PROCESS_TERMINATE, FALSE, nID);}//通过进程名获取进程句柄HANDLE GetProcessHandle(LPCWSTR lpN...

2017-03-09 09:54:18 18371 1

翻译 FileZilla网络配置

FileZilla网络配置指南为FTP设置网络组件对于在LAN(局域网)外使用并不重要。 由于存在这么多防火墙和路由器,给出适合每个用户的详细的逐步指令是不切实际的。 重要的是了解FTP协议的基本知识,以便配置FileZilla和相关的路由器和/或防火墙。 本文档描述了FTP的历史以及协议的某些方面的工作原理。 仔细阅读它将为您节省大量的设置FTP的麻烦。1. 背景1.1 历史背景1.2 技术背

2017-02-24 17:31:13 13986

快速内存(内存复用)技术.zip

快速内存技术,又叫内存复用技术。适用于:频繁申请指定大小内存块场景,比如通信协议处理等。 文件里面包含.h文件和.cpp文件,无任何第三方依赖。代码目前不支持跨平台使用。

2020-01-02

libevent创建客户端&服务端demo

基于vs2008创建的libevent项目,只依赖于libevent库,如果下载编译不过。请按照sp1插件。(主要由于我自己编译环境带有sp1)

2019-03-20

C++ json解析库demo

Vs2008编译Poco Json库,并编写调用Demo,亲测可用!!!

2018-12-25

线程池实现源码

将POCO里面线程池实现,剥离出来。在VS2008亲测并编译通过,可用!

2018-08-24

VC版本2048小游戏

2048小游戏,采用vs2013开发。MFC项目工程。 无条件编译通过

2018-03-23

I/O完成端口例子

I/O完成端口,开发案例。这边居然要100字我的天!这边居然要100字我的天!这边居然要100字我的天!这边居然要100字我的天!这边居然要100字我的天!

2017-09-07

CppSQLite3下载

CppSQLite3包含的.h和.cpp文件还有,必要的sqlite3.h、sqlite3.dll、sqlite3.lib文件

2017-05-08

C++淘金者源码

C++淘金者源码

2017-03-17

C++ Doodle Jump源码

至少需要VS2008打开。 ●设计理念 这是一款益智类,考验反应力和决断力的游戏,游戏名叫Doodle Jump。玩家控制小人,小人是不断往上跳的,玩家需要控制它不让它掉落下去,并找板子让小人跳的更高。跳的越高得分越多,但越到后面板子越稀少,同时还有怪物会阻挡小人的前进,变的更难,但考验了玩家的反应能力。每次会记录玩家的最高分,玩家可以一次次挑战自己的成绩,获得更高分,有可玩性和挑战性。 ●原理 使用VC++进行可视化编程,调用了操作系统提供的API,VC6.0编译通过,在Windows系统上运行。 ●功能 可以通过菜单选择不同的模式进行游戏,游戏中会有特殊的板子和道具,可以帮助玩家得更多的分。 ●创新点 提供了特殊的模式,如无限火箭和无限竹蜻蜓道具,可以帮助那些玩的不好的玩家,得分较低的玩家体验迅速得分,超越更高分的快感。特殊模式的得分不覆盖普通模式的游戏记录,要想打破记录就要努力挑战,玩家可以突破自我,游戏可玩性高。

2017-03-06

TCPSocketSelect模型框架

一个稳定基于Socket多链接select模型框架,可在此基础上开发。接受数据包,被抛出到外层的回调函数处理,发送数据只需调用SendData接口,TCP存活时间,select机制都在TcpSocket类中实现。

2016-12-14

VA破解西红柿插件,适应于2012

VA破解西红柿插件,适应于2012,点击安装并在安装目录下替换里面的dll文件

2016-11-28

C++基础与提高

本书介绍了C++基本基础并且针对内容进行了深入的讲解,有助于新人对C++进一步深入的理解

2016-08-09

CnWizards Delphi7

CnWizards Delphi7 IDE工具包,增强delphi7功能

2016-07-25

Oracle教程

Oracle教程pdf版本

2016-06-14

STL-中文版

STL中文版,STL源码

2016-04-06

nt6 hdd installer v3.1.2

绿色安全无毒,win7镜像安装小工具,具体使用办法见百度

2016-04-06

MFC程序设计1

MFC程序设计1

2015-07-09

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除