- 博客(106)
- 资源 (4)
- 收藏
- 关注
转载 An Improved Reflective DLL Injection Technique
原文链接:https://disman.tl/2015/01/30/an-improved-reflective-dll-injection-technique.htmlIntroductionI really enjoy reading technical analyses of sophisticated malware attacks. It’s kind of a
2016-12-09 11:23:38 890
转载 What is the HINSTANCE passed to CreateWindow and RegisterClass used for?
原文链接:https://blogs.msdn.microsoft.com/oldnewthing/20050418-59/?p=35873One of the less-understood parameters to the CreateWindow function and the RegisterClass function is the HINSTANCE
2016-04-17 09:42:39 745
转载 高性能服务器本质论
作者:CppExplore http://www.cppblog.com/CppExplore/和http://blog.csdn.net/cppexplore同步发布一 服务器分类从软件性能角度,高性能服务器分:cpu密集型服务器/IO密集型服务器(1)CPU密集型:该类服务器没有对io的访问/没有同步点,性能瓶颈在于对cpu的充分利用。典型的如转发服务器/代理服务器/协议转换
2015-05-22 09:06:47 689
原创 本来我觉得半天可以解决的编译错误,现在看来一天都搞不定了
1>------ Build started: Project: Protocol, Configuration: Debugmt Win32 ------1> client.cpp1>d:\xuser\sources\boost_lib\boost\asio\detail\handler_invoke_helpers.hpp(37): error C2666: 'asio_handle
2015-05-20 12:27:53 1117 3
翻译 调试64bit程序所面临的挑战-part1
调试64bit程序所面临的挑战如果到目前为止,你还没有调试过优化后的64bit代码,为了不落后于时代,那就赶紧去尝试吧。由于64bit下fastcall调用方式和大量通用寄存器的存在,找出任意栈帧中局部变量的值将会变得非常棘手。本文,我将详述一些我非常喜欢的调试64bit代码的技巧。但在此之前,我们先对64bit下函数的调用方式做一个了解。X64调用约定如果你熟悉32位平台下的fa
2015-01-31 19:57:28 961 1
原创 单实例模式的实现
template class ISingleton{public: static T& Instance() { static void* volatile pInstance = NULL; static void* volatile creating = NULL; if(pInstance) return pInstance; if(InterlockedCo
2014-04-20 19:36:26 831
转载 加班与效率
微博上看到了这么一个贴子,就像以前在《腾讯,竞争力 和 用户体验》中批评过腾讯说自己的核心竞争力是员工加班一样,我顺着Winter的回复也批评了一下这个微博——“靠加班超越对手?!劳动密集型么?我要是对手的话,我就来趁机挖人了,直接摁死你……//@寒冬winter: 当一个管理者的智慧无法衡量一支团队的产出的时候,他就会把“工时”当做最后的救命稻草,死死抱住——这是他唯一听得懂的东
2014-03-03 09:42:31 803
原创 控制台彩色输出
有时候我们希望向控制台输出彩色的或是带有背景的字来突出内容,在windows可以通过下面的代码来实现:#pragma once#include #define STYLE_WHITE FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED#define STYLE_GREEN FOREGROUND_GREEN|FOREGROUND_INTENSI
2014-02-11 19:01:22 1805
原创 异步之生产者消费者模型--同步缓冲区的实现
适用于多个生产线程和多个消费线程之间的协作,生产者将信息放入同步缓冲区,消费者从该缓冲区中读取进行操作,可以指定特殊的“产品”来指示工作线程退出。#ifndef __PRODUCER_CONSUMER_HPP_#define __PRODUCER_CONSUMER_HPP_#include class NonCopyable{protected: NonCopyable()
2013-11-10 12:12:16 1496
原创 统计常用字的一种方法
最近工作中需要一个常用字集合,网上找了些,都不太满意,所以打算自己做一个。统计常用字最难的地方就是数据收集这块,想到后台一直在网上爬东西,觉得可以利用一下,这样最难的问题就解决了。废话少说,整体流程如下:1.使用爬虫从网上抓取海量网页数据,采用utf-16格式保存成文件。2.统计文件中每个字的次数,排序,生成一个log文件,该文件输出了每个字及其出现的次数,另一个文件就是常用字库啦。
2013-11-03 18:46:01 1724
原创 想知道vector<bool>有多坑人吗
跑一下下面的程序,看看vector的表现吧void TestVectorBool(){ vector vecbool; vector vecchar; const size_t vecsize = 0x1000000; for(size_t i = 0; i < vecsize; i++){ vecbool.push_back(true); vecchar.push_bac
2013-10-31 22:29:54 3403
转载 数据上报分析
最近做的一个项目需要进行数据上报,收集信息主要有如下几个用途:1.反馈目标点出现的次数,用于评估严重程度。2.搜集位置目标信息,用于迭代更新已有的机制,增强效果。由于刚开始做,比较盲目,导致数据报上来一团糟,处理起来非常麻烦,这两天想了下,做了个总结:1.要有明确的目标:信息用途,后续如何统计要非常清楚,否则后台无法分析。2.要有精确的文档描述,并要按文档的来做。3.如果新
2013-10-31 19:37:44 830
原创 64bit下关闭启用文件重定向功能,支持多线程,简单易用
BOOL DisableWow64FsRedirection(BOOL disable){ typedef BOOL (__stdcall *FuncIsWow64Process)(HANDLE, PBOOL); typedef BOOL (__stdcall *FuncWow64DisableWow64FsRedirection)(PVOID*); typedef BOOL (__stdc
2013-10-24 09:55:33 1465
原创 一段简单的内存检测代码
需求检测代码中的内存泄露情况,辅助开发人员解决bug。目标1. 使用尽量简单。尽量不要修改已有代码。2. 对于malloc和new分配出现的内存泄露能够检测出来。3. 友好的提示,报告出错的未知,定位到文件对应的行。4. 对于泄露的内存,能够dump出部分内容。代码使用方法:将如下两个文件放入你的工程,如果
2013-10-19 19:37:46 1664 3
原创 字符雨
/******************************字符雨,说实话,没数字雨好看,改自旓旓发的黑客帝国--数字雨!!编译方法:cl.exe NumberRain.cpp******************************/#define UNICODE#include #include #include #include #pragma comment(lib,
2013-09-13 21:09:42 2537
转载 code fragment-Windows截图
来源:http://bbs.pediy.com/showthread.php?p=1212276#post1212276using namespace std;int _tmain(int argc, _TCHAR* argv[]){RECT rc; HWND hwnd = FindWindow(TEXT("Notepad"), NULL); //注意窗口不能最小化
2013-08-20 08:44:06 863
翻译 线程局部存储,Part 6:Windows Server 2003中隐式TLS支持方法设计中的问题
原文网址:http://www.nynaeve.net/?p=187上周,我描述了在WindowsServer 2003中加载器如何处理隐式TLS支持。尽管TLS支持对于最初的要求支持的挺好,但是仍然存在一些让人不悦的地方。如果你一直看到这里,你可能已经注意到隐式TLS支持中设计方面的问题。这些缺陷最终鞭策微软在vista版本中对隐私TLS进行了重要的修正。WindowsServer
2013-01-05 18:27:49 1092
翻译 线程局部存储,Part 5:加载器对__declspec(thread)变量的支持(进程初始化阶段)
原文网址:http://www.nynaeve.net/?p=186上次,我描述了编译器和链接器为访问__declspec(thread)扩展类变量所使用的生成代码的机制。尽管此时它们已经为隐式TLS布置了舞台,但为了使整体能够工作,仍然需要加载器这个组件来提供必需的运行时支持。具体的,加载器将负责为每个模块分配TLS索引值,为每个线程的TEB中的ThreadLocalStorageP
2013-01-05 11:50:21 1632
翻译 线程局部存储,Part 4:访问__declspec(thread)变量
原文网址:http://www.nynaeve.net/?p=185昨天,我大致说了下编译器和链接器如何合作来支持TLS,但是并没有讲当访问__declspec(thread)变量时具体底层是个什么样子,或者说是怎么来做到的。在解释如何访问__declspec(thread)变量的内部工作原理之前,有必要了解下tlssup.c中的几个特殊变量。这些变量被_tls_used引用来
2013-01-04 09:52:22 3218
翻译 线程局部存储,Part 3:编译器和链接器对隐式TLS的支持
原文网址:http://www.nynaeve.net/?p=183线程局部存储,Part 3:编译器和链接器对隐式TLS的支持上次,我们探讨了显式TLS操作所采用的机制(包括TlsGetValue、TlsSetValue和其它相关例程)。尽管显式TLS被大量使用,但是TLS机制的更有意思的部分却是加载器对隐式TLS的支持或是编译器中的__declspec(thread)变量。虽然两种
2013-01-03 16:21:31 1669
翻译 线程局部存储,Part 2:显式TLS
原文网址:http://www.nynaeve.net/?p=181线程局部存储,Part 2:显式TLS前一篇,我概述了windows中TLS的一些总体设计原则。大家可以从MSDN中得到关于TLS的高层接口和设计方法,但是有意思的却是其底层的实现。从实现来看,显式TLS API是目前两类实现TLS方法中较简单的一种,因此这种方法很少涉及内部实现的可变部分。正如我上次提到的,显式TLS
2013-01-03 15:49:40 1225
翻译 线程局部存储,Part 1:概述
原文网址:http://www.nynaeve.net/?p=180线程局部存储,Part 1:概述和其它主流多线程操作系统一样,Windows为大家提供一个机制,该机制允许程序员实现基于线程的局部状态存储。这种能力通常称为线程局部存储(Thread Local Storage,TLS),这对于那些需要保存线程相关信息但需要全局可见的应用场景非常有用。尽管TLS的介绍有很好的文档可参考
2013-01-03 15:47:51 1123
原创 如何求字符串的全排列
一家搜索公司的面试题,当时有这个概念,但是没写出代码,思路不清晰,回来想了下,很简单。void loop(char* str, int real_size){ int size = strlen(str); if(size == 0) printf("%s\n", str - real_size); for(int i = 0; i < size; i++){ swap(s
2012-10-30 09:39:52 1310
转载 大学毕业后拉开差距的真正原因
大学毕业后拉开差距的真正原因大家千万不要错过这篇文章,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享,也希望对有缘人有所帮助!看完之后有种“相见恨晚”的感觉,特别激动,希望大家好好的珍藏这篇文章,相信多年以后,再来看这篇文章,一定有不同的感觉。马云曾经在给新员工的信中写到“阿里不会承诺你发财、升官,刚来公司不到一年的人,也千
2012-10-20 19:57:25 1299
原创 google面试题--天平称球
问题如下:There are 8 balls. Seven of them weigh the same, but one is heavier. Using a balance scale, how do you find the heavier ball with just two weighings?意思是说,有8个看起来外貌一样的球,其中7个球重量相同,一个球略重,如何使用一个天平
2012-08-25 15:16:34 1743 1
原创 向VS的Output窗口输出调试信息
要求:Debug版输出,Release版不输出。兼容Unicode版本。/*1. 需要头文件windows.h和tchar.h*/#ifdef _DEBUGvoid XdPrint(_TCHAR* format, ...){ va_list args; va_start(args, format); _TCHAR buf[256]; _vstprintf(buf,
2012-08-21 16:26:58 9729
原创 linux-iptables设置NAT
实验环境如下:Fedora 17,双网卡,其中eth0用于外网,eth1用于内网。1.配置网卡信息。网卡信息包括:IP地址(IPADDR0),网络地址掩码(NETMASK),网关(GATEWAY0)等。这些信息均记录在文件/etc/sysconfig/netwrok-scripts/ifcfg-eth*,*表示从0起的数字,依次对应每一块网卡。例如2块网卡,则存在ifcfg-eth0/
2012-08-08 11:17:22 4582
原创 插入、选择排序
void chose_sort(int *a, int length){ for(int i = 0; i < length - 1; i++){ int min = i; for(int j = i + 1; j < length; j++){ if(a[j] < a[min]) min = j; } int tmp = a[i]; a[i] = a[min
2012-08-06 10:42:47 514
原创 winpcap--枚举网络接口
#include /*枚举网络接口1.枚举2.读取3.释放内存*/int main(){ pcap_if_t *alldevs; int count = 0; char errbuf[PCAP_ERRBUF_SIZE]; if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1){
2012-08-04 10:08:54 970
原创 快速排序
void qs(int *a, int s, int e){ int i, j, pivot; if(s >= e) return; i = s; j = e; pivot = a[i]; while(i != j){ while(i != j && a[j] >= pivot) j--; if(i == j) break; a[i] = a[j]; i++
2012-08-03 09:02:50 520
原创 SendARP结合线程池扫描局域网计算机
由于SendARP本身是不能异步调用的,因此这里采用结合线程池的方法来加快扫描速度。// Scaner.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #pragma comment(lib, "iph
2012-07-16 03:48:47 1378
原创 使用SendARP扫描局域网的计算机
先获得本机IP地址和掩码,得到地址上下限,然后使用SendARP获得MAC地址。缺点是SendARP有超时,导至扫描速度很慢。// Scaner.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #pragma comm
2012-07-15 19:12:28 5547 1
原创 堆排序
对于堆排序,有以下几点需要注意:堆化操作。将数组堆化有两种方法:一种是依次插入数组中的元素,使其堆化,另一种是自底向上。由于我们知道全部的元素,此时选择自底向上的方法,其时间复杂度为O(n),插入法的时间复杂度为O(nlog(n))。在堆化操作当中,核心部分是3个结点比大小,不断下塑,从而找到合适的位置存放违规的元素。将堆有序化,方法是不断执行出堆操作。附件:void he
2012-07-11 11:36:53 845
原创 POJ1009
#include #include struct RLE{ int count; int value;};struct Pos{ RLE *pixel; int num;};void PrevPoint(Pos& pos){ if(pos.num == 0){ pos.pixel--; pos.num = pos.pixel->count - 1; }els
2012-07-09 22:06:05 1860
原创 POJ1003
#include using namespace std;int main(int argc, char** argv){ double len; unsigned int card_num; do{ cin>>len; if(len - 0.001 < 0) break; double cur_len = 1.0/2; unsigned int count =
2012-06-25 22:35:26 946
原创 POJ1002
#include #include #include #include #include #include using namespace std;bool Comp(map::iterator op1, map::iterator op2){ return op1->first first;}int main(int argc, char** argv){ map c
2012-06-25 22:10:55 537
原创 MFC消息映射及路由
介绍的顺序按照从浅入深来认识1在mfc中消息路由机制就是指将发送给窗口的消息发给该窗口对应的窗口类所提供的相应的成员函数。这句话的关键字是 窗口对应的窗口类 窗口类对应的成员函数。首先说 窗口对应的窗口类,mfc使用全局函数AfxWndProc取代所有窗口的窗口过程函数,在这个函数里面通过类似字典的形式采用窗口句柄作为索引查找到对应的窗口类对象。 // all oth
2012-06-22 22:46:09 880
原创 Loader----2
Loader----1中将内存分配放在了函数里面,这样大大降低了函数的可复用性,想想如果我们想在驱动层使用了,所以做如下修改,内存布局函数仅作功能性操作,和系统相关的内存分配放到函数外面吧。/** 将文件内容按虚拟地址信息映射到地址空间*/BOOL LdrLayoutPe(char*pImage, DWORD FileSize, char* pRealImageBase, DWO
2012-05-16 14:02:34 531
原创 Loader----1
做完文件校验后将映像映射到内存当中。/** 将文件内容按虚拟地址信息映射到地址空间,返回模块的基地址*/char* LdrLayoutPe(char*pImage, DWORD FileSize){ PIMAGE_FILE_HEADER pFileHeader; PIMAGE_SECTION_HEADER pSectionHeader; char* pOptionalHe
2012-05-16 11:21:30 526
文件夹比较软件--可用于比较文件夹在不同时间下作的改变
2011-10-06
xpIIS安装文件集合
2009-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人