自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (3)
  • 收藏
  • 关注

原创 什么是VC++ 中的实例,instance

     很多初学者包括对vc++有一定了解的人,总会时不时的扪心自问这个instance到底是个什么东西呢,微软的解释是一个一个应用程序的实例,但是很多人不满足这个解释,所以一直会问,这个实例又是什么,于是乎到处发帖,到处寻求高人指点,根据我的反汇编调试,我最终看到instance其实是一个类的对象指针,这个指针所指向的对象是被动态创建的。

2008-12-31 09:48:00 2017

原创 调试的一点心得

     在调试程序的时候,代码的模块化很容易确定出错的准确位置,所以在这里我建议各位写代码的时候最好能代码模块化,功能单一化,减少全局,静态变量,这样当一个程序出错的时候能很准确的定位在某条语句,找到对应的代码后,首先检查这条语句是不是有参数,如果有参数首先检查参数,接着在向上找,主要是找参数是否合法。

2008-12-30 18:28:00 827

原创 快速网络连接问题

    经常写网络程序的时候,发现连接不到服务端,这个时候很多人会马上去查看代码,根据我的经验,最好先用ping命令判断下是否真的可以连接上服务端,这样一来就能确定是否真的时程序出了问题,很多时候因为载服务端装了一些防火墙,防病毒软件,导致客户端连接不到服务端,而不是我们自身程序有问题。

2008-12-30 10:42:00 771

原创 虚拟地址引发的思考

用户层看到的地址是虚拟地址,经常看到很多网友,以及书上都是这样写。那么我想问个问题,在调试器下看到的内存地址是不是虚拟内存地址呢?我认为是虚拟地址,我的根据是,比如有个二进制文件包含了一段常量数据区,那么当我们用反编译工具调试时候,发现这两个常量数据区的地址一样,说明在调试模式下,内存地址其实是虚拟地址,而不是物理地址,因为这个,我想起了几个问题,那么我们如何才能真正的看到其对应的物理地址呢?虚拟

2008-12-29 23:08:00 682

原创 c++函数传参问题

关于  c++函数传参,网上有很多说法。特别是对于调用一个对象的公用方法时,很多人认为this指针作为最后一个参数被压入到栈中。 我认为这中说法不妥当根据我的观察,我发现this指针是通过寄存器传进去的,而不是通过什么最后一参数被压入到栈中。  还有很多人认为返回值会作为第一个参数。 据我的观察这个也不妥 返回值通常都是最常用的寄存器返回的,比如在int

2008-12-28 21:39:00 1050

原创 叠代器push_back要注意的地方

因为push_back操作导致的内存重新分配   造成容器内元素内存重新分配   原来的地址就无效了         vector   a;     vector   b;         a.reserve(10);   //增加这行   假设   最多放10个元素     b.reserve(10);   //增加这行   假设   最多放10个元素   

2008-12-23 15:09:00 809

原创 Mac OS X应用程序格式详解

Mac OS X应用程序格式详解OS X 应用程序 格式讲解OS X 如何执行应用程序译者:51test2003     译自[url]http://0xfe.blogspot.com/2006/03/how-os-x-executes-applications.html[/url]作为长期的 UNIX 用户, 我通常有一些排除系统故障的工具. 最近, 我正在开发软件并新增了Apples O

2008-12-22 20:35:00 2159

原创 文字编码问题

首次出现这个问题是在iphone平台上防火墙开发的时候,拦截的信息中有中文字符,我想截取其中一部分显示,我定义的数组是250个字符,于是我截取了249个字符,问题就出现了,发现超过250个字符的短信没法显示,我左思右想,终于想到了文字的编码问题,中文字符有几种编码格式,但是全是偶数个字节,于是我把249该为248问题解决了。

2008-12-22 15:35:00 558

原创 游戏开发基础知识

