win
文章平均质量分 81
Eugene800
这个作者很懒,什么都没留下…
展开
-
UAC Architecture
Applies To: Windows 7, Windows Server 2003 R2UAC architectureThe following diagram details the UAC architecture.ComponentDescriptionUser User performs operation requiring privilegeIf the opera...转载 2018-04-19 16:32:58 · 284 阅读 · 0 评论 -
Application Verifier使用起步
网上Application Verifier(以下称AppVer)关于的功能介绍已经很多,却鲜有介绍实际使用的文章(说真的,我很怀疑这些作者有没有用AppVeri测过程序),谨以此文总结我在使用过程中遇到的问题和解决方法。原创 2017-04-22 15:50:04 · 11214 阅读 · 1 评论 -
Exploring Heap-Based Buffer Overflows with the Application Verifier
转自:http://blogs.cisco.com/security/exploring_heap-based_buffer_overflows_with_the_application_verifierIsolating the root cause of a heap-based buffer overflow can be tricky at best. Thankfully,转载 2017-04-16 22:46:07 · 1119 阅读 · 0 评论 -
一种少见的Dll注入方式(基于MS 应用程序验证机制)
之前我转发了关于一篇Dll注入的文章:DoubleAgent: Zero-Day Code Injection and Persistence Technique 。文章中提到通过提供伪造的应用程序验证器(下文简称恶意VerifierDlls)注入进程的思路和windows镜像劫持(下文简称为IFEO)有点相似,都是通过修改注册表项来实现劫持进程的目的。HKEY_LOCAL_MACHINE\S原创 2017-04-29 23:33:45 · 2343 阅读 · 0 评论 -
Dynamic-Link Library Best Practices
转自MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/dn633971(v=vs.85).aspx主要记述了加载器在加载一个Dll时,会获得加载锁。在持有加载锁期间,DllMain中不能加载其他dll或者创建线程,否则容易死锁。Creating DLLs presents a number of challe转载 2017-04-10 22:26:59 · 474 阅读 · 0 评论 -
将代码从Setupapi移植到CfgMgr32,支持UWP
自从win10推出后,MS就开始策划它的Centennial计划----要求OEM厂商把它们开发的应用程序放到App Store中。由此,引发了一系列改动:注册表操作权限/读写文件权限...最烦人的是UWP不再支持setupapi函数簇,这个库和设备操作紧密相关啊。找了找MSDN,看到了相关的变通方法:Porting code from SetupApi to CfgMgr32This t原创 2016-12-07 15:20:33 · 1792 阅读 · 0 评论 -
Troubleshooting Device and Driver Installations
转自MSDNYou can use the following guidelines to either verify that your device is installed correctly or diagnose problems with your device installation:Follow the steps that are described in转载 2016-12-05 09:23:35 · 794 阅读 · 0 评论 -
driver verifier查找隐藏的内存泄露BUG
转自看雪论坛:http://bbs.pediy.com/showthread.php?t=186922 在原文上略作改动 verifier是微软提供的驱动测试工具,可以用来识别内存损坏、错误处理的 I/O 请求包 (IRP)、无效的直接内存访问 (DMA) 缓冲区占用、可能的死锁以及低资源模拟等情况。在开始菜单->运行中输入 verifier后,可以弹出如下菜单:选择默认选项转载 2016-10-17 16:23:17 · 3795 阅读 · 0 评论 -
C++虚表与多态
转自:http://blog.csdn.net/haoel前言 C++中 的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图转载 2016-09-30 15:44:47 · 1051 阅读 · 1 评论 -
[Win32]一个调试器的实现(十一)显示函数调用栈
本文讲解如何在调试器中显示函数调用栈,如下图所示: 原理首先我们来看一下显示调用栈所依据的原理。每个线程都有一个栈结构,用来记录函数的调用过程,这个栈是由高地址向低地址增长的,即栈底的地址比栈顶的地址大。ESP寄存器的值是栈顶的地址,通过增加或减小ESP的值可以缩减或扩大栈的大小。上一篇文章已经简略地介绍过在调用函数时线程栈上会发生什么事情,现在我们再来详细地看看这个过程:转载 2016-09-30 13:37:37 · 1336 阅读 · 0 评论 -
[Win32]一个调试器的实现(十)显示变量
上回介绍了微软的符号模型,有了这个基础知识,这回我们向MiniDebugger中添加两个新功能,分别是显示变量列表和以指定类型显示内存内容。显示变量列表用于列出当前函数内的局部变量或者全局变量;以指定类型显示内存内容用于读取指定地址处的内存内容,然后将这些二进制数据按照类型的格式解析成可读的内容并显示出来。如下面的截图所示: 使用lv命令显示局部变量时,每一列从左到右分别是:类型,名称转载 2016-09-30 13:33:12 · 1469 阅读 · 0 评论 -
[Win32]一个调试器的实现(九)符号模型
在接下来的文章中会讲解如何在调试器中显示局部变量和全局变量的类型和值。实现这个功能一定要有调试符号的支持,因为调试符号记录了每个变量的名称,类型,地址,长度等信息。这不是一件轻松的事情,因为你首先要对符号模型有一定的了解。所以本文的主要目的就是介绍DbgHelp中的符号模型。 符号模型这里所说的“符号模型”指的是各种符号之间的逻辑关系,虽然微软定义了各种不同格式的符号文件,但是它们使用转载 2016-09-30 13:19:19 · 1499 阅读 · 0 评论 -
[Win32]一个调试器的实现(八)单步执行
上回讲解了如何实现断点功能,这回讲解如何实现与断点紧密相关的单步执行功能。单步执行有三种类型:StepIn,StepOver和StepOut,它们的实现方式比较多样化,单独实现它们的话并不困难,但是将它们整合到一起就比较困难了,特别是加上断点功能之后,程序的逻辑更加难以理解。本文首先单独讲解每种单步执行的原理,最后讲解如何将它们整合到一起。这都是我个人的实现方法,大家可以用来参考。(注意:本文所讲转载 2016-09-30 11:55:08 · 2232 阅读 · 0 评论 -
用setupapi.dev.log查找驱动安装过程中的错误
错误难以避免,驱动安装后经常会见到YB,遇到这样的情况可以查看windows设备驱动安装日志: C:\Windows\inf\setupapi.dev.log.每次安装一个驱动,都以:>>> [Device Install (Hardwareinitiated) - STORAGE\VolumeSnapshot\HarddiskVolumeSnapshot2]>>> Sectio原创 2016-10-22 17:21:28 · 7439 阅读 · 0 评论 -
[Win32]一个调试器的实现(七)断点
断点是最基本和最重要的调试技术之一,本文讲解了如何在调试器中实现断点功能。什么是断点在进行调试的时候,只有被调试进程暂停执行时调试器才可以对它执行操作,例如观察内存内容等。如果被调试进程不停下来的话,调试器是什么也做不了的。要使被调试进程停下来,除了几个在特定时刻才发生的调试事件外,唯一的途径就是引发异常。断点正是用来达到上述目的的异常,在第三篇文章的异常代码表中,有一种EXCEPTI转载 2016-09-29 09:58:53 · 2132 阅读 · 0 评论 -
窗口的子类化与超类化——子类化是窗口实例级别的,超类化是在窗口类(WNDCLASS)级别的
转自:http://www.cnblogs.com/findumars/p/4680601.html1. 子类化 理论:子类化是这样一种技术,它允许一个应用程序截获发往另一个窗口的消息。一个应用程序通过截获属于另一个窗口的消息,从而实现增加、监视或者修改那个窗口的缺省行为。子类化是用来改变或者扩展一个已存在的窗口的行为、而不用重新开发的有效途径。想要获得那些预定义控件窗口类(按钮控转载 2017-05-14 23:23:37 · 592 阅读 · 0 评论 -
windbg远程调试方法
WinDBG的远程调试由服务端和客户端组成,和visualstudio类似。 被调试的机器是服务端(server), 我们做调试的机器是客户端(client)。 两台机器都需要安装WinDBG。第一步, 建立WinDBG server 端。使用 -server参数可以使WinDBG以服务器方式启动。 WinDBG可以用多种连接协议让客户端连接,比如命名管道(named pi转载 2017-05-28 00:55:47 · 3023 阅读 · 0 评论 -
User Account Control Step-by-Step Guide
Applies To: Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Storage Server 2008 R2, Windows VistaUser Account Control (UAC) is a security component that allows an administrator to en...转载 2018-04-03 17:19:11 · 497 阅读 · 0 评论 -
UAC Processes and Interactions
Windows 7 logon processThe following illustration demonstrates how the logon process for an administrator differs from the logon process for a standard user.By default, standard users and administra...转载 2018-04-08 14:43:52 · 333 阅读 · 0 评论 -
浅析Windows安全相关的一些概念
转自:浅析Windows安全相关的一些概念 Session我们平常所说的Session是指一次终端登录, 这里的终端登录是指要有自己的显示器和鼠标键盘等, 它包括本地登录和远程登录。在XP时代每次终端登录才会创建一个Session,但是在Vista后所有的服务程序都运行在Session 0, 其他终端会依次运行在session 1, session 2...Logon Session登录Sessi...转载 2018-03-21 16:56:47 · 365 阅读 · 0 评论 -
UIPI VS与Win7 共舞:用户界面特权隔离
在上文中,我们介绍了操作系统服务的Session 0隔离,通过Session 0隔离,Windows 7实现了各个Session之间的独立和更加安全的互访,使得操作系统的安全性有了较大的提高。从操作系统服务的Session 0隔离尝到了甜头后,雷德蒙的程序员们仿佛爱上了隔离这一招式。现在他们又将隔离引入了同一个Session之中的各个进程之间,带来全新的用户界面特权隔离。 用户界面特权隔离 在...转载 2018-03-22 18:51:16 · 652 阅读 · 1 评论 -
SECURITY_ATTRIBUTES 实现最低权限总结
SetSecurityDescriptorDacl函数可以用来设置DACL中的信息。如果一个DACL已经在security descriptor中存在,那么此DACL将被替换。值得注意的是MSDN中的Remarks中有这样的描述:There is an important difference between an empty and a nonexistent DACL. 1.When a ...原创 2018-03-12 18:15:59 · 4353 阅读 · 0 评论 -
obj文件打包为静态库,静态库中抽取obj文件
0.前言:尝试制作ida FLIRT签名文件,需要从lib文件中抽取obj文件,于是顺带着把生成lib文件的命令也看了一边。虽然我知道不会有人傻兮兮的放着IDE不用,而用命令行来生成库文件。1.准备环境:安装vc++6.0并进入编译器安装目录下"VC98\Bin"子目录,内有Link.exe/Lib.exe等二进制文件。我们将使用这两个文件打包/解包lib库。2.制作库文件:命原创 2017-12-31 22:01:54 · 3780 阅读 · 1 评论 -
深入C/C++之基于CheckStackVars的安全检查(VS2008)
转自:http://blog.csdn.net/masefee/article/details/5630154最近一直忙毕业的相关事情,加上工作,转眼间,又到月底了,之前承诺的每月一篇博文,前几天就一直在寻找到底要写什么,近两天又突然发现有很多东西可以写。本篇就先延续之前的一篇基于Cookie的安全检查机制(深入C/C++之基于Cookie的安全检查(VS2005))来介绍下另外一种在转载 2017-11-01 23:18:03 · 283 阅读 · 0 评论 -
How to Fix Signature Verification Failures Caused by Invalid PointerToRawData Field Values
转自:social.technet.microsoft.comBeginning with Windows Server 2008 and Windows Vista, there are components, such as the Windows Security Center, that will only execute code from a Portable Execut转载 2017-09-02 00:19:51 · 564 阅读 · 0 评论 -
static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
阅读目录(Content)隐式转换(implicit conversion)C风格显式转换(C style explicit conversion)上行转换(up-casting)与下行转换(down-casting)static_cast (expression) 静态转换dynamic_cast (expression) 动态转换reinterpret_cast (expression转载 2017-07-03 00:17:13 · 270 阅读 · 0 评论 -
IUnKNown接口——QueryInterface函数
转自:IUnKNown接口——QueryInterface函数客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。它在UNKNWN.H头文件定义 :如下Interface IUnknown{ virtual HRESULT __stdcall QueryInterface( REFIID rii转载 2017-07-03 00:02:08 · 1307 阅读 · 0 评论 -
windbg中所谓的上下文
30.7节简要的提到了windbg调试上下文的概念:如会话/进程/寄存器等上下文。为了深入了解背后的含义,我翻开windbg帮助文档,发现其对进程/寄存器上下文的解释最为晦涩。只能通过实际的练习,趟着石子过河,最后记录下自己的总结。 windbg中与进程上下文相关的命令是.process,与寄存器上下文相关的命令是.cxr,我逐一总结这两个命令的作用。1..process命令原创 2017-06-17 23:34:30 · 2519 阅读 · 0 评论 -
从DllMain下断点到LdrpCallInitRoutine
windbg中有个sxe命令,用于启动某类事件上的调试中断。例如sxe ld:kernel32.dll可以在exe加载kernel32.dll时中断到调试器。不过,一般情况下,exe无法捕获kernel32.dll加载的事件。因为当windbg启动捕获到ibp事件(初始断点)而中断到调试器后,exe启动时所依赖的dll都已加载完毕(包括kernel32.dll)。如下面的清单,当windb原创 2017-04-27 23:48:38 · 1856 阅读 · 1 评论 -
OllyDbg学习---深入理解消息驱动原理(2)
转自:http://blog.sina.com.cn/s/blog_61d65e360100lgtf.html 笔者先要申明,这节知识都是笔者根据自己的知识积累和观察做出的猜测。既然是猜测,那么肯定有不准确的地方。不过笔者还是对自己的推论和猜测很有信心。同时感谢我的搭档刘飞,关于这节内容,我们俩经过了比较深入的讨论,最后一致感觉就现在的想法比较的合理,比较的说得通。因此我写出来与大家转载 2017-05-18 14:49:19 · 553 阅读 · 0 评论 -
整理OD学习之深入理解消息循环
原文转自:逆向工程-------OD学习之深入理解消息循环 本文略加整理。以下是原文部分:"今天我们一起深入探讨下带有对话框的消息循环。先看下图:今天我们就来研究这个图!!为了方便研究,我就选用看雪实例里的一个程序。从图上你可以看出一个主窗口,还有一个消息框。为了程序界面的简单,还请暂时把你看到的这个消息框当成对话框。这样一来你所看到的2个元素分别就是:主窗口和一个对话框。现原创 2017-05-17 23:52:19 · 2327 阅读 · 0 评论 -
[Win32]一个调试器的实现(六)显示源代码
上一篇文章介绍了调试符号以及DbgHelp的加载和清理,这回我们使用它来实现一个显示源代码的功能。该功能的实际使用效果如下图所示:该功能不仅仅是显示源代码,还要显示每一行代码对应的地址。实现该功能大概需要进行以下的步骤:①获取下一条要执行的指令的地址。②通过调试符号获取该地址对应哪个源文件的哪一行。③对于其它的行,通过调试符号获取它对应的地址。 第一步可以通过获取E转载 2016-09-29 09:49:06 · 1185 阅读 · 0 评论 -
Windows 8以后的Windows操作系统关闭Driver Verifier的方法(disable Driver Verifier)
Windows 8之前的Windows操作系统,如Windows 7, WindowsXP可以在启动时按F8键,然后选择进入安全模式,在安全模式中运行verifier.exe,手工关闭所有DriverVerify选项。但在Windows8即以后的Windows操作系统,为了实现快速启动,取消了按F8进入启动高级菜单,所以当系统出现问题的时候,很难进入安全模式。比如在启用DriverVerifier转载 2016-10-13 17:28:24 · 6170 阅读 · 1 评论 -
通过exe文件,获取程序版本号,公司名称等信息
//获取 文件版本号的 // pName _T("CompanyName"),_T("FileDescription"),_T("FileVersion"), // _T("InternalName"),_T("LegalCopyright"),_T("OriginalFilename"), // _T("ProductName"),_T转载 2016-01-07 15:40:26 · 1272 阅读 · 0 评论 -
Windows系统版本判定那些事儿
转自:http://blog.csdn.net/magictong/article/details/40753519前言本文并不是讨论Windows操作系统的版本来历和特点,也不是讨论为什么没有Win9,而是从程序员角度讨论下Windows获取系统版本的方法和遇到的一些问题。在Win8和Win10出来之后,在获取系统版本时,可能很多人都碰到了类似的问题,为什么以前工作得很好的API转载 2016-01-07 15:37:16 · 1147 阅读 · 0 评论 -
R3下用ZwQueryObject/ZwDuplicateObject关闭互斥体和解除文件占用
不少程序在运行时会创建/打开全局Mutex,来限制用户多开。百度上搜一圈下来,他们的实现基本是这样:int main(int argc, char* argv[]){ HANDLE hMtx = CreateMutex(NULL,false,"process"); //创建一个有名对象,可以在其他进程中访问 if(GetLastError() == ERROR_ALREADY_EXIS原创 2016-01-20 23:51:02 · 7708 阅读 · 3 评论 -
VS中的 MD/MT设置
VS系列工具作为目前微软主打的集成开发环境,在历经了近20多年的发展后,到如今已经可以说是Windows平台上各种IDE环境中的翘楚了。很多别的开发工具已经难望其项背了,如今VS2010也已经面市很长时间了,但是因为笔者囊中羞涩,无法升级硬件,所以也没有办法去进行那个180天的VS2010体验之旅了,实为憾事。当然这是别话,现在我主要使用的依然是VS2008,用它来开发我想要的东西。当然主要指使用转载 2015-12-17 19:50:02 · 632 阅读 · 0 评论 -
windows 进程堆结构梳理
为了写这篇博文,得借用张银奎所著的一书中第23章HiHeap.c作为demo程序。(我的环境是xp sp3+vc++6.0)#include "stdafx.h"#define _WIN32_WINNT 0x0501#include #include #include #include #include //#include //#include //HeapAllo原创 2015-09-13 23:24:22 · 2309 阅读 · 0 评论 -
vc++6对windows SEH扩展分析 一文拾遗
前一篇文章vc++6对windows SEH扩展分析 尚有遗漏,本篇加以补齐。 其实本文参考csdn上一篇名为,同时提出了一些质疑。 作者罗列了vc++6.0扩展的SEH节点的结构如下:struct _EXCEPTION_REGISTRATION { struct _EXCEPTION_REGISTRATION *prev; void (*handle原创 2015-08-12 20:44:39 · 976 阅读 · 0 评论 -
vc++6对windows SEH扩展分析
相传FS:[0]指向线程的异常处理链表。汇编高手们为了向链表中添加异常处理节点,通常会如下编码:push ExceptHandler 1)mov eax,fs:[0] 2)push eax 3)mov fs:[0],esp 4) 真是简单的4句话,够小鸟们领悟半天了。首先看异常处理块的定义:struct EXCEPTION_REGIS原创 2015-08-11 18:02:44 · 954 阅读 · 0 评论