随笔分类 - C/C++
摘要:目录索引: 一、LibCurl基本编程框架 二、一些基本的函数 三、curl_easy_setopt函数部分选项介绍 四、curl_easy_perform 函数说明(error 状态码) 五、libcurl使用的HTTP消息头六、获取http应答头信息 七、多线程问题 八、什么时候libcurl无
阅读全文
摘要:写了很多关于IOCP和OLEDB的文章,今天换个话题,不然很多网友都以为俺就是一服务端程序,其实我真正的身份是——程序员,什么都写的程序员,呵呵呵。这回讨论的话题主要集中到游戏引擎上来,目前国内游戏行业比较火爆,但是基础性的研究、技术资料都比较少,本人撰写这个系列,权当为产业尽绵薄之力。或者当做引玉...
阅读全文
摘要:作者:风影残烛在还原代码的过程中。目前程序是采用VS2005(以上版本)写的。我使用的是vc6.0,结果。在运算的时候。发现编译器对// FpuTlxTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include void KeyFun(char* pComputerName){ char szKey[16] = {0}; int iNum_ebx = 0; int iNum_ecx = 0; int iNum_var30 = 0; int dwCptNameLen = strlen(pCom
阅读全文
摘要:今天在分析一个样本的时候,发现一段代码。1 // .text:100012DF sub esi, 0B7h // 1832 // .text:100012E5 neg esi3 // .text:100012E7 sbb esi, esi4 // .text:100012EA inc esineg指令影响的标志如果源操作数是 0,则 CF 标志清除为 0;否则设置为 1。OF、SF、ZF、AF 及 CF 标志根据结果设置。neg求补指...
阅读全文
摘要:首先列出需要的函数1.OpenProcessToken2.AdjustTokenPrivileges3.LookupPrivilegeValue--------------------------------------------------------------首先需要获取进程的令牌句柄OpenProcessToken的原型.BOOL WINAPI OpenProcessToken( __in HANDLE ProcessHandle, __in DWORD DesiredAccess, __out PHANDLE Toke...
阅读全文
摘要:1、获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp(); 2、获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFrame* pMainFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd); 或者 CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd(); 3、获取菜单指针 CMenu* pMenu = AfxGetMainWnd()->GetMenu(); 4、获取工具栏、状态栏指针 主框架中可以直接...
阅读全文
摘要:一、ListView控件属于通用控件CONTROL中的一种,在SDK编程方式时要使用通用控件必须包含comctl32.dll,所以代码中要有头文件: commctrl.h 导入库:comctl32.lib在使用通用控件之前应该先调用InitCommonControls();初始化它以ListView控件为例:InitCommonControls(); //子窗口形式使用LISTVIEWCreateWindowEx(0, //扩展风格 WC_LISTVIEW, //这是系统定义的宏,WC_LISTVIEW对应 "SysListView32" "123",
阅读全文
摘要:在网上搜索了一堆c++如何清除缓存的,蛋碎一地。现在分享下。在写C语言程序的时候,大家都习惯fflush(stdin);来清空缓存区,可是C++怎么清除呢? int nBuffLen = cin.rdbuf()->in_avail(); cin.ignore(nBuffLen, '\n');具体为什么这么多,大家自己跟进去看看就清楚了!
阅读全文
摘要:基类如下:class base {public: base(); virtual ~base(); void Add(const char* pId, const char* pName); const char* GetId() const; // 加inline const char* GetName() const; // 加inlineprivate: char m_szID[32]; char m_szName[32];};派生类如下:#include "base.h"class course :public base{public: course...
阅读全文
摘要:// 声明:以下代码均在Win32_Sp3 VC6.0_DEBUG版中调试通过..在逆向还原代码的时候,必须得掌握了菱形继承,多继承,虚继承虚函数的内存虚表结构。所以,这篇文章献给正在学习C++的朋友们。当然,由于水平有限,必定错漏百出!所以,希望耽误您的时间,恳求您的指点。在这里万分感谢!首先,我们定义如下类:class A{public: A() { m_nData = 1; } virtual void fun() { } int m_nData;};class B{public: B() { m_nData = 2; } virtual void f...
阅读全文
摘要:// CMyString.h: interface for the CMyString class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_CMYSTRING_H__FECC10BF_AB85_41AB_B3F3_7A16FA65D4AF__INCLUDED_)#define AFX_CMYSTRING_H__FECC10BF_AB85_41AB_B3F3_7A16FA65D4AF__INCLUDED_#if _MSC_VER > 1000#pragm
阅读全文
摘要:C++的多态性体现在两个方面,一个函数重载,一个虚函数,重载的多态性是在编译器编译期的时候早已经决定了。编译器实现函数重载的时候,也就是进行了名称粉碎。而虚函数则是运行期的多态。多态有什么用? 可能你会有此疑惑。最普遍的说法是“提高代码的重用性”。如果大家对逆向感兴趣的话,虚函数的内存结构那是必须得掌握的,下面我们来慢慢剖析类中虚函数的内存结构。class Ca{public: Ca() { } virtual ~Ca() { } virtual void Fun1() { } virtual void Fun2() { } void Fun3() { }};cl...
阅读全文
摘要:在Visual C++ 中,可以在监视窗口添加 $err,hr 一行来实时显示错误。调试过程中,该项相当于在每次调用API函数之后调用GetLastError函数。其值由两部分组成,一个是错误代码(十六进制),另一个是错误代码所对应的文本提示。该方法支持多语言。[1]
阅读全文
摘要:本篇文章主要讲解了C++中构造函数、析构函数、拷贝构造函数的容易产生理解上错误的地方。大家也可以作为检验对知识点掌握的情况!首先代码如下:class CStudent {public: CStudent() { } CStudent(CStudent& stu) { } ~CStudent() { }};int main(){ CStudent stu1; CStudent stu2(stu1); // 这行代码如何解释? CStudent stu3(); return 0; } 以上注释的那行代码该怎么解释?实例化了一个对象并显示的调用了默认的构造函数?如果真这...
阅读全文
摘要:相信大家都使用过C语言的库函数:printf("%d%d", 1, 2)的吧,使用确实很方便功能也很强大。但是为什么它可以接受多个参数呢?现在我们来解析一下多参的实现原理,网上也找了一些文章。发现解析得都不全面。并且有BUG。先看如下源码:#include <windows.h>#include <stdio.h>#include <winnt.h>void MySprintf(char* szBuffer, const char* szFormat, ...){ va_list pa; // 定义一个指针 va_start(pa, sz
阅读全文

浙公网安备 33010602011771号