qintangtao

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 31 下一页

2013年1月29日

摘要: lodsb、stosb(和lodsw、stosw和lodsd、stosd指令)1 -->lodsb 指令:从esi 指向的源地址中逐一读取一个字符,送入AL 中; (然后,可以先判断这个字符是什么字符,如0dh,0ah 之类等,再执行相应的操作); 2 -->stosb 指令:一般跟随在lodsb 指令后面,将AL 中的字符逐一写入edi 指向的目的地址; 3 当方向标志位D=0时,则esi自动增加;D=1时,esi自动减小。 类似有:-->如果是lodsw ,表明要处理的是字,而不是字符;则采用的相应指令是:stosw ;那么要判断的寄存器是AX,而不是AL 了.--> 阅读全文
posted @ 2013-01-29 10:24 qintangtao 阅读(819) 评论(0) 推荐(0)

2013年1月28日

摘要: 在执行一个PE文件的时候,windows 并不在一开始就将整个文件读入内存的,二十采用与内存映射文件类似的机制。也就是说,windows 装载器在装载的时候仅仅建立好虚拟地址和PE文件之间的映射关系。当且仅当真正执行到某个内存页中的指令或者访问某一页中的数据时,这个页面才会被从磁盘提交到物理内存,这种机制使文件装入的速度和文件大小没有太大的关系。但是要注意的是,系统装载可执行文件的方法又不完全等同于内存映射文件。当使用内存映射文件的时候,系统对“原著”相当忠实,如果将磁盘文件和内存映像比较的话,可以发现不管是数据本身还是数据之间的相对位置它丫丫的都是完全相同的。而我们知道,在装载可执行文件的时 阅读全文
posted @ 2013-01-28 22:11 qintangtao 阅读(3133) 评论(0) 推荐(2)

摘要: 这些函数由于设计的时候比较淳朴,并没有做任何的越界检测,主要容易"被溢出",只需要多设点检查边界,即安全。函数严重性解决方案gets最危险使用 fgets(buf, size, stdin)。这几乎总是一个大问题!strcpy很危险改为使用 strncpy。strcat很危险改为使用 strncat。sprintf很危险改为使用 snprintf,或者使用精度说明符。scanf很危险使用精度说明符,或自己进行解析。sscanf很危险使用精度说明符,或自己进行解析。fscanf很危险使用精度说明符,或自己进行解析。vfscanf很危险使用精度说明符,或自己进行解析。vspri 阅读全文
posted @ 2013-01-28 13:41 qintangtao 阅读(4425) 评论(0) 推荐(1)

摘要: 函数作用:函数wsprintf()将一系列的字符和数值输入到缓冲区。函数原型:int wsprintf( LPTSTR lpOut, LPCTSTR lpFmt,.....);参数:lpOut:指向一个缓冲区来接收格式化输出,缓冲区最大为1024个字符。lpFmt:指向一个'\0'为结束的字符串,其中包含格式控制字符。除了普通的ASCII字符,每个格式控制字符对应后边每个参数的值。...:一个或多个可选参数。参数的数量和类型取决于在lpFmt参数的对相应的格式控制字符。返回值:如果函数成功,返回值是存储在输出缓冲区的字符数,不包括终止空字符: '\0'。如果函数 阅读全文
posted @ 2013-01-28 12:29 qintangtao 阅读(652) 评论(0) 推荐(0)

摘要: 函数作用:该函数创建一个Open公共对话框,使用户指定驱动器、目录和文件名、或使用户打开文件。函数原型:BOOL GetOpenFileName(LPOPENFILENAME Ipofn);参数:Ipofn:指向包含初始化对话框的信息的一个OPENFILENAME结构。当OpenfileName函数返回时,此结构包含有关用户文件选择的信息。返回值:如果用户指定了一个文件名,点击OK按钮,返回值为非零。由 OPENFILENAME 结构的 IPstrFile 成员指向的缓冲区含有全路径和用户指定的文件名。如果用户取消或关闭 Open 对话框或错误出现,返回值为零。若想获得更多的错误信息,请调用 阅读全文
posted @ 2013-01-28 11:39 qintangtao 阅读(10017) 评论(0) 推荐(0)

2013年1月27日

摘要: 简要说明:BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit(我们这里使用24bit)。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。1.24位位图结构定义1.1文件头结构定义typedef struct tagBITMAPFILEHEADER{ WORD bfType; // 位图文件的类型,必须为BM(1-2字节) DWORD bfS.. 阅读全文
posted @ 2013-01-27 14:47 qintangtao 阅读(3195) 评论(0) 推荐(0)

摘要: offset 和 addr 之间有如下区别:addr不可以处理向前引用,offset则能。所谓向前引用是指:标号的定义是在invoke 语句之后,譬如在如下的例子:invoke MessageBox,NULL, addr MsgBoxText,addr MsgBoxCaption,MB_OK......MsgBoxCaption db "Iczelion Tutorial No.2",0MsgBoxText db "Win32 Assembly is Great!",0如果您是用 addr 而不是 offset 的话,那 MASM 就会报错。addr可以 阅读全文
posted @ 2013-01-27 01:06 qintangtao 阅读(856) 评论(0) 推荐(0)

摘要: 比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 4 现在栈上就有了4各字节的空间,这就是你的局部变量。 接下来,你执行mov LocalVar, 4,那么实际的指令又是什么?是这样: mov dword ptr [ebp-4], 4 于是,这个局部变量的“地址”就是ebp-4——显然,它不是一个固定的地址。现在需要将它的“地址”作为参数传给某个函数,你这样写: invoke/call SomeFunc, addr Local... 阅读全文
posted @ 2013-01-27 01:02 qintangtao 阅读(1674) 评论(0) 推荐(0)

2013年1月26日

摘要: 阅读全文
posted @ 2013-01-26 23:03 qintangtao 阅读(377) 评论(0) 推荐(0)

摘要: 一、关于寄存器寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会。EAX是WIN32 API 默认的返回值存放处。ECX是LOOP指令自动减一的寄存器。ESP是堆栈指针。EBP经常用来在堆栈中寻址。ESI好像常常用在指针寻址中,EDI不大清楚。二、关于内存寻址WIN32中内存是平坦的,对于每个程序来说都可以使用2G范围的地址,但各个程序之间并不会干扰,这是因为各个程序所使用到的物理内存被Windows自行安排,不会互相覆盖,而且一个程序不会随意地访问到另一个程序的地址空间。 阅读全文
posted @ 2013-01-26 22:59 qintangtao 阅读(414) 评论(0) 推荐(0)

上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 31 下一页