E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
【Windows核心编程】
dll劫持技术
DLL劫持技术也不是什么新技术,记得在《
Windows核心编程
》中也有提及相关技术。可是对我们广大初学者来说,DLL劫持技术就显得很神秘了,本系列教程将
chaojichaoachao
·
2015-07-15 17:00
《
Windows核心编程
》---Windows服务
Windows服务(Services),是一些运行在WindowsNT、Windows2000和WindowsXP等操作系统下用户环境以外的程序。它不同于一般的可执行程序,不需要系统登录便可以运行,以完成某些特定的功能。服务提供了管理能力,可以将后台程序转换成服务,然后就可以用命令或者在系统启动用户登录之前启动,并且也可以暂停、恢复和终止。服务信息在注册表中维护。为了能够在系统中正确运行,在创建
zdpyly21
·
2015-07-14 16:00
Hook DirectX 在War3 魔兽争霸界面写屏
《
Windows核心编程
》中有关于hookapi的描述,以前都是——先改写原函数的前5个字节,跳转到自己的函数,还原原函数,调用,结束。
duyanbin68
·
2015-06-28 17:10
编程
windows核心编程
DLL技术
注:本文章转载于网络,源地址为:http://blog.csdn.net/ithzhang/article/details/7051558 本篇文章将介绍DLL显式链接的过程和模块基地址重定位及模块绑定的技术。 第一种将DLL映射到进程地址空间的方式是直接在源代码中引用DLL中所包含的函数或是变量,D
·
2015-05-18 18:00
windows
【
Windows核心编程
学习笔记】远程注入DLL
远程注入DLL一、概述为了隐藏自身的进程信息,我们希望将进程作为一个合法进程的线程运行。由于系统进程间不允许直接操作资源,因而我们需要在合法进程内部创建一个线程,为其指定要执行的代码。一种简单的方式是令远程线程载入一个我们编写的DLL,通过DllMain()函数执行我们需要的代码。基本思路是将LoadLibrary()函数作为一个线程函数来调用:CreateRemoteThread()---->L
guyue35
·
2015-05-08 09:00
操作系统
Windows核心编程
---动态链接库(XX.dll)与静态库(XX.lib)
最近细读了
Windows核心编程
的内存管理与动态链接库部分,虽然有些人对Windows未来说三道四,但不得不承认微软windows系统的强大功能,以及其深邃的架构设计思想,令人钦佩。
gggg_ggg
·
2015-05-06 10:00
windows
kernel
内存管理
library
库
Windows核心编程
--Unicode与ANSI
自WindowsNT开始,Windows的所有版本都完全使用Unicode来构建。Windows的所以核心函数(创建窗口、显示文本、进行字符串处理等)都需要Unicode字符串。调用Windows函数时,如果想他传入一个ANSI字符串(有单字节组成的一个字符串),那么函数首先把字符串转换为Unicode,再把结果传给操作系统。如果希望函数返回ANSI字符串,那么希望寒素返回ANSI字符
gggg_ggg
·
2015-04-29 10:00
重读
Windows核心编程
--CreateProcess
先来看看CreateProcess的定义BOOLCreateProcess(PCTSTRpszApplicationName,PTSTRpszCommandLine,PSECURITY_ATTRIBUTESpsaProcess,PSECURITY_ATTRIBUTESpsaThread,BOOLbInheritHandles,DWORDfdwCreate,PVOIDpvEnvironment,PC
dvstter
·
2015-04-26 23:27
重读Windows核心编程
几种C++ std::string和std::wstring相互转换的转换方法
第一种方法:调用WideCharToMultiByte()和MultiByteToWideChar(),代码如下(关于详细的解释,可以参考《
windows核心编程
》):#include#includeusingnamespacestd
wwl33695
·
2015-04-21 09:46
几种C++
几种C++ std::string和std::wstring相互转换的转换方法
第一种方法:调用WideCharToMultiByte()和MultiByteToWideChar(),代码如下(关于详细的解释,可以参考《
windows核心编程
》):#include#includeusingnamespacestd
wwl33695
·
2015-04-21 09:46
几种C++
几种C++ std::string和std::wstring相互转换的转换方法
第一种方法:调用WideCharToMultiByte()和MultiByteToWideChar(),代码如下(关于详细的解释,可以参考《
windows核心编程
》):#include#includeusingnamespacestd
wwl33695
·
2015-04-21 09:46
几种C++
std::string和st
程序设计语言
几种C++ std::string和std::wstring相互转换的转换方法
第一种方法:调用WideCharToMultiByte()和MultiByteToWideChar(),代码如下(关于详细的解释,可以参考《
windows核心编程
》):#include#includeusingnamespacestd
wwl33695
·
2015-04-21 09:26
几种C++
几种C++ std::string和std::wstring相互转换的转换方法
第一种方法:调用WideCharToMultiByte()和MultiByteToWideChar(),代码如下(关于详细的解释,可以参考《
windows核心编程
》):#include#includeusingnamespacestd
wwl33695
·
2015-04-21 09:26
几种C++
std::string和st
程序设计语言
几种C++ std::string和std::wstring相互转换的转换方法
第一种方法:调用WideCharToMultiByte()和MultiByteToWideChar(),代码如下(关于详细的解释,可以参考《
windows核心编程
》):#include#includeusingnamespacestd
wwl33695
·
2015-04-21 09:26
几种C++
windows核心编程
之使用线程APC回调安全退出多个等待线程
本文主要介绍
windows核心编程
中介绍的一种安全退出线程方式:使用可等待API等待内核对象触发
mfcing
·
2015-03-16 12:00
《
Windows核心编程
》---图形用户界面之窗口<转>
图形用户界面之---窗口: 主函数一般是: /************************************************************************* * WinMain * 功能:程序入口点,调用InitApplication,InitInstance,进行消息循环 * 参数:hinstance---应用程序本次运行实例
美丽的小岛
·
2015-03-16 09:00
windows
Windows核心编程
笔记(7)----内核模式下的线程同步
1、内核对象同步与用户模式下同步对比使用内核对象的唯一缺点就是性能,调用内核对象函数时,调用线程必须从用户模式切换到内核模式,这种切换是相当耗时的。内核对象(进程、线程、作业)要么处于触发态,要么处于未触发状态。进程内核对象在创建时总是处于未触发状态,当进程终止时,操作系统会自动使进程内核对象变成触发状态。当进程内核对象处于触发状态后,将永远保持这种状态,再也不能变回未触发状态。2、等待内核对象W
mfcing
·
2015-03-01 10:00
Windows核心编程
之创建可等待定时器及其APC回调
概述创建可等待定时器是Windows内部线程同步的方式之一,本文简单讲述如何使用这一内核对象进行线程同步。使用方法创建对象://创建事件内核对象,默认未触发状态 HANDLEhTimer=CreateWaitableTimer(NULL,TRUE,NULL);设置对象属性:CreateWaitableTimer创建完成后内核对象处于未触发状态,需要使用API BOOLWINAPISetWaitab
mfcing
·
2015-02-27 17:00
windows 全局hook
最近有用到全局hook,其实可参考
windows核心编程
,全局hook也是Dll注入的一种方式。
victor1960
·
2015-02-11 19:36
hook
全局hook
windows 全局hook
最近有用到全局hook,其实可参考
windows核心编程
,全局hook也是Dll注入的一种方式。
victor1960
·
2015-02-11 19:36
hook
全局hook
windows
异步设备IO 《
windows核心编程
》第10章学习
异步IO操作与同步操作区别: 在CreateFile里的FILE_FLAG_OVERLAPPED标志 异步操作函数LPOVERLAPPED参数 接收IO请求完成通知 触发设备内核对象 缺点:同一个设备内核对象有可能进行多次读写操作,这样第一个完成这个设备内核对象就会被触发,所以这种方式不可以使用于这种情形 void Test1() { HAND
·
2015-02-06 23:00
windows
Windows核心编程
笔记(6)----用户模式下的线程同步
1、原子锁使用InterlockedExchangeAdd函数来实现原子增长,InterlockedExchange\InterlockedExchangePointer用来交换两个变量的值,InterlockedCompareExchange对比数值,相等则交换(对应的InterlockedCompareExchangePointer)。对应的还有64位函数。InterlockedIncreme
mfcing
·
2015-01-29 15:00
Windows核心编程
笔记(5)----线程调度,优先级
1、操作系统线程调度过程每个线程都有一个上下文CONTEXT结构体,保存在线程的内核对象中,这个上下文中保存了线程上一次执行时CPU寄存器的状态。每隔固定时间,Windows会查看所有当前存在的线程内核对象,其中只有一些是可调度的。Windows在可调度的线程中选择一个,并将上次保存到线程上下文中的数据载入CPU寄存器中。(上下文切换)CPU时间片到后,Windows移出这个线程,把CPU寄存器信
mfcing
·
2015-01-28 11:00
Windows核心编程
笔记(4)----线程
1、进程与线程进程是惰性的,从来不执行任何东西,它只是一个线程的容器。线程必定是在某个进程的上下文中创建的,而且其生命周期都在该进程中。因为句柄表是针对每一个进程的,因此同一个进程中的多个线程可以共享内核对象句柄。进程运行需要占用许多的内存资源(加载DLL等),进程只需要一个内核对象和一个进程栈,无需占用多少内存。2、终止线程的几种方式:2.1线程函数返回(强烈推荐)2.2通过ExitThread
mfcing
·
2015-01-27 15:00
Windows核心编程
笔记(3)----作业
/*1、如果进程已经与一个作业相关联,就无法将当前进程及其任何子进程从作业中移除,这个安全特性可以保证 /*进程无法摆脱对它施加的限制。 /*2、在调试程序时,调试器是从资源管理器启动的,程序会从调试器继承带“PCA”前缀的作业。因此,调试程序 /*时总是显示进程已经加入了作业。使用命令行来运行程序时就不会有这个问题了。 /*3、关闭一个作业对象,并不会终止作业内所有的进程。作业对象实际上只是加了
mfcing
·
2015-01-26 15:00
[Windows]_[初级]_[创建独立子进程和读取子进程的输出]
《
Windows核心编程
》进程章节.代码:#include"test_shellrun.h" #include #inc
infoworld
·
2015-01-19 22:00
windows
输出
readfile
子进程
CreatePipe
Windows核心编程
笔记(2)----进程
6进程实例句柄6.1每一个EXE或者DLL被加载到内存中后,都会被赋予一个独一无二的句柄(HINSTANCE),该句柄在WinMain函数调用时传入。获取应用程序相关信息(资源、路径)时,有的需要传入HINSTANC有的需要传入HMODULE,实际上HINSTANC与HMODULE完全是一回事,这是16位Windows系统上不同数据类型造成的。WinMain函数的第一个参数:实例句柄是如何传递进来
mfcing
·
2015-01-14 14:00
【转】一个简单的C#死锁程序
://blog.csdn.net/hulihui/article/details/3319948(不过原文部分有错,我进行了修改) Jeffrey Richter在《
Windows
北极的。鱼
·
2015-01-13 10:00
C#
Windows核心编程
笔记(1)----句柄
最近工作比较闲了,一直没来得及看的核心编程最近开始看了,分享下笔记。1、内核句柄用完不释放一定会造成内存泄漏吗?不一定,内核句柄在进程退出时会被系统释放掉(遍历内核句柄表,只要每个句柄指向的内核对象的引用计数为0,内核就会销毁该对象,适用于所有的内核对象、资源(GDI对象在内)、内存块);2、内核对象如何关闭?调用CloseHandle(),内核会查找该进程的句柄表,如果没找到该句柄,返回FALS
mfcing
·
2015-01-12 14:00
windows
核心编程
Windows提升进程权限
Windows提升进程权限文章一:在枚举/结束系统进程或操作系统服务时,会出现权限不足而失败的情况,这时就需要提升自己进程到系统权限,其实提升权限的代码很简单的,看过的最经典的应该是《
WINDOWS核心编程
机器视觉001
·
2015-01-03 15:47
Visual
C++
我的
Windows核心编程
——完成端口+套接字 图解
========================声明============================本文原创,转载请注明作者和出处,并保证文章的完整性(包括本声明)。本文不定期修改完善,为保证内容正确,建议移步原文处阅读。本文链接:http://blog.csdn.net/wlsgzl/article/details/42190759======================没图说个JB
wlsgzl
·
2014-12-27 09:00
windows
套接字
iocp
完成端口
核心编程
第二十九篇:USER MODE DLL开发过程中的调试技巧心得分享
写代码,实现具体的功能这类初等工作,对于大多数软件开发工程师来讲,只是时间与工作量上的问题,具体的WINDOWSDLL的知识点,本人参考了JeffreyRichter的《
WINDOWS核心编程
》中的DLL
u013140088
·
2014-12-10 10:00
debugging
【
windows核心编程
】 第四章(2) 进程
windows核心编程
第四章(2)进程 6、系统版本 BOOL GetVersionEx(POSVERSIONINFOEX pVersionInformation);在win7+VS2010环境下,如果传
cuihao
·
2014-12-01 15:00
【
windows核心编程
】 4 进程
【1】windows程序分为GUI程序好CUI程序,即GraphicalUserInterface和ConsoleUserInterface在VisualStudio中,GUI程序的链接开关是/SUBSYSTEM:WINDOWS,GUI程序的链接开关是/SUBSYSTEM:CONSOLE这是一个控制台程序的设置。 windows程序的入口有以下两种:1IntWINAPI_tWinMain(
cuihao
·
2014-12-01 15:00
【
windows核心编程
】 第八章 用户模式下的线程同步
Windows核心编程
第八章用户模式下的线程同步 1、线程之间通信发生在以下两种情况:① 需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性② 一个线程需要通知其他线程某项任务已经完成
cuihao
·
2014-12-01 15:00
【
windows核心编程
】IO完成端口(IOCP)复制文件小例前简单说明
1、关于IOCP IOCP即IO完成端口,是一种高伸缩高效率的异步IO方式,一个设备或文件与一个IO完成端口相关联,当文件或设备的异步IO操作完成的时候,去IO完成端口的【完成队列】取一项,根据完成键(CompleteKey)来判断是哪个设备或文件的操作完成,然后再根据实际情况进行处理。 2、相关API和数据结构 将一个已完成的IO通知追加到IOCP的【完成队列】中 BOOL Post
cuihao
·
2014-12-01 15:00
【
windows核心编程
】 第三章 内核对象
第三章 内核对象 1、内核对象用来管理进程、线程、和文件等许多类的大量资源。用到内核对象的地方:访问令牌环(acesstoken)对象、事件对象、文件对象、文件映射对象、I/O完成端口对象、作业对象、邮件槽(mailslot)对象、互斥量(mutex)对象、管道(pipe)对象、进程对象、线程对象、信号量(semaphore)对象、可等待的计时器(waitable timer)对象、线程池工厂(t
cuihao
·
2014-12-01 15:00
【
windows核心编程
】 第五章 作业
Windows核心编程
第五章作业 1、作业可以看成是进程的容器,可以有多个进程运行在作业中,便于把这组进程看作一个整体来处理,可以对作业(中的进程)进行限制,即限额。
cuihao
·
2014-12-01 15:00
【
windows核心编程
】第二章 字符和字符串处理
第二章字符和字符串处理 1、几种字符集尽量使用Unicode来代替ANSI字符串 关于双字节字符集(double-bytecharacterset,DBCS),双字节字符集中,一个字符串中每个字符由一个或两个字节组成,处理起来不方便。 关于UTF-8,UTF-8的编码规则是将一些字符编码为1字节,一些为2字节,一些为3字节,一些为4字节;非常流行,但对值为0x0800及以上的大量字符进行编码的时候
cuihao
·
2014-12-01 15:00
【
windows核心编程
】使用远程线程注入DLL
前言该技术是指通过在【目标进程】中创建一个【远程线程】来达到注入的目的。创建的【远程线程】函数为LoadLibrary,线程函数的参数为DLL名字,想要做的工作在DLL中编写。 示意图如下: 相关API1、创建远程线程//该函数除了第一个参数为目标进程句柄外//其他参数均和CreateThread一样 HANDLEhThread=CreateRemoteThread(__inHANDL
cuihao
·
2014-12-01 15:00
【
windows核心编程
】 第四章(1) 进程
第四章进程1、windows支持两种应用程序:GUI程序和CUI程序,即图形用户界面程序和控制台应用程序。在VisualStudio中,可以使用项目属性的连接器开关设置选择哪种程序,/SUBSYSTEM:CONSOLE和/SUBSYSTEM:WINDOWS当运行应用程序时操作系统会的加载程序会检查这个可执行文件的头,并获取这个子系统值。 我们知道,main函数之前的全局变量和全局对象会在进入mai
cuihao
·
2014-12-01 15:00
【
windows核心编程
】DLL相关(1)
DLL相关的东西 1、DLL的加载方式隐式:#pragmacomment(lib,"XX.lib");编译器去查找名为XX.dll的DLL,除了名字相同,该DLL和该LIB的GUID也相同。 显式:HINSTANCE hInst=LoadLibrary(TEXT("XX.dll"));if(NULL==hInst) retrun; HINSTANCEhInst=LoadLibrary(TEXT(
cuihao
·
2014-12-01 15:00
【
windows核心编程
】DLL相关(3)
DLL重定向因为DLL的搜索路径有先后次序,假设有这样的场景:App1.exe使用MyDll1.0.dll,App2.exe使用MyDll2.0.dll,MyDll1.0和MyDll2.0是同一个DLL的两个版本,1.0为旧版本,2.0为新版本。而如果MyDll2.0.dll的存放路径的优先次序比较靠前时,那么App1.exe就会去加载MyDll2.0.dll,这就可能引发DLL地狱问题,因此D
cuihao
·
2014-12-01 15:00
【
windows核心编程
】第十七章 内存映射文件之一
1映射到内存的可执行文件和DLL系统预定一块足够大的地址空间来容纳.exe文件,待预订的地址空间区域的具体位置已经在PE文件中(这里是exe)中指定了,默认情况下,.exe文件的基地址是0x00400000(对运行在64位windows下的64位程序来说,这个地址可能会有所不同。)但是,只需要在构建exe时使用/BASE链接器开关就可以为自己的应用程序指定一个不同的地址。系统会对地址空间区域进行
cuihao
·
2014-12-01 15:00
【
windows核心编程
】一个API拦截的例子
API拦截修改PE文件导入段中的导入函数地址为新的函数地址这涉及PE文件格式中的导入表和IAT,PE文件中每个隐式链接的DLL对应一个IMAGE_IMPORT_DESCRIPTOR描述符结构,而每个IMAGE_IMPORT_DESCRIPTOR结构中的FirstThunk指向一个IMAGE_THUNK_DATA结构数组的首地址。在这个IAMGE_THUNK_DATA数组中,每一项对应一个该DL
cuihao
·
2014-12-01 15:00
【
Windows核心编程
】一个使用内存映射文件进行进程间通信的例子
本文实现了
Windows核心编程
第五版475页上的demo,即使用内存映射文件来在进程间通信。
cuihao
·
2014-12-01 15:00
【
windows核心编程
】DLL相关(2)
关于DLL的延迟加载 延迟加载DLL,使用的是隐式加载方式,当为exe使用的DLL指定为延迟加载的时候,连接器会将exe的【导入段】中去除该DLL的相关信息,同时在exe中嵌入一个新的【延迟加载段】表示要从该DLL中导入哪些函数。通过让对延迟加载函数的调用跳转到delayimp.lib中的__delayLoadHelper2函数,来完成对延迟加载的DLL的解析。当exe中第一次调用了一个延迟加载
cuihao
·
2014-12-01 15:00
【
windows核心编程
】 第四章(3) 进程
9管理员以标准用户权限运行时 Windowsvista之前的windows版本采用一刀切的方式,所有资源管理器的子进程都会得到由资源管理器进程授予关联的令牌环,这样不安全。 Windowsvista中,如果用户使用管理员这样的搞特权账户登录,除了与这个账户对应的的安全令牌之外,还有一个经过筛选的令牌(filteredtoken)。以后从包括windows资源管理器在内的第一个进程开始,这个筛选后的
cuihao
·
2014-12-01 15:00
【
windows核心编程
】线程局部存储TLS
线程局部存储TLS,ThreadLocalStorageTLS是C/C++运行库的一部分,而非操作系统的一部分。分为动态TSL和静态TLS 一、动态TLS应用程序通过调用一组4个函数来使用动态TLS,这些函数实际上最为DLL所使用。 系统中的每个进程都有一组正在使用标志(in-useflag),每个标志可被设置为FREE或者INUSE,表示该TLS元素是否正在使用。微软平台保证至少有TLS_MI
cuihao
·
2014-12-01 15:00
【
Windows核心编程
】重载类成员函数new / new[] / delete / delete[]
1//Heap.cpp:定义控制台应用程序的入口点。2//3 4#include"stdafx.h" 5#include 6#include 7#include 8usingnamespacestd;9 10int*p=newint(10);11 12 13classCSomeClass14{15protected:16staticsize_ts_Counts;17static
cuihao
·
2014-12-01 15:00
上一页
6
7
8
9
10
11
12
13
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他