3D游戏的数理基础:向量1.1 向量的性质1.2 点积1.3 叉积1.4 向量空间矩阵2.1 矩阵的性质2.2 线性方程组2.3 逆矩阵2.4 行列式2.5 特征值与特征向量2.6 对角化变换3.1 通用变换3.1.1 正交矩阵3.1.2 手向性3.2 缩放变换3.3 旋转变换3.3.1 绕任意轴旋转3.4 齐次坐标3.4.1 四维变换3.4.2 点向量和方向向量3.4.3 坐标的几何

2008-12-21 13:52:00 1082 1

转载 怎样获取未知DLL的接口参数

http://www.zxbc.cn/html/20080104/30985.html 

2008-12-20 05:12:00 864

原创 栈的规则

用IDA打开这个DLL,在每个函数中IDA会列出参数和局部变量.偏移量为正的是参数,负的是局部变量.正的意思就ebp+XX.负是ebp-XX. 

2008-12-20 04:55:00 1075

原创 关于未知dll函数参数的获取问题!

通常我们用IDA反编译dll得到信息!我看过一篇文章,是说通过以下几种方法:     1。先打开需要分析的DLL,然后通过菜单功能-》出口来找到需要分析的函数,双击就可以了。它可以直接定位到该函数。     2。看准该函数的入口,一般函数是以以下代码作为入口点的。     push   ebp     mov     ebp,   esp     ...     3。然后往下找到该函数的出口,一般

2008-12-20 04:53:00 2050

转载 函数调用约定解析 汇编解析

http://c.chinaitlab.com/cc/ccjq/200806/752297.html 

2008-12-20 04:09:00 835

