自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 资源 (4)
  • 收藏
  • 关注

转载 windows PE文件结构及其加载机制

1. 概述PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。它是1993年Windows NT系统引入的新可执行文件格式,到现在已经经过20多年了。虽然使用PE作为可执行文件格式的Windows操作系统已经更换了很多版本,

2017-11-01 19:33:50 2205

转载 SharedUserData

SharedUserData 是操作系统为每个进程提供的个共享数据结构,里面存放有很多重要的系统信息,如TickCount、系统时间、SystemRoot等。。。其在DDK定义为:代码:#define KI_USER_SHARED_DATA        0xffdf0000#define SharedUserData  ((KUSER_SHARED_DATA * cons

2016-08-16 00:27:03 3746

转载 虚函数HOOK

看来一些资料,觉得这篇写的比较好,做此笔记。栗子如下:#pragma once#include using namespace std;class A{public: int iVal1; int iVal2; virtual void print1() { cout<<"iVal1(A) = "<<iVal1<<endl; } virtual void

2016-08-16 00:19:24 1839

转载 Inline Hook

一、 什么是 inline hookinline hook 就是在运行的流程中插入跳转指令(call/jmp)来抢夺程序运行流程的一个方法。好了那么问题就来了:1. 插入怎么样的跳转指令    一般为 相对JMP(0xE9) + 4字节地址,方便计算         公式:源地址 + 相对偏移 = 目的地址        公式:目的地址 - 源地址 = 相对偏移2.

2016-08-02 15:08:26 1200 1

转载 应用层HOOK技术的一些简单总结

在Window平台上开发任何稍微底层一点的东西,基本上都是Hook满天飞, 普通应用程序如此,安全软件更是如此, 这里简单记录一些常用的Hook技术。SetWindowsHookEx基本上做Windows开发都知道这个API, 它给我们提供了一个拦截系统事件和消息的机会, 并且它可以将我们的DLL注入到其他进程。但是随着64位时代的到来和Vista之后的UAC机制开启,这个AP

2016-07-31 23:17:42 3058

转载 PE文件结构详解-PE导入表

PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPORT,即导入表。也许大家注意到过,在IMAGE_DATA_DIRECTORY中,有几项的名字都和导入表有关系,其中包括:IMAGE_DIRECTORY_ENTRY_IMPORT,IMAGE_D

2016-07-31 23:16:45 1350

转载 IAT HOOK

iat hook,也就是修改导入表实现函数调用的hook(运行时hook本进程)。注:iat(import address table,导入函数地址表,在这里说明一下:导入表是image import table,导入函数地址表是 image import address table,这是两个不同的pe文件中的表) 要实现iat hook,首先得清楚iat和导入表的结构。pe文件中,不管是在硬

2016-07-31 22:41:24 1943 1

转载 objective-C中的Class(类类型),Selector(选择器SEL),函数指针(IMP)

今天在园子里看到了一篇牛文“Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针 ”,讲得十分精彩,忍不住把它的代码加上注释整理于此,以便日后查看。个人体会:obj-C中的“Class类型变量”比c#中的Object基类还要灵活,可以用它生成任何类型的实例(但是它又不是NSObject)。而选择器SEL

2016-06-27 22:55:25 1054

原创 OC定义类的和方法

// Person.h// 这里声明的方法都是public的@interface Person : NSObject{ // 默认为protected int n1; @protected int n2; @private int n3;@public int n4;}// @propery:声明setter/gette

2016-06-27 22:45:48 1317

转载 iOS开发之xib技巧介绍

iOS开发的这些年里,有的人用代码创建UI,有的人用xib创建UI。到底是用xib还是代码来创建UI,这个问题以前也有过很多争论,我只想说一点,各有各的优点。如果能够将两者融合贯通,那将是更有优势。笔者开发过程中,UI能用xib就尽量用xib(能用storyboard就用storyboard, 一个storyboard里最好别装太多的UIViewController,这在结队开发中将不利)。本文主

