
Windows九阳神功
Windows系统机制和常用开发技术的学习。
尚书左仆射
我喜欢按照不按套路出牌的套路出牌。
展开
-
实现远程代码注入
前面我写过DLL的注入代码(详见:DLL注入与卸载),但是也并非就一定要另外实现一个动态链接库再注入我们的所需操作。这次我们就直截了当一点,直接在目标进程中注入我们所需的代码来实现操控。要在目标进程中完成一定的功能,当然需要调用相关的API函数了,只是这次我们要使用的API出现在不同的DLL中。Kernel32.dll文件在每个进程中的地址是相同的,但这并不代表其他DLL文件在每个进程中的地址原创 2016-08-28 16:39:09 · 1431 阅读 · 2 评论 -
Windows钩子的使用
我们知道Windows中的窗口程序是基于消息,由事件驱动的,在某些情况下可能需要捕获或者修改消息,从而完成一些特殊的功能(MFC框架就利用Windows钩子对消息进行引导)。对于捕获消息而言,无法使用IAT或Inline Hook之类的方式去进行捕获,这就要用到接下来要介绍的Windows提供的专门用于处理消息的钩子函数。1. 挂钩原理Windows下的应用程序大部分都是基于消息机原创 2016-08-08 17:21:44 · 16125 阅读 · 1 评论 -
线程同步实现
线程同步是指同一进程中的多个线程相互协调工作达到一致性。当我们编写程序时,有时会使用多个代码段同时读取或修改相同地址空间中的共享数据。此时,操作系统中可能会出现一个代码段在读取数据,而另一个代码段却在修改数据的情况。这样的情况会导致程序发生读写错误,这显然不是我期望看到的。为了避免出现类似的情况,我们需要用到线程同步技术。即当一个线程对资源正在进行读写时,其它的线程则需等待。线程的同步常用的有原创 2016-08-07 16:27:40 · 594 阅读 · 0 评论 -
Windows多线程初探
线程是进程中的一个执行单位(每个进程至少有一个主线程),一个进程可以有多个线程,而一个线程只存在于一个进程中。在数据关系上属于一对多的关系。线程不占有系统资源,它所使用的资源全部由所属进程向系统申请。在多处理器中,不同的线程可以同时运行在不同的CPU上,这样可以提高程序的运行效率。除此之外,有些时候必须使用多线程。例如,杀毒软件在查杀病毒的时候,它需要一边扫描相关的磁盘文件,一边显示当前的扫描原创 2016-07-15 15:05:01 · 1615 阅读 · 0 评论 -
Windows进程控制
在Windows系统中,应用程序都以进程的形式存在于内存中。当运行一个程序的时候,操作系统就会将这个程序装入内存,并分配各种运行程序所需的资源,为进程创建主线程。系统也提供了任务管理器,可供我们使用。管理进程的界面如下:其中包含的内容一目了然,就没有必要讲解了。直接进入常用API。1. 进程的创建UINT WinExec( LPCSTR lpCmdLine,//指向原创 2016-07-14 19:30:39 · 5045 阅读 · 1 评论 -
Windows服务编程
先说明,本文不是编写服务,而是编程控制已有的服务。服务是一种程序类型,它在后台运行,服务程序通常可以在本地和通过网络为用户提供一些功能。服务程序可能是EXE程序,具有其单独的进程,也有可能是DLL文件依附于某个进程,更有可能是SYS文件而处于系统的内核之中。在Windows下,可以在“我的电脑”上单击鼠标右键,然后再弹出的菜单上选择“管理”,打开“计算机管理工具”,单击左面树形列表的“原创 2016-07-12 16:36:19 · 2892 阅读 · 0 评论 -
Windows注册表操作
注册表是Windows操作系统中一个重要的数据库,其中保存着操作系统和各种软件的重要信息。注册表是如此的重要,所以也是病毒和反病毒软件的兵家必争之地。注册表是Windows系统管理和维护的配置较为复杂的信息数据库,它以树状形式存储信息。可以通过“开始”->“运行”,在运行窗口中输入“regedit”,来打开Windows提供的“注册表编辑器”窗口。如下图所示:注册表由若干部分组原创 2016-07-09 11:42:56 · 4800 阅读 · 2 评论 -
windows消息发送与接收
Windows开发中一个重要的概念就是消息。能搞清楚消息的传递和处理,相信可以使我们对Windows程序有更深的理解。先把消息划分为3类:发送消息(Incomingsent message)、投递消息(Post message)、输入消息(Input message)。其中发送消息是非队列消息,而后两种是队列消息。在线程的消息队列中并不包括非队列消息,而只有队列消息才会在线程的消息队列中。原创 2016-07-02 21:37:01 · 7389 阅读 · 0 评论 -
windows下的内联hook实现
HOOK技术正如其名,就像是代码中放下的一个“钩子”,它在静静地等待捕获系统中的某个消息或动作。在编程技术中,钩子技术在DOS时代就已经存在了。在windows下,钩子按照实现技术的不同和挂钩位置的不同,其种类也是越来越多,但是设置钩子的本质却是始终不变的。那么钩子究竟有什么用?它能干的事非常多,例如输入监控、API拦截、消息捕获、改变程序执行流程等。杀毒软件会用HOOK技术钩住一些API函数原创 2016-05-19 18:17:51 · 6430 阅读 · 5 评论 -
Windows下向指定窗口模拟发送键盘消息
在操作系统中,鼠标和键盘的操作会被转换为相应的系统消息,窗口过程在接收到消息后会进行对应的处理。发送消息,我们可以使用SendMessage()和PostMessage(),所以,只要使用这两个函数来发送鼠标和键盘的相关消息就可以了。此外,还可以通过keybd_event()和mouse_event()两个专用的函数进行鼠标和键盘按键的模拟操作。下面是一个简单的向指定窗口发送消息的例子:1原创 2016-05-18 21:10:24 · 27375 阅读 · 1 评论 -
实现DLL的注入与卸载
在Windows系统下,为了避免各个进程相互影响,每个进程的地址空间都是被隔离的。在执行DLL注入时需要通过创建“远程线程”来实现。所谓“远程线程”,并不是跨计算机,而是跨进程的。简而言之,就是进程A在进程B中创建一个线程,这个线程就叫“远程线程”。要向其它进程中“注入”DLL就需要在目标进程中调用相应的API函数(LoadLibrary),可是目标进程不会自己“乖乖地”调用加载函数,这时候要原创 2016-05-15 19:10:53 · 9641 阅读 · 4 评论 -
使用C++操作mysql数据库
话不多说,直接进入主题。一.环境搭建本文所述是在32位win7,VS2013,mysql5.5下的实验情况,其它环境应该也是大同小异。首先,需要安装VS2013和mysql数据库。然后,打开VS2013开始配置mysql使用环境。1、新建win32控制台程序,此处就不多说了。2、在VS2013的菜单栏选择“项目——>属性”3、配置属性——>VC++目录——>包含目录原创 2016-05-15 11:49:19 · 2875 阅读 · 1 评论 -
DLL的简单实现及调用
DLL(Dynamic Link Library,动态连接库)是一个可以被其他应用程序调用的应用模块,其中封装了可以被调用的资源或函数。DLL属于可执行文件,他符合Windows系统的PE文件格式,不过他的运行是依附于EXE文件创建的进程来执行的,不能单独运行。一个DLL文件可以被多个进程所装载调用。DLL是动态连接库,相对应的,是静态连接库。动态连接库是在EXE文件运行时被加载执行的,而静原创 2016-05-14 16:47:16 · 2828 阅读 · 0 评论 -
VS2013下boost环境的搭建
BOOST 编译过程比较复杂,目前为了学习 BOOST,首先得搭建BOOST 开发环境。本文中所描述的是在Windows2007的32位机下基于VS2013版本的搭建过程。首先,请自行下载boost相关安装程序。如果是 32 位,下载 boost_1_55_0-msvc-12.0-32.exe;否则, boost_1_55_0-msvc-12.0-64.exe。随后安装相应的程序,程序安装过程原创 2016-05-14 12:34:02 · 1759 阅读 · 0 评论