原创 eip esp ebp讲解

   1.EIP2.ESP3.EBP 1.EIP寄存器里存储的是CPU下次要执行的指令的地址。 也就是调用完fun函数后,让CPU知道应该执行main函数中的printf("函数调用结束")语句了。2.EBP寄存器里存储的是是栈的栈底指针,通常叫栈基址,这个是一开始进行fun()函数调用之前,由ESP传递给EBP的。(在函数调用前你可以这么理解:ESP存储的是栈

2008-12-20 01:05:00 3676

原创 反汇编常见代码

 最近需要反汇编苹果手机的固件,于是开始学习反汇编,当进行函数调用时看见这几条语句,经过细心观察,知道其大概意思了。.text:00411432 mov     ecx, 36h.text:00411437 mov     eax, 0CCCCCCCCh.text:0041143C rep    

2008-12-20 00:42:00 1211

原创 程序为什么要模块化

     程序为什么要模块化,这是我这次进公司时,帮同事调程序时发自内心的一个感触,看到同事代码时,给我感觉第一:函数内代码太长,居然达400行。第二:代码太长导致变量命名不规范第三功能复杂第四可读性不好,看了好久才把整个函数的所有功能弄懂。其他就不写了,总之。。。。 程序模块化,这样使程序更加清晰便于程序改动”。除此之外,程序模块化有着更深的意义:(1)模

2008-12-18 09:35:00 10961

原创 内存池

最近开发一个项目,对内存要求很严格,在此期间认真的学习了一下大名顶顶的内存池技术,网上有一好文,拿来分享内存池(MemPool)技术备受推崇。我用google搜索了下,没有找到比较详细的原理性的文章,故此补充一个。另外,补充了boost::pool组件与经典MemPool的差异。同时也描述了MemPool在sgi-stl/stlport中的运用。经典的内存池(MemPool)技术,是一种用于分配大

2008-12-17 18:05:00 1345 1

原创 如何使用gdb调试程序

 如何使用gdb调试程序 调试程序对于编程的重要性,绝不亚于一天三餐对于人生命的重要性。 调试程序以前,首先需要编译并连接你的源代码,但需要特别注意一点,就是需要在声称的可执行文件中加入调试信息,即gcc编译连接是加入-g选项。eg:gcc -g file.c -o file 也可以使用gcc的-ggdb选项生成更多的调试信息,它可以访问你所连接的每一个库的源代码。虽然这个选项在某些情况下非常有用

2008-12-17 15:04:00 2450

原创 gdb在mac上的反汇编

连续参加了四天的Debugging培训,知道了不少Visual Studio Debugger和WindDBG的窍门,新鲜内容不多,倒是激起了做reverse engineering的兴趣。Windows平台就算了,Mac上倒是从来没搞过,刚好手上有一个要注册的软件还没注册,就拿它试试。事先声明,本次crack纯属技术演练,无其他用意。涉及到该程序的内容,会尽量用xxx表示。首先启动程序,程序停留

2008-12-17 15:02:00 4385

原创 软中断与硬中断区别

区别有好几点,不过可能我总结得不全面     1.软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的     2.软中断是由程序调用发生的,而硬中断是由外设引发的     3.硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会等侍较长时间     编写这两类的中断处理程序我感觉区别不太大

2008-12-17 11:28:00 4110

原创 一个模块的功能为何要单一,为何代码不要太长

     最近帮同事调试一个程序模块时,一个函数中400行代码,当时调试了下,错误很难精确定位,我当时第一个想法就是代码太长,一个函数多个功能,通常很难定位异常出在哪里,但是我要我回答,我当时还很难举个列子说服他,但是我现在想到了一个足以说明问题的例子:void Func(){    ......    .....    view *a=new view;    view *b = new vie

2008-12-17 10:34:00 918

原创 mfc 消息传递

消息分类 Windows的消息都是以WM_xxx为名,WM_的意思是”Windows Message”.MFC把消息分为三大类:# 命令消息(WM_COMMAND):命令消息意味着”使用者命令程序做某些操作”.凡是UI对象产生的消息都是这种命令消息,可能来自菜单或加速键或工具栏按钮,并且都以WM_COMMAND呈现.如何分辨来自各处的命令消息?SDK程序主要靠消息的wParam识别之,

2008-12-13 00:25:00 1549

原创 学习iphone开发的网站

http://www.cocoachina.com/index.php/archives/cocoachina_103.html

2008-12-12 09:38:00 577 1

原创 函数默认值的设置放在声明的时候,在定义的时候如果设置默认值,编译会出错

函数默认值的设置放在声明的时候,在定义的时候如果设置默认值,编译会出错

2008-12-11 16:20:00 1045 2

原创 成员变量前请加上this

    以前写代码总是觉得在成员变量前请加上this或者在成员函数前加上this太麻烦。但是当我们在类中声明了一个函数,可能是实例的成员函数,可能是类的方法。接着进行定义这个方法时,通常都是通过拷贝过去,很少有人会在定义的时候重新把这个方法敲一遍。问题常常处在我们想偷懒的地方,拷贝过去后,通常会忘记在这个方法前添加这个类的名字,这个函数里面如果有用到成员属性,那么在链接时出错提示,找不到某某变量,

2008-12-10 15:32:00 1729

原创 什么是托管代码

 在“过去”(只是几年前),使用C和C++编写代码的开发人员不得不自己进行内存管理。当不再需要已分配的内存空间时,必须将其释放,除非希望该内存被“泄漏”,内存泄漏将带来严重的性能问题。更糟糕的是因为直接处理指针,而它很容易破坏项目正在使用的内存。在很多情况下,这将导致很长时间的故障调试,因为通常实际看到出错的地方并不是内存初始被破坏的地方。人们认为C和C++语言难于掌握,主要是因为具有

2008-12-04 11:57:00 824

原创 #import 与#include区别

#import由#include衍生而来,不同的是它能保证一个头文件不被多次包含。

2008-12-04 10:21:00 818

原创 什么是多点触摸?

 传统的触控屏幕一次只能判断一个触控点,若同时有两个以上的点被触碰,就不能做出正确反应,或者说反应混乱了。多重触控的任务可以分解为两个方面的工作,一是同时采集多点信号,二是对每路信号的意义进行判断,也就是所谓的手势识别。 苹果就是使用的多点触摸屏,而且这个多点触摸是苹果公司的专利。o6~+rJ5m7t9o由于苹果手机没有传统键盘所有的操作都通过触摸屏完成,如果是在运行一些程序或游戏,需

2008-12-02 17:08:00 1159

翻译 Objective-C的语法格式

 最近做的一项目中要参照mac机上的代码,它使用的是其特有的 Objective-C的语言,由于需要,所以自己找资料了解了下,并参照别人的文档写了一个小小的笔记。1 #import #include 包含头文件 @class String; 类前置申明 @interface NewClass : Object { @public int aValue; @protected

2008-12-02 16:48:00 1164

原创 如何搭建自己的iPhone Installer软件源

在Jailbreak(越狱)的iPhone手机中,用户可以自己安装使用开源SDK开发的第三方软件。目前国内几乎所有的iPhone或者iPod Touch都有安装Installer程序,有点类似linux上的apt工具,直接通过Wifi或者Edge即可从软件源下载并安装第三方软件。 本文简单介绍如何自己搭建iPhone Installer软件源,这样就可以将自己的iPhone软件发布出去让用

2008-12-02 16:24:00 1573

原创 什么是leopard?

 Leopard 是 Apple 公司出品的操作系统 Mac OS X 迄今为止最大的一次升级,Leopard 拥有300多种创新的功能,于2007年10月26日正式上市。 主要功能介绍: Desktop 从菜单栏到漂亮的新 Dock,Leopard 桌面注重的不仅仅是设计,更重要的是让你充分享受操作电脑的乐趣,并从中获益更多。 Finder 设想在你的 Mac 上浏览文件就像在 iTunes 中

2008-12-02 15:28:00 649

原创 什么是GCC

 GNU Compiler Collection

2008-12-02 13:50:00 575

原创 什么是Cocoa

Cocoa 是 Mac OS X 操作系统的应用程序环境之一,是与 Carbon 和 Java 处于同一层的环境。它包含一组面对对象的软件库以及一个运行环境,而且它还与其它的应用程序环境共用一个集成开发环境。 本篇编程主题延伸了这个定义,描述了 Cocoa 的意图,能力和物理形式。作为一个开发人员阅读此篇 Cocoa 功能介绍是理解 Cocoa 的最基础的第一步。

2008-12-02 12:11:00 829

原创 ipod touch 与iphone区别

     一个是手机,一个是播放器

2008-12-02 12:06:00 848

原创 什么是内存泄露

分配了内存而没有释放,逐渐耗尽内存资源,导致系统崩溃。 内存泄露是指程序中间动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分内存不可用的情况,重起计算机可以解决,但是也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件引起的。

2008-12-01 23:01:00 641

原创 什么是 EDGE

EDGE是英文Enhanced Data Rate for GSM Evolution 的缩写,即增强型数据速率GSM演进技术。EDGE是一种从GSM到3G的过渡技术,它主要是在GSM系统中采用了一种新的调制方法,即最先进的多时隙操作和8PSK调制技术。由于8PSK可将现有GSM网络采用的GMSK调制技术的信号空间从2扩展到8,从而使每个符号所包含的信息是原来的4倍。 之所以称EDGE为GPRS到

2008-12-01 16:53:00 1378

原创 什么是 WIFI

 WIFI: Wireless Fidelity,又称802.11b标准,它的最大优点就是传输速度较高,可以达到11Mbps,另外它的有效距离也很长,同时也与已有的各种802.11DSSS设备兼容。今夏最流行的本本——迅驰技术就是基于该标准的,无线上网已经成为现实。无线电波的覆盖范围广,基于蓝牙技术的电波覆盖范围非常小,半径大约只有50英尺左右约合15米 ,而Wi-Fi的半径则可达300英尺左右

2008-12-01 16:10:00 598

主板电路分析

文章对一款典型的主板电路进行了透彻的分析

2008-07-25

图书管理系统源码

图书管理系统源码,包括所有图片,代码,数据库,很完整。

2008-02-01

visio 必备宝典

使用VISIO画图时不可缺少得资料,所以叫必备宝典。

2008-01-09

空空如也

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

TA关注的人

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