2016-06-27 21:56:16 1135

原创 IOS创建UI的方式

学习IOS之处,不知道如何创建UI,现记录几种方式方便后续查看1.不使用ViewController直接创建,如下:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWin

2016-06-14 00:51:49 523

转载 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧

代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面。iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关系。而随着iOS开发发展至今,可以说在UI制作上大家逐渐分化为了三种主要流派:使用

2016-06-12 22:16:55 442

转载 ViewController生命周期详解

在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它。ViewController是iOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他Vi

2016-06-12 22:00:28 405

转载 iOS应用程序生命周期(前后台切换,应用的各种状态)详解

链接如下:点击打开链接

2016-06-12 21:48:45 944

转载 Window下开发环境安装和Hello World

Objective-C是在C语言的基础上的扩展,是一种面向对象的编程语言。这里假设读者有面向对象的编程基础。1. 下载并安装开发环境 到http://www.gnustep.org/experience/Windows.html下载以下四个文件:PackageRequired?StableUnstableNotesGNUs

2015-03-21 15:38:32 604

转载 STL函数对象之自定义函数对象

如何定义自己的函数对象,它使用于任何的绑定器要定义自己的绑定器要满足一定的条件:必须提供参数和返回值的类型。STL为我们提供了两个结构体:template struct unary_function {typedef Arg argument_type;typedef Result result_type;};template struct binary_fun

2015-02-11 14:58:25 947

转载 STL函数对象之预定义函数对象和函数对象绑定器

STL为我们定义了一些常用的函数对象,如下表。函数绑定器是函数对象,它能结合函数对象、于特定值或函数在一起使用。它们也是被定义在. 看下面的例子:find_if (coll.begin(),coll.end(), bind2nd (greater(),42))。这个例子bind2nd把greater()于42结合起来用来检查大于42的值。下面是STL为我们定义的函数绑定器:

2015-02-11 14:57:35 1123

转载 STL函数对象2

