#include "stdafx.h" #include "Tools.h" #include<Windows.h> LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { switch(uMsg){ case...

阅读全文>>

#include "string.h" class Monster { public: int ID; int Level; char Name[20]; public: Monster(){} Monster(int ID,int Level,char* Name) { this->ID = ID; this->Level =Level; memcpy(&this->Name,Name,strlen(Name)+1); } }; template<class T> class Tre...

阅读全文>>

// LinkedList.h: interface for the LinkedList class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_LINKEDLIST_H__4B3074E8_FF2A_4FDE_9798_A2DEC76350C0__INCLUDED_) #define AFX_LINKEDLIST_H__4B3074E8_FF2A_4FDE_9798_A2DEC76350C0__INCLUDED_ #if _MSC_V...

阅读全文>>

// Vector.h: interface for the Vector class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_VECTOR_H__4269F728_802C_48DF_A3E7_71483AA2CDA7__INCLUDED_) #define AFX_VECTOR_H__4269F728_802C_48DF_A3E7_71483AA2CDA7__INCLUDED_ #if _MSC_VER > 1000 #p...

阅读全文>>

对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。对于不能确定需要占用多少内存的情况,动态内存分配解决了这个问题。     new和delete运算符是用于动态分配和撤销内存的运算符。 一、new用法 1.开辟单变量地址空间    使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的首地址,如果申请不成功,...

阅读全文>>

很全面的总结, 转载:  https://wuyuans.com/2012/09/cpp-operator-overload 文章如下 c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。 1.一般运算符重载 在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式...

阅读全文>>

// 20171122_01.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "windows.h" #include "stdlib.h" #include "iostream.h" #include <stdio.h> struct Base{ virtual void Fn1() { printf("Base:Fn1111\n"); } virtual void Fn2() { p...

阅读全文>>

// 20171122_01.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "windows.h" #include "stdlib.h" #include "iostream.h" #include <stdio.h> struct Base{ int a; int b; virtual void Fn1() { printf("1111\n"); } virtual void Fn2...

阅读全文>>

最近工作压力比较大,事情比较多!! 晚上去看了 sablog的个人博客, 想的有点儿多吧 自己也就一个菜鸟, 一个大牛被关进监狱, 自己能感慨些什么呢.... 前天,Q说买房子的事情, 看看自己兜里的存款, 想想未来能给燕子带来什么, 我真的感觉有些无力!! 现在自己为未来真的没什么把握, 为了一些鸡毛蒜皮的小事,耽误了太多太多, 刷量平台已经建立起来了, 没有进行推广, 挣钱,, 挣钱,  技术,, 技术,,,  现在心里还是很慌很慌,  什么时候可以自己内心可以真正的不太慌呢...

阅读全文>>

好庞大的课程体系, 学期七个月 1. 指引篇  328课时(预计两个月)     此阶段主要侧重于培养学员发现问题的能力,并对各大平台各个操作系统有一个整体性认知,迅速建立起较高的计算机素养,并形成对于信息安全核心思想的初步探索及认知,为后续专项课程的学习建立起全局高度,以达到有的放矢的目的。  > C++基础............40课时(将零基础学生带入计算机语言的奇妙世界,此部分主要偏向于编程思想与基础语法)  > C++提高......

阅读全文>>

测试代码的效果, 只适用于 win自带的 程序   void TestPrintBindImportDirectory(LPSTR lpszFile) { LPVOID pFileBuffer = NULL; pFileBuffer= ReadPEFile(lpszFile); if(!pFileBuffer) { printf("文件读取失败\n"); return; } PIMAGE_DOS_HEADER pDosHeader = NULL; PIMAGE_NT_HEADERS pNTHeader ...

阅读全文>>

导入表有些复杂,文件与内存中的格式不太一样 理解导入表的结构是关键 void TestPrintImportDirectory(LPSTR lpszFile) { LPVOID pFileBuffer = NULL; pFileBuffer= ReadPEFile(lpszFile); if(!pFileBuffer) { printf("文件读取失败\n"); return; } PIMAGE_DOS_HEADER pDosHeader = NULL; PIMAGE_NT_HEADERS pNTHeader = NULL; PIMAGE_FIL...

阅读全文>>

直接更改文件的ImageBase,进行的测试   void testUseReloc(LPSTR lpszFile) { LPVOID pFileBuffer = NULL; pFileBuffer= ReadPEFile(lpszFile); if(!pFileBuffer) { printf("文件读取失败\n"); return; } PIMAGE_DOS_HEADER pDosHeader = NULL; PIMAGE_NT_HEADERS pNTHeader = NULL; PIMAGE_FILE_HE...

阅读全文>>