摘要:
经常我看到项目中有人使用了对称加密算法,用来加密客户或项目传输中的部分数据。但我注意到开发 人员由于不熟悉原理,或者简单复制网上的代码示例,有导致代码存在安全风险。 阅读全文
摘要:
API HOOK有两种做法,一种是SetWindowHookEx,简单易用,但如果做其它的HOOK,如HOOK OpenProcess,就需要修改内存地址了,内存地址可以通过WriteProcessMemory来修改,先将调用函数的地址改成自己的(jmp到自己的函数),然后需要时,再改回来。#pragma once#ifdef _M_IX86template class Hooker{protected: static DWORD HookFunction(LPCWSTR lpModule, LPCSTR lpFuncName, PROC lpFunction) { ... 阅读全文
摘要:
在网上找了很多文章,但基本都是说,C++发送HTTP请求可以,但谈到具体方法,就众说众说纷纭了。具体说来,有IXMLHTTPRequest2、curl、POCO,当然还有用socket、Windows API的方法。这些方法中,除了socket外,我都尝试过。首先我用的是curl,需要先编译,编译完成后,就可以用curl_xxx的函数来发送和接收请求了,但是马上我就发现了一个问题,必须使用动态链接库才能运行,即使我编译好了静态库,还指定了/MT(而不是/MD),也不行。非常的尴尬,本来应该是一个跨平台的完美解决方案,但就因为这样一个愚蠢的原因,就没探索了。然后我尝试使用COM组件,需要用到&l 阅读全文
摘要:
使用Windows Server 2012安装Visual Studio 2012后,出现了一个问题,在开启Visual Studio时,会显示『本产品使用权属于Windows 用户』,而不是我的用户名。经过探索,在国外某哥们网站找到了解决方案,原文如下:http://blog.brouwer.pro/2012/09/how-to-change-licensed-to-name-for-visual-studio-2012/过程如下:1、打开注册表编辑器(开始->运行->regedit,确定)2、定位到如下位置:HKEY_CURRENT_USER\Software\Microsof 阅读全文
摘要:
由于受到了DreamSpark学生认证,我用的是Windows Server 2012的正版系统,但有一个问题就是,这个系统不能玩扫雷。经过探索,在MSDN论坛上找到解决办法,原文如下:http://social.technet.microsoft.com/Forums/zh-CN/winserver8gen/thread/b64cdc31-7e2d-40b8-a45d-45a8203c5fde方法是,在Windows 8下找到System32和SysWOW64下的所有xaudio*.dll和xinput*.dll,然后复制到Windows Server 2012对应的文件夹下,过程很简单,只 阅读全文
摘要:
从大学开始,就一直有一个经常探索的问题,就是如何突然上网客户端的各种限制,实现和室友共享上网。共享上网是ISP们非常不乐于见到的,所以就涉及很多限制与反限制的问题。经过使用刚刚开始时直接使用路由器就能上网的时代,到『改成相同IP、相同MAC』的『方法』,到代理服务器、到sygate、再到NAT,再到现在常用的开WLAN和使用虚拟机模拟NAT。经历了很多代的探索,总结出了一种基本可行的共享上网方法。本文将针对上网客户端的限制,逐个探索解决办法,然后引出我现在使用的共享上网的解决方案。在我对上网有印象时,就感觉到网络应该是免费的,想上网,一切所需做的事情,就是找到一根网线,然后插入电脑。后来发现. 阅读全文
摘要:
最近学习C++11,看到了强大的shared_ptr,心想,为何有了shared_ptr,还需要weak_ptr,weak_ptr是做什么的呢?经过探索,看到原因是shared_ptr内部也是基于引用计数的,引用计数的问题在于循环引用时,由于无法将计数值降为0而可能无法析构,示例如下:View Code #include "stdafx.h"using namespace std;struct Linker{ shared_ptr<Linker> link;};void DoWork(){ shared_ptr<Linker> l1(new Link 阅读全文
摘要:
题目来自《算法》第四版习题1.3.9,原题如下:Write a program that takes from standard input an expression without left parentheses and prints the equivalent infix expression with the parentheses inserted. For example, given the input:1 + 2 ) * 3 - 4 ) * 5 - 6 ) ) )your program should print( ( 1 + 2 ) * ( ( 3 - 4 ) * ( 5 阅读全文
摘要:
DWrite可以高速地呈现文字:View Code #include "stdafx.h"class unicode_file{ PCWSTR m_view; UINT32 m_size;public: unicode_file(); ~unicode_file(); PCWSTR text() const; UINT32 size() const;};struct SampleWindow : DesktopWindow<SampleWindow>{ ComPtr<ID2D1SolidColorBrush> m_brush; ComPtr... 阅读全文
摘要:
可以通过矩阵变换来给几何图形作平移(Translation)、旋转(Rotate)、扭曲(Skew)和大小变换(Scale):View Code #include "stdafx.h"struct SampleWindow : DesktopWindow<SampleWindow>{ ComPtr<ID2D1RectangleGeometry> m_geometry; ComPtr<ID2D1SolidColorBrush> m_brush; void CreateDeviceIndependentResources() { HR(m_f 阅读全文