看下面的例子:class IntSequence {private:int value;public:IntSequence (int initialValue): value(initialValue) {}int operator() () {return value++;}};list coll;generate_n (back_inserter(coll

2015-02-11 14:53:04 609

转载 STL函数对象

函数是这样一个Object:它定义了operator()操作。例如:class FunctionObjectType {public:void operator() {statements}}这样的定义有三个重要的优点:1.       如果它又一个状态它会更加智能,事实上你可以在同一个函数中有两个实例,这两个实例可以用同一个恶有多个状态的函数对表示。2.   

2015-02-11 14:52:39 632

转载 STL迭代器之迭代器绑定器:Iterator Traits

Iterators有不同的类型,每种类型都代表着不同的能力,它在重载某个行为时,是有用的,甚至有必要。通过iterators tags和iterator traits 重载可以实现。对于么一个iterator类型STL都提供一个terator tag,这个terator tag能被做一个’table”.namespace std {struct output_iterator_ta

2015-02-11 14:52:07 932

转载 STL迭代器之迭代器绑定器:Stream Iterator

一个 stream iterator 是这样一个迭代器:允许你用一个流作为算法的一个源或是目的。特别的,一个input迭代器能够从input stream中读入数据。.输出迭代器可以当作output stream来写数据。Ostream Iterators:通过使用 ostream iterators,算法可以直接向streams中写数据。一个ostream iterator的

2015-02-11 14:51:26 1103

转载 STL迭代器值迭代器绑定器:Insert Iterators

Insert iterators是这样一个迭代器:从赋一个新值转变为插入一个新值。通过使用Insert iterators,算法能插入而不是重写。所有的Insert iterators都是output iterator categor。它们只提供赋一个新的能力。看Copy的实现:namespace std {template OutputIterator copy (InputIt

2015-02-10 15:53:39 662

转载 STL迭代器之迭代器适配器:Reverse Iterators

迭代器适配器:这些特殊的迭代器允许算法在反转,插入,流中操作。Reverse IteratorsReverse Iterators重新定义++,--操作符为了它们的行为像Reverse.因此如果你用Reverse Iterators代替平常的迭代器,算法处理元素以相反的顺序,所有的容器都支持用Reverse Iterators的能力。一个有趣的例子:vector col

2015-02-10 15:52:31 743

转载 STL迭代器之辅助迭代器函数

辅助迭代器函数:STL提供三个辅助函数:advance(),distance(), and iter_swap().那前两个函数给了所有迭代器一些能力,平常这些能力只有random access iterators拥有:向前移动多个位置和处理两个迭代器的差值。第三个函数允许你交换两个迭代器的值。函数advance():#include void advance (Input

2015-02-10 15:51:43 652

转载 STL迭代器之迭代器的种类

所有的容器都有自己的迭代器,我用的时候不需要添加什么文件,但有三种迭代器一定要加#include 头文件:流,插入,翻转。有五种迭代器的种类:Iterator Category Ability ProvidersInput iterator         Reads forward           istreamOutput iterator        Writes

2015-02-10 15:51:03 787

转载 STL容器之泛型容器

Abilities:1.所有的容器都提供Value语义而不是Conference语义。当插入值要内部拷贝,因此容器内的元素一定要能拷贝。如果不能拷贝的话,你可以用指向元素的指针,或指针对象来使用容器。2.一般来说,容器里的元素都有一个顺序,因为我们可以反复声明任何一个元素多次。并且支持函数返回迭代器,该迭代器作用于元素。3.一般来说,操作是不安全,我们才使用时一定要满足操作的一些要求。

2015-02-10 15:49:04 998

转载 STL容器之Map,MulitMap

Map元素是一对组合Key/Value。Key的值不能重复,可以把Key作为下标得到Value的值。它也是按照一定的顺序排列。MultiMap和Map差不多,只不过它支持重复的Key值。所有的关联容器的排列顺序是可选择的,默认的是。我们可以定义一个排序准则有两个方法:1.       作为模板参数:std::set > coll;2.       作为一个构造参数:在运行时传递

2015-02-10 15:48:29 1334

转载 STL容器之Set,MultiSet

Set,MultiSet都是关联容器,它们的元素是按照一定的顺序排列的并且排列是自动的。关联容器代表性的是用二叉树实现。每一个元素有一个父亲和两个孩子。并且父元素比它的左孩子 要大,比它的右孩子要小。Set:所有元素不能是重复的。并且按照一定的顺序排列,默认是从小到大。MultiSet:和Set差不多,只不多它支持重复的元素。它们的元素自动排序,默认是。元素间的比较是很严格的:

2015-02-10 15:47:52 520

转载 STL容器之list

它是用链表实现的,所以不支持随机访问。但它在插入,删除效率很高。也有push_back,push_front,pop_back,pop_front.函数。因为它是链表,一些泛型算法对它不太适用,于是它有自己的一些函数。它的函数清单如下:assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 

2015-02-10 15:46:29 534

转载 STL容器之Deque

它也是一个动态数组,当然也能随机访问。不过是双端队列,它在尾部或首部插入数据,删除数据很快,在中间插入数据也很费时。它有push_back,push_front,pop_back,pop_front.函数。Deque和Vector有相似的接口,它是双端的,在首部或是尾部插入,删掉数据很快,为了提供这个能力,它的内存是由多个内存块组成,第一个块向一个方向,最后一个块是向相反的方向。它对元素的

2015-02-10 15:45:49 445

转载 容器介绍之Vector

STL提供两种不同的容器:顺序容器,关联容器。Vector是顺序容器的一种。 vector是以一个动态数组来管理数据,它能随机访问,在vector的尾部加入或是删除元素是非常的快的。但在中间或首部插入元素或删除元素是很耗时的。他只能向后插入元素,所以它只有push_back,pop_back函数。 以下转载自:http://www.cnblogs.com/ahuo/archive/2007

2015-02-10 15:44:52 836

转载 Unlities之numeric_limits

用numeric_limits可以为每一个类型提供一个接口。A general template provides the default numeric values for any type:namespace std {/* general numeric limits as default for any type*/template class numeric_l

2015-02-10 15:43:11 967

转载 Utilities之auto_ptr

一,auto_ptr类的作用:1.获取资源2.处理一些操作3,释放资源一个简单的例子:void f(){      ClassA* ptr = new ClassA; //create an object explicitly      try {       ... //perform some operations        }catch (...)

2015-02-10 15:42:25 499

转载 Utilities之pairs

类Pair是一个结构体,它是把两个元素作为一个单元。在STL中在很多地方会用到,特别是容器类:map,multimap会用Pair来管理数据,pair中的两个元素分别是key/value。它被定义在中。  namespace std {template struct pair {   typedef T1 first_type;   typedef T2 second_type

2015-02-10 15:41:36 538

转载 C++ STL简介

STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:、、、、、、、、、、、和。以下笔者就简单介绍一下STL各个部分的主要特点。一、算法大家都能取得的一个共识是函数库对数据

2015-02-10 15:39:13 591

转载 文件属性结构体:WIN32_FIND_DATA

关于文件的全部属性信息,总计有以下以下9种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了。    在用findfirst()和findnext()函数去查找磁盘文件时经常

2015-02-10 15:36:51 3256

转载 Onpaint和OnDraw的区别[转]

OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint 处理函数通过

2015-02-10 15:35:42 703

转载 内存的分配方式

对于我们初学者来说,内存是个神秘的空间。程序的绝大部分错误,也是在于内存的使用不当造成的,而且这些错误有些都是隐藏很深的。所以,如何掌握内存的使用,通晓系统对内存的管理手段,将是软件成功的一个非常关键的因素。       首先我们要了解内存的分配方式。一般来说,内存的分配方式有三种:1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,

2015-02-10 15:28:15 1170 1

转载 placement new

1、placement new 为何物?placement new 是重载operator new 的一个标准、全局的版本,它不能够被自定义的版本代替(不像普通版本的operator new 和 operator delete能够被替换)。void *operator new( size_t, void *p ) throw()    { return p; }placement

2015-02-10 15:27:10 624

转载 数组指针与指针数组

这个问题大家应该都碰到过,指针数组和数组指针,刚开始看时觉得还是能看懂,但是过些时又搞混了,最后发现还是没有真正理解。 下面就简单说说这两个概念: 一:指针数组,顾名思义,就是说的首先是一个数组吧,然后数组的元素是指针而已。 说明形式为:type *pointer_array[constant1][constant2]...[constantn]; 例如:int *pai[3]

2015-02-10 15:26:25 486

精通iOS开发(第6版) 英文版

学习IOS的不二之选,好好学习,天天向上。

2015-04-10

Effective_STL.pdf

更加灵活的使用STL.

2012-11-06

PC+游戏编程(人机博弈)(pdf+格式

书 名: PC游戏编程(人机博弈) 作 者: 王小春 出版社 : 重庆大学出版社 出版日期: 2002年6月 定 价: 38元 简 介:本书是一本专论机器搏弈的作品。详细披露了编写人机对弈程序的原理,技术和各种相关内容。包含一个完整的中国象棋人要对弈程序和一个完整的五子棋人机对弈程序实例。毫无保留的展示了估值核心,走法产生,以及约十种不同的搜索引擎,彻底解析了高性能博弈程序的秘密所在。实用性是本书的最大特点,本书的目标是让一个粗通程序设计的人在一个月内写出令人惊讶的人机博弈程序。完全没有一般人工智能书籍晦涩难懂的感觉。

2012-11-06

tcp/ip协议详解(卷1)

如果你想学习网络编程,就下载它吧,它是学习网络编程的好书。

2011-03-15

空空如也

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

TA关注的人

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