- 博客(52)
- 资源 (19)
- 收藏
- 关注
原创 Visual Studio 2008加载符号表导致调试缓慢
在VS2008的安装目录下IDE目录中,我的是D:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE,新建一个文件,symsrv.ini,在里面添加不想加载的调试符号,如果都不加载,内容为:[exclusions]*.*重启VS2008,调试的时候就不加载了,快的飞起~
2016-06-06 11:29:49 696
原创 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
2016年第一个程序就出现了这种错误。。。。。。据说是安装了VS2012后,VS2010的cvtres.exe就无法使用,但我没安装2012。。。。。。 当VS生成PE文件头时,使用的cvtres.exe版本错误,不能与当前的.NET平台兼容。因为是cvtres.exe版本错误导致的结果,所以凡是能使VS链接器找到正确的cvtres.exe版本的方法都可以解决该问题。或者使VS链接器不生成
2016-06-06 11:29:46 418
原创 去除VS2010对汉字的拼写检查后留下的红色波浪线
浏览代码的时候就很多的红线,强迫症受不了。。。 目前没找到好的方法让VA或者VS不对注释部分进行拼写检查,但可以通过给注释的结尾添加 “ ; ” 来减少或者消除红色的波浪线,如果一个分号不够就多加几个。。。 不关VS的事,原因在于visual assist。在VAssistX菜单栏->Visual Assist X Options->展开Advanced->Underlines->把unde
2016-06-06 11:29:44 845
原创 系统崩溃,PE系统也进不去
我又来写日志了。。。这次坏的也不是我的电脑。。。是未来苏辅导员的电脑→_→症状如下:他的联想电脑开机突然不行了,win8系统,开机提示选择键盘布局。。。选了没反应,就是酱紫,然后PE系统也进不去,大白菜生成的系统。按照我的经验。。。应该是硬盘出问题了,很久之前遇到过,没有修好,用别的硬盘替换就可以正常进入了,把疑似坏的硬盘放我电脑里,我的电脑也启动不了也进不了PE,最后让她换了硬盘,丢脸丢大了。。
2016-06-06 11:29:41 28089
原创 VS2010生成DLL问题
遇到个扯蛋的问题,搞了很久。。。从别的项目里拷贝来的代码,自己用VS2010新建了一个DLL项目,发现生成的DLL很小。。。如图: 我的50k,示例代码400k。。。然后加载后怎么也没反应,以为是配置哪里不对,对着把项目属性都改了也不行,后来把配置属性中的常规-MFC的使用-改为在静态库中使用MFC就行了。。。但是为毛原来那个是“使用标准windows库”,修改后如下 不理解啊。。。算了,不想纠结
2016-06-06 11:29:38 432
原创 windows核心编程 第3章 内核对象
坚持做一件事很考验耐力,只是有些事情,坚持是改变不了的吧,不多说了,继续。。。主要参考:http://www.cnblogs.com/xi52qian/archive/2011/02/28/1967510.html3.1 什么是内核对象内核对象就是内核中的一块内存,是一个结构,并且只能由内核对象访问,应用程序只能通过调用Windows提供的函数来操作内核对象。每个内核对象都有相同的部分比如安全属性
2016-06-06 11:29:28 300
原创 windows核心编程 第2章 字符和字符串处理
咳咳,今天效率低了一点o(︶︿︶)o 决定先快速把这本书看完一遍主要参考:http://www.cnblogs.com/Ripper-Y/archive/2012/05/16/2505444.html1、三种计算机字符集 计算机字符集可归类为三种,单字节字符集(SBCS)、多字节字符集(MBCS)和宽字符集(即Unicode字符集)。 单字节字符集(SBCS): 单字节字符集,称之为S
2016-06-06 11:29:25 467
原创 windows核心编程 第1章 错误处理
好吧,我承认我是个很懒的人,很多内容是从别人那里复制的。。。不过加了自己的实践,有意外的地方,以后的实验的环境默认为win7x64,Visual Studio 2008,红色的一般是我出意外的地方=_=主要参考:http://www.cppblog.com/SpringSnow/archive/2009/02/20/74350.html 这一章开篇介绍了windows函数的几种返回值:
2016-06-06 11:29:22 378
原创 win8 重新装系统,始终无法从光盘启动或U盘启动问题
涨一下知识。。。经过实践验证的了有的电脑预装win8,如果要重新装系统,可能会遇到始终无法从光盘启动或U盘启动问题,改一下BIOS就可以了。BIOS具体设置方法如下(这样设置后才能从U盘或光盘启动):1、开机点击F1进入到bios界面;2、进入Security—Secure Boot,改成Disabled ;3、进入Startup—UEFI/Legacy Boot选项 /Legacy Boot选项
2016-06-06 11:29:20 1057
原创 windows内核开发(一)环境搭建
因为大部分 Windows驱动程序都是内核程序,所以这个总结,不区分“驱动编程”与“内核编程” 。同时,也不区分“内核模块”与“驱动程序” 。这两个词汇编译出的.sys 可执行文件。专注于较通用的内核程序的开发,并不介绍针对某种类硬件的,比如声卡、显卡、USB 等的等各种驱动程序的开发。 参考资料: 《寒江独钓:Windows内核编程与信息安全》 《天书夜读-从
2016-06-06 11:29:17 2120
原创 C++类访问控制及继承
一、C++类的访问控制有三类:public,protected和private。类访问控制符类成员可被哪些对象访问public1、类的成员函数。2、类对象。3、友元。4、子类成员函数protected1、类的成员函数。2、友元。3、子类成员函数private1、类的成员函数。2、友元二、C++类的继承继承方式也有三种:public,protected和priv
2016-06-06 11:29:14 285
原创 C++虚析构函数
析构函数可以使虚函数,而构造函数不可以从实现上看,vbtl在构造函数调用后才建立,因而构造函数不可能成为虚函数从实际含义上看,在调用构造函数时还不能确定对象的真实类型(因为子类会调父类的构造函数);而且构造函数的作用是提供初始化,在对象生命期只执行一次,不是对象的动态行为,也没有太大的必要成为虚函数在C++程序开发时,用作基类的类的析构函数一般要定义为虚函数,为什么要这样做呢?先看一个例子,代码如
2016-06-06 11:29:12 403
原创 C\\C++语言杂谈
表示开始直接学C++,有点分不清C和C++的语法 =_= 这里先找一点,遇到了再补充C语言和C++语言在语法上面的部分区别:1、C语言的定义必须在最前面,C++可以在任何地方定义,比如for(int i=0;i在C++中是正确的,但是在C语言中是错误的2、类型强制转换,C语言必须将类型括起来,C++可以将变量括起来。比如int(a)在C++中是正确的,但是在C语言中是错误的,必须写为(int)a3
2016-06-06 11:29:09 527
原创 头文件 string.h cstring string 区别
转自:http://blog.csdn.net/weitian826/article/details/59952751.#include //不可以定义string s;可以用到strcpy等函数using namespace std;#include //可以定义string s;可以用到strcpy等函数using namesapce std;#includ
2016-06-06 11:29:06 340
原创 delete p和delete[] p的区别
原文: operator new 和 operator delete函数有两个重载版本,每个版本支持相关的new表达式和delete表达式: void* operator new (size_t); // allocate an object void* operator new [] (size_t); // allocate an array
2016-06-06 11:29:04 1263
原创 基于Crt的内存泄漏检测
转自:http://www.cppblog.com/Lyt/archive/2009/03/22/77517.html http://news.im286.com/2013/0308/47353.shtml内存泄漏是编程中常常见到的一个问题,我所遇过的原因有两个:1.分配完内存后忘记回收2.代码有问题,造成想回收却无法回收,例如:int* p=new int;p=new
2016-06-06 11:29:01 527
原创 C多维数组动态分配与释放
写代码的时候会碰到多维数组的内存分配和释放问题,在分配和释放过程中很容易出现错误。下面贴上一些示例代码,以供参考。 如果要给二维数组(m*n)分配空间,代码可以写成下面:char **a, i;// 先分配m个指针单元,注意是指针单元// 所以每个单元的大小是sizeof(char *)a = (char **) malloc(m * sizeof(char * ));//
2016-06-06 11:28:59 456
原创 C++对象内存模型
C++ 对象的内存布局 陈皓http://blog.csdn.net/haoel 前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是
2016-06-06 11:28:56 872
原创 C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函
2016-06-06 11:28:53 751
原创 C指针声明解读之左右法则
C指针声明解读之左右法则 C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的: The
2016-06-06 11:28:50 299
原创 程序内存图
一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局
2016-06-06 11:28:47 681
原创 C/C++中const关键字详解
转自http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const 类型说明符 变量
2016-06-06 11:28:44 919
原创 虚函数空间大小
class no_virtual{public: void fun1() const{} int fun2() const { return a; }private: int a;}class one_virtual{public: virtual void fun1() const{} int fun2() const { retu
2016-06-06 11:28:42 377
原创 AT&T汇编格式与Intel汇编格式的比较
GCC采用的是AT&T的汇编格式, 也叫GAS格式(Gnu ASembler GNU汇编器), 而微软采用Intel的汇编格式. 一 基本语法 语法上主要有以下几个不同. 1、寄存器命名原则AT&TIntel说明%eaxeaxIntel的不带百分号2、源/目的操作数顺序AT&TIntel说明movl %eax, %ebx
2016-06-06 11:28:39 374
原创 typedef void far *LPVOID
原文出处:http://hi.baidu.com/x___f__/blog/item/67debbc55360bca58226ac98.htmltypedef是c/c++代码中经常用到的 一个关键字. 他的主要做用是给变量类型定义一个别名. 从而达到代码简化, 促进跨平台开发的目的. 下面是typedef的最经常的用法: typedef struct{ int a; int b; }MY
2016-06-06 11:28:36 1848
原创 C++ 实现DLL注入(一)实现
直接上代码了//FMethod.h#pragma once#include #include #include int FMethod(char * c_str);BOOL LoadDll(DWORD dwProcessId,LPTSTR lpszDllName);//FMethod.cpp#include "FMethod.h"int FMethod(char * c_str){ //打开 c_
2016-06-06 11:28:33 2556
原创 C++ 实现DLL注入(二)说明
所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。 hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允许远程创建线程 ...所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。 hRem
2016-06-06 11:28:31 1824
原创 调试出现一大堆错误···
1>c:\program files\microsoft sdks\windows\v6.0a\include\tlhelp32.h(30) : error C2146: 语法错误 : 缺少“;”(在标识符“WINAPI”的前面)1>c:\program files\microsoft sdks\windows\v6.0a\include\tlhelp32.h(30) : error C4430:
2016-06-06 11:28:28 1305
原创 vs2008 error C2440
VS2008对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2008下编译不通过ON_MESSAGE(WM_message,OnPosChage);OnPosChage()返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMessage(WPARAM, LPARAM);如果不符合,则有错误提示:error C2440: “static_cast”: 无法从“
2016-06-06 11:28:20 660
原创 fatal error LNK1168: 无法打开 xxx.exe 进行写入
今早用VS2008调试的时候发现了这个奇葩的问题,只有debug会出现,release则没有,后来百度到了原来是在之前的debug之后,这个进程并没有完全被终止,可以到任务管理器中查找到相应的进程(这里为OgreExample),然后结束所有的这个进程。重新debug就不再会出现这个问题了。
2016-06-06 11:28:17 5275
原创 char * 和 char[]
问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++#include using namespace std;main(){ char *c1 = "abc"; char c2[] = "abc"; char *c3 = ( char* )mal
2016-06-06 11:28:15 1153
原创 CString sring char* char[]之间的转换
CString 头文件#include string 头文件#include CString 与 char *CString 转 char *CString cstr;char *p = (LPSTR)(LPCTSTR)cstr;char * 转 CString1、CString.format(”%s”, char*);2、CString strtest = char *;char *
2016-06-06 11:28:12 553
原创 MFC中CString转换成char数组【转】
由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素,需要用char数组来保存字符串,但是在MFC中一般都是用CString来存放字条串。关于它们之间的转换,在VS2008中有时会出现异常情况。在MSDN是这样写的: CString orig("Hello, World!");// Convert to a char* const size_t newsize = 1
2016-06-06 11:28:06 29627 4
原创 vc++如何响应键盘和鼠标事件
1、对键盘的响应VC 中用 KeyPress 表示键盘响应的所有事件,包括 OnKeyDown 事件(键按下)、 OnKeyUp 事件(键按下后弹起)和 OnKeyPress 事件(按了某个键)。 OnKeyuUp 事件的语法为 void Object1:: OnKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags ); OnKeyDown
2016-06-06 11:28:04 6036
原创 VS2008如何打开VS2010创建的项目
1.修改sln文件VS2008的SLN文件的开头会有如下代码:Microsoft Visual Studio Solution File, Format Version 10.00# Visual Studio 2008 VS2010的SLN文件的开头却是如下代码:Microsoft Visual Studio Solution File, Format Version 11.00# Visual
2016-06-06 11:28:01 414
原创 vc90.pdb 不是创建此预编译头时使用的 pdb 文件,请重新创建预编译头
今天用VS2008编译程序的时候出现了奇葩的问题,上次使用的时候还是很正常的,不明所以:2>.\StdAfx.cpp(5) : error C2859: c:\users\pangb\desktop\xx\xxx\debug\vc90.pdb 不是创建此预编译头时使用的 pdb 文件,请重新创建预编译头。2>.\StdAfx.cpp(5) : error C2859: c:\users\pangb
2016-06-06 11:27:58 4990
原创 天书夜读:入手篇 熟悉汇编
《天书夜读:从汇编语言到Windows内核编程》下载地址:http://download.csdn.net/detail/qq1012848571/59994030、call、ret、push、pop、add、sub都可以操作堆栈,栈顶比栈底的地址小,由esp寄存器指向;1、call 的本质相当于push+jmp,ret的本质相当于pop+jmp。 call用来调用函数,先将下一条指令的地址
2016-06-06 11:27:56 467
原创 VS2008编译错误:fatal error C1902: 程序数据库管理器不匹配;请检查安装
不知道怎么突然出现这个错误···昨天关机的时候还是很正常,早上就提示错误了,网上找到了解决办法:X:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE下面拷贝mspdbsrv.exe到X:/Program Files/Microsoft Visual Studio 9.0/VC/bin下面,然后在编译就通过了,不行的话,复制完重启VSX
2016-06-06 11:27:53 380
原创 恢复系统环境变量
奇葩的命令:netsh winsock reset今天,某君的电脑系统变量给他修改错了···出现了奇葩的问题,用了各种办法都不行,包括在注册表企图恢复,最后一次正确的配置,确实不想重装系统,就用了某人给的命令netsh winsock reset,在命令行中使用,最后似乎正常工作了,这个命令似乎是重置应用层所有接口······不明觉利,收藏着以后用吐槽一下:旭东个SB
2016-06-06 11:27:50 1413
原创 xp和Ubantu双系统删掉Ubantu (mbrfix工具)
装了xp和Ubantu12.04双系统,想删掉Ubantu,原来直接删除导致windows进不了了,后来发现可以用mbrfix.exe搞定 适合环境:xp,PE,win7系统,其它的没试过 使用方法: 首先把mbrfix.exe这个程序从网上下载,然后放到C盘,一般是C盘是系统盘,然后从cmd控制台下打开,直接打开的话会一闪而过就关闭了,在控制台里进入到放mbrfix.exe的文件夹,在
2016-06-06 11:27:48 864
Codejock.Xtreme.Toolkit VS2013补丁及使用方法
2017-02-23
C++进程注入(使用DLL)
2013-09-16
DebugView.zip
2013-08-22
masm for windows集成实验环境 2012
2013-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人