随笔分类 -  windows 高级编程

摘要:木马和病毒的好坏很大程度上取决于它的隐蔽性,木马和病毒本质上也是在执行程序代码,如果采用独立进程的方式需要考虑隐藏进程否则很容易被发现,在编写这类程序的时候可以考虑将代码注入到其他进程中,借用其他进程的环境和资源来执行代码。远程注入技术不仅被木马和病毒广泛使用,防病毒软件和软件调试中也有很大的用途, 阅读全文
posted @ 2018-09-09 19:00 masimaro 阅读(448) 评论(0) 推荐(0) 编辑
摘要:title: VC++ 崩溃处理以及打印调用堆栈 tags: [VC++, 结构化异常处理, 崩溃日志记录] date: 2018 08 28 20:59:54 categories: windows 高级编程 keywords: VC++, 结构化异常处理SEH, 崩溃日志记录 我们在程序发布后总 阅读全文
posted @ 2018-08-28 23:31 masimaro 阅读(4182) 评论(0) 推荐(0) 编辑
摘要:在32位windows上只能看到最大3GB的内存空间,而且每个应用程序只能访问4GB的的内存,这个限制是windows独有的,为了使程序能够访问大于4GB的内存空间,需要使用AWE编程接口,同时需要开启PAE,让系统支持大于3GB的内存,开启PAE最大能支持128GB的内存。PAE开... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(794) 评论(0) 推荐(0) 编辑
摘要:windows堆管理是建立在虚拟内存管理的基础之上的,每个进程都有独立的4GB的虚拟地址空间,其中有2GB的属于用户区,保存的是用户程序的数据和代码,而系统在装载程序时会将这部分内存划分为4个段从低地址到高地址依次为静态存储区,代码段,堆段和栈段,其中堆的生长方向是从低地址到高地址,... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(676) 评论(0) 推荐(0) 编辑
摘要:内存管理是操作系统非常重要的部分,处理器每一次的升级都会给内存管理方式带来巨大的变化,向早期的8086cpu的分段式管理,到后来的80x86 系列的32位cpu推出的保护模式和段页式管理。在应用程序中我们无时不刻不在和内存打交道,我们总在不经意间的进行堆内存和栈内存的分配释放,所以内... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(2029) 评论(0) 推荐(0) 编辑
摘要:学习Windows程序设计也有一些时间了,为了记录自己的学习成果,以便以后查看,我希望自己能够坚持写下一系列的学习心得,对自己学习的内容进行总结,同时与大家交流。因为刚学习所以可能有的地方写不不正确,希望大家能够指出。在学习了一定的Windows API后我决定进入到一些基础的学习,希望能够学习一些... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(272) 评论(0) 推荐(0) 编辑
摘要:在Windows中枚举进程中的模块主要是其中加载的dll,在VC上主要有2种方式,一种是解析PE文件中导入表,从导入表中获取它将要静态加载的dll,一种是利用查询进程地址空间中的模块,根据模块的句柄来得到对应的dll,最后再补充一种利用Windows中的NATIVE API获取进程内... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(3642) 评论(1) 推荐(0) 编辑
摘要:在windows中进程只是一个容器,用于装载系统资源,它并不执行代码,它是系统资源分配的最小单元,而在进程中执行代码的是线程,线程是轻量级的进程,是代码执行的最小单位。 从系统的内核角度看,进程是一个内核对象,内核用这个对象来存储一些关于线程的信息,比如当前线程环境等等,从编程的角度... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(769) 评论(0) 推荐(0) 编辑
摘要:多任务,进程与线程的简单说明多任务的本质就是并行计算,它能够利用至少2处理器相互协调,同时计算同一个任务的不同部分,从而提高求解速度,或者求解单机无法求解的大规模问题。以前的分布式计算正是利用这点,将大规模问题分解为几个互不不相关的问题,将这些计算问题交给局域网中的其他机器计算完成,... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(368) 评论(0) 推荐(0) 编辑
摘要:操作系统中有些资源是不能由用户代码直接访问的,比如线程进程,文件等等,这些资源必须由系统级代码由RING3层进入到RING0层操作,并且返回一些标识供用户程序使用,一般调用某个函数陷入到内核,这样的函数叫做系统调用,而有些不直接陷入到内核,一般叫做系统API,linux中使用系统调用... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(460) 评论(0) 推荐(0) 编辑
摘要:为了程序的健壮性,windows 中提供了异常处理机制,称为结构化异常,异常一般分为硬件异常和软件异常,硬件异常一般是指在执行机器指令时发生的异常,比如试图向一个拥有只读保护的页面写入内容,或者是硬件的除0错误等等,而软件异常则是由程序员,调用RaiseException显示的抛出的... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(946) 评论(0) 推荐(0) 编辑
摘要:在windows平台,有一个简单的方法来追踪调用函数的堆栈,就是利用函数CaptureStackBackTrace,但是这个函数不能得到具体调用函数的名称,只能得到地址,当然我们可以通过反汇编的方式通过地址得到函数的名称,以及具体调用的反汇编代码,但是对于有的时候我们需要直接得到函数... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(900) 评论(0) 推荐(0) 编辑
摘要:在调用windows API时函数会首先对我们传入的参数进行校验,然后执行,如果出现什么情况导致函数执行出错,有的函数可以通过返回值来判断函数是否出错,比如对于返回句柄的函数如果返回NULL 或者INVALID_HANDLE_VALUE,则函数出错,对于返回指针的函数来说如果返回NU... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(568) 评论(0) 推荐(0) 编辑
摘要:在C/C++中内存泄漏是一个不可避免的问题,很多新手甚至有许多老手也会犯这样的错误,下面说明一下在windows平台下如何检测内存泄漏。 在windows平台下内存泄漏检测的原理大致如下。 1. 在分配内存的同时将内存块的信息保存到相应的结构中,标识为已分配 2. 当内存释放时在结构... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(2088) 评论(0) 推荐(0) 编辑
摘要:从NT内核开始,服务程序已经变为一种非常重要的系统进程,一般的驻守进程和普通的程序必须在桌面登录的情况下才能运行,而许多系统的基础程序必须在用户登录桌面之前就要运行起来,而利用服务,可以很方便的实现这种功能,而且服务程序一般不予用户进行交互,可以安静的在后台执行,合理的利用服务程序可... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(994) 评论(0) 推荐(0) 编辑
摘要:在上一篇的博文中,说了下老版本的线程池,在Vista之后,微软重新设计了一套线程池机制,并引入一组新的线程池API,新版线程池相对于老版本的来说,它的可控性更高,它允许程序员自己定义线程池,并规定线程池中的线程数量和其他一些属性。线程池使用线程池的使用主要需要下面的四步: 1. 创建... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(194) 评论(0) 推荐(0) 编辑
摘要:在一般的设计中,当需要一个线程时,就创建一个,但是当线程过多时可能会影响系统的整体效率,这个性能的下降主要体现在:当线程过多时在线程间来回切换需要花费时间,而频繁的创建和销毁线程也需要花费额外的机器指令,同时在某些时候极少数线程可能就可以处理大量,比如http服务器可能只需要几个线程... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(2096) 评论(0) 推荐(0) 编辑
摘要:纤程本质上也是线程,是多任务系统的一部分,纤程为一个线程准并行方式调用多个不同函数提供了一种可能,它本身可以作为一种轻量级的线程使用。它与线程在本质上没有区别,它也有上下文环境,纤程的上下文环境也是一组寄存器和调用堆栈。它是比线程更小的调度单位。注意一般我们认为线程是操作系统调用的最... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(2664) 评论(0) 推荐(1) 编辑
摘要:在Windows上创建进程是一件很容易的事,但是在管理上就不那么方便了,主要体现在下面几个方面: 1. 各个进程的地址空间是独立的,想要在进程间共享资源比较麻烦 2. 进程间可能相互依赖,在进程间需要进行同步时比较麻烦 3. 在服务器上可能会出现一个进程创建一大堆进程来共同为客户服务... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(1028) 评论(0) 推荐(0) 编辑
摘要:本文主要说明在Windows下操作文件的高级方法,比如直接读写磁盘,文件的异步操作,而文件普通的读写方式在网上可以找到一大堆资料,在这也就不再进行专门的说明。判断文件是否存在在Windows中并没有专门提供判断文件是否存在的API,替代的解决方案是使用函数GetFileAttribu... 阅读全文
posted @ 2017-10-24 20:55 masimaro 阅读(437) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示