- 博客(131)
- 资源 (7)
- 收藏
- 关注
原创 使用inet_ntoa的大坑
原因:inet_ntoa是非线程安全的,返回结果是函数内部的静态变量的值。所以不用在外面分配内存。解决办法:使用线程安全的inet_ntop替代。
2023-05-08 01:34:15
388
原创 fwknop端口敲门命令行
fwknop-client.exe -A tcp/22 -a 192.168.9.123 -D 192.168.9.188 --use-hmac -p 62201 --key-base64-rijndael ErXWXpDc4odR+pDfomtEpk1uJPO2Gl6t+1ku3xJTSTc= --key-base64-hmac ErXWXpDc4odR+pDfomtEpk1uJPO2Gl6t+1ku3xJTSTdPJy3hZM4MLBusOfP5etzxjzRUXYOu+mXF4swaYjuVpw==.
2022-04-12 11:43:38
378
原创 VARIANT 传递字符串数组
TCHAR* strArray[2] = {_T("Hello"),_T("World")}; int arraySize = sizeof(strArray) / sizeof(strArray[0]); //创建 VARIANT vtArray; VariantInit(&vtArray); vtArray.vt = VT_ARRAY | VT_VARIANT; vtArray.parray = SafeArrayCreateVecto...
2022-04-12 10:23:35
676
原创 TCP校验和
unsigned short checksum(unsigned short* buffer, int size){ unsigned int sum = 0; for (sum = 0; size > 0;) { sum += *buffer++; size -= 2; } sum = (sum >> 16) + (sum & 0xFFFF); sum += (sum >> 16); return (unsigned short)(~su.
2022-03-20 22:29:35
3009
原创 第二章:状态驱动智能体(一)
A finite state machine is a device, or a model of a device, which has a finite number of states it can be in at any given time and can operate on input to either make transitions from one state to...
2019-04-27 23:59:28
224
原创 通过PEB枚举Kernel32.dll基址
kd> !process 0 0**** NT ACTIVE PROCESS DUMP ****PROCESS fffffa801a89e060 SessionId: 1 Cid: 026c Peb: 7fffffd3000 ParentCid: 0200 DirBase: 66362000 ObjectTable: fffff8a00111c4d0 Ha...
2018-12-12 16:01:34
319
原创 Centos7 安装python3.6
yum install https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-15.ius.centos7.noarch.rpm yum list python* yum -y install python36u yum -y install python36u-devel ln -s /b...
2018-12-02 04:15:55
167
翻译 DPC
DeferredProcecure Call,延迟过程调用。是一种执行在任意线程上下文的DISPATCH_LEVEL层的可执行例程。硬件中断使用他们处理来自设备的中断。硬件驱动这样做是因为ISR通常运行在更高IRQLs(高于DISPATCH_LEVEL),如果他们花费太长时间,可能会降低系统的整体性能。因此,ISR典型的队列一个DPC并且马上返回,所以系统可以处理其它的中断请求。软驱动能使用DPC
2017-06-15 01:06:41
1073
原创 windbg双机远程调试
1. 拷贝要调试的可执行文件和对应的PDB符号到虚拟机。 2. 在虚拟机中启动服务端,有2种方式。`windbg.exe -server tcp:port=8888 C:\Test.exe` 这种方式可以调试main函数和程序的启动过程。 `windbg.exe -server tcp:port=8888 -p 10086` 这种方式相当于附加到PID为10086的进程上去。 3. 在
2017-06-01 03:52:45
920
原创 Windbg 内核态调试用户态程序
使用!process 0 0 进程名或ID得到EPROCESS使用.process /p + EPROCESS切换到应用程序的地址空间重新加载user PDB文件:.reload /f /user使用非侵入式的切换进程空间:.process /i /p EPROCESS下应用层断点,执行
2017-05-30 13:51:36
1578
原创 无法打开包括文件: corecrt.h: No such file or directory
INCLUDEPATH = "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt"LIBS += -L"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" -L"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.1...
2017-04-28 01:59:24
14293
1
原创 ProcessHacker实现原理(一)
枚举进程:调用NtQuerySystemInformation函数,第一个参数为SystemProcessInformation(枚举值 = 5),第二个参数返回类型SYSTEM_PROCESS_INFORMATION。原型如下:typedef struct _SYSTEM_PROCESS_INFORMATION{ ULONG NextEntryOffset; ULON
2017-01-09 23:47:04
4480
原创 VS2015 使用微软自带的单元测试框架测试本地C++代码的注意事项
如果测试类使用了预编译头文件的话,要在工程设置中添加stdafx.obj测试STL容器时,会弹出异常错误对话框.解决办法是忽略MSVCRT.lib 和UCRT.lib
2016-07-07 19:28:09
2695
原创 A2W和W2A宏可能引起栈内存溢出
这两个宏使用alloca在栈上分配内存,退出生命周期后才会释放所占用的内存.所以在一个函数的循环体中使用A2W等字符转换宏可能引起栈溢出。真想在循环中使用的话,这个宏用单独的大括号包含起来,类似这样void fn() { while(true) { {DoSomething(A2W("SomeString"));} // 这个大括号的作
2016-04-11 10:16:08
3219
1
原创 jad 反编译文件夹下的所有class
jad -o -r -8 -dDestDirectory -sjava C:/Users/SrcDirectory/**/*.class将 C:/Users/SrcDirectory目录下的所有class文件按目录结构反编译到DestDirectory下.-o 不提示,覆盖文件-r 生成原始目录结构-8 使用Uniocde编码
2015-03-07 23:22:26
3712
原创 ATL创建COM服务时必须注意的问题
1:用ATL向导创建COM组件时,必须指定ProgID2:ATL向导生成的RGS有BUG,必须手工添加一句 val AppID = s '%APPID%'像下面这样HKCR{ ProgIDMyInterface.1 = s 'CMyInterface Class' { CLSID = s '{5B91E508-D66E-4F27-A371-E0D5FC3AAA0B}' } P
2015-01-31 02:11:15
1667
转载 Visual Studio 2013 Find in Files 无法显示搜索结果
在注册表中查找:HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32发现了默认的值被设置成了NULL。问题就在这里,只需要填入C:\\Program Files (x86)\\Common Files\\microsoft shared\\MSEnv\\TextMg
2015-01-05 00:49:48
1534
原创 QMake 生成VS2013的工程文件
QT的bin目录加入到系统环境变量打开CMD,切换到源代码文件夹下,输入 qmake -project 生成.pro的QT工程文件再次输入 qmake -r -spec win32-msvc2013 -tp vc 即可生成2013的vcxproj工程文件...
2014-11-06 20:41:28
5465
1
转载 静态多态(模版模拟多态)的讨论
说到面向对象特性之一“多态”,以我的水平已经说不出太多新意了。相信很多程序员代码K多了,做梦都在“多态中”运行着。常规的多态是C++语义内置支持的一种特性,通过虚函数可以实现这个特性,为了后面以示区别,我们姑且把这种多态称为“动态多态”或”运行期多态“,而本文总主要想讨论下“静态多态”,也可以叫“编译期多态”,同时一起来看下,静态多态会给我们带来哪些惊喜之处,拭目以待吧。 首先看个正常
2014-08-18 12:30:45
904
转载 C++中explicit关键字的作用
explicit用来防止由构造函数定义的隐式转换。要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如:
2014-08-17 15:02:16
744
原创 HTTP POST数据时,一定要将数据转换为UTF8再调用HttpSendRequest!!!
崩溃了,MSDN上看到这句话。。。[code=html]Note The HttpSendRequestA function represents headers as ISO-8859-1 characters not ANSI characters. The HttpSendRequestW function represents headers as ISO-8859-1 charac
2014-08-15 03:46:09
9294
转载 ADO在C++中的使用
最近程序中用到读写数据库,看了些例子,查了番MSDN,下面把详细步骤写出来,以备忘,或与同行共勉。读写数据库的技术很多,现在多用ADO。ADO以COM方式提供,所以它的很多行为遵循COM规范。首先,要引入ADO的COM文件,它的位置一般在"C:/Program Files/Common Files/System/ado/msado15.dll"。1. 引入ADO打开预编译头文件St
2014-08-12 11:00:51
860
转载 Doxygen 使用笔记
最近用doxygen 生成文档,有些细小的问题还是很折腾了一阵。现将使用方法记录如下,便于日后查找。步骤1 :下载doxygen的binary 包doxygen下载地址http://www.10.xdowns.com/uploadFile/2007-7/doxygen.rar为了使doxygen能够将类图、协作图等 加入到文档中,还要下载安装graphviz for
2014-08-06 02:13:32
829
转载 对象的责任与职责
对象和数据的主要差别就是对象有行为,行为可以看成责任职责(responsibilities以下简称职责)的一种,理解职责是实现好的OO设计的关键。“Understanding responsibilities is key to good object-oriented design”—Martin Fowler 。对象设计:角色、责任和协作"(Object Design: Roles
2014-08-03 22:54:15
1129
转载 十个面向对象设计原则
追求高内聚highly cohesive 和松耦合 loosely couple 的解决方案是面向对象设计基本核心原则。这里列出OO设计中十大原则:1. DRY (不要重复你自己)这是指不写重复的代码,取而代之是使用抽象共性的东西。如果超过一次使用硬编码,那么就要考虑将其公开为final修饰的不变量;如果你在两个以上地方有相同的代码块,那么就要考虑使其成为一个单独的方法。SOLID设计原理
2014-08-03 22:47:01
1025
原创 HBITMAP另存为JPEG/PNG/TIFF/GIF/BMP
BOOL GetEncoderClsid(const WCHAR* format, CLSID* pClsid) { UINT num = 0; UINT size = 0; GetImageEncodersSize(&num, &size); if(size == 0) r...
2014-07-28 18:05:13
3984
原创 《设计模式解析第二版》读书笔记:一
对象是一个有责任的实体,应该对自己负责,而且清楚地定义责任,而不是一些数据和方法的简单堆积。要学会用对象的职责而不是其结构来考虑问题。这也是领域驱动开发的核心。对象之间的三种关系:泛化、依赖、关联(聚合、组合)泛化表现子类和父类之间是is a的关系。依赖表现use a的关系,通常表现为一个对象是另一个对象的某个方法的参数或者局部变量。关联表现has a的关系,一个对象是零一
2014-07-13 15:35:58
1096
原创 STL算法之remove要注意的地方。以及迭代时如何正确的删除迭代器
std::array intArray = {1, 2, 3, 4, 5, 6}; std::vector intVector; for(auto& i : intArray) intVector.push_back(i); cout << "intVector Size=" << intVector.size() << endl; intVe
2014-07-02 16:23:34
1965
原创 赋值操作符
默认的赋值操作符用于处理同类对象之间的赋值,不要与复制构造函数混淆.如果是创建新的对象,则调用复制(拷贝)构造函数,如果是修改已有对象的值,则调用赋值操作符MyClass aClass;MyClass bClass=aClass; // 调用复制构造函数MyClass cClass;cClass=aClass; // 调用赋值操作符一般来说,如果需要显式定义复制构造函数,则基于
2014-06-24 23:27:37
934
原创 复制(拷贝)构造函数
复制(拷贝)构造函数接受其所属类的对象作为参数,原型如下 MyClass::MyClass(const MyClass& aClass);在下述情况下,将使用复制(拷贝)构造函数1 将新的对象初始化为一个同类对象. MyClass aClass;MyClass bClass(aClass);2 按值将对象传递给函数. void MyFunction(MyClass aClass);3 函数
2014-06-24 23:19:52
835
原创 C++默认构造函数
默认构造函数要么没有参数,要么所有参数都有默认值,如果没有定义任何构造函数,编译器将自动生成一个不带任何参数的构造函数,让程序猿能创建对象.自动生成的默认构造函数的另一项功能是:调用基类的默认构造函数以及调用本身是对象的成员所属类的默认构造函数.如果派生类构造函数的成员初始化列表没有显示的调用基类构造函数,则编译器将使用基类的默认构造函数来构造派生类对象的基类部分.在这种情况下,如果基
2014-06-24 23:10:53
899
原创 C++转换函数
在C++中,可以利用构造函数将一个int型变量转换为一个类对象,如CMyClass aClass(5);有人便会问,可以进行相反的转换吗?例如将一个类对象转换为一个int值, int nTemp=aClass;C++可以实现这一需求.但不是构造函数.构造函数只能用于某种类型到类类型的转换.要进行相反的转换,则需要使用重载操作符函数--转换函数来实现.转换函数是用户定义的强制类型
2014-06-24 22:54:20
1581
原创 内存泄露检测类
#pragma once#define _CRTDBG_MAP_ALLOC#include #include #ifdef _DEBUG#ifndef DBG_NEW#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )#define new DBG_NEW#endif#endifclass CMemoryL
2014-06-24 21:30:37
683
原创 GUI程序控制台输出调试信息
#pragma once#include #include #include class CConsoleDebug{public: CConsoleDebug(SHORT nWidth = 30, SHORT nHeight = 3000): m_pFile(NULL) {#ifdef _DEBUG AllocConsole();
2014-06-24 21:29:08
1817
原创 ReactOS编译成VS工程
首先从https://www.reactos.org/wiki/ReactOS_Build_Environment下载Reactos BE 工具,安装,桌面会自动生成一个
2014-04-25 16:34:03
4025
1
转载 I/O Completion Ports
I/O Completion Ports点击打开链接I/O completion ports provide an efficient threading model for processing multiple asynchronous I/O requests on a multiprocessor system. When a process creates an I/O
2014-04-20 17:22:51
910
转载 Synchronous and Asynchronous I/O
Synchronous and Asynchronous I/Ohttp://msdn.microsoft.com/en-us/library/windows/desktop/aa365683%28v=vs.85%29.aspxThere are two types of input/output (I/O) synchronization: synchronous I/O and
2014-04-20 17:20:51
1142
原创 Synchronization and Overlapped Input and Output
OVERLAPPED/*It is safer to use a separate event object for each overlapped operation,rather than specify no event object or reuse the same event object for multiple operations.If no event object i
2014-04-20 17:18:06
815
原创 一场争论引发的思考
首先说一些软件工程方面的理论和指导性的原则,和从我个人职业生涯对软件工程和设计模式的一些实践性的理解.虽然有些是理论性的东西,但是具有指导意义. 一: 架构的定义IEEE标准将架构定义为”系统的基本组织结构,包括它的组件,组件之间的相互关系,环境,以及设计和演进的指导原则” 红色字体是我个人认为的3个关键字,每一个关键字是一层意思,第一层就是系统是由逻辑上的组件和模块组成的,是
2014-04-12 04:36:07
1076
Internet Download Manager 6.28
2017-03-25
sourceinsight4
2017-02-15
DDAppWiz.awx
2008-04-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人