Windows
zhou191954
这个作者很懒,什么都没留下…
展开
-
/NXCOMPAT编译选项 : 数据执行保护DEP
申明。文章仅代表个人观点,与所在公司无任何联系。概述 在安全编码实践一中我们谈到GS编译选项和缓存溢出。缓存溢出的直接后果就是可能导致恶意代码的远程执行。GS选项存在自身的局限,例如,有若干方法可以绕过GS选项的保护。 在这篇文章里,我们会介绍另外一个非常重要的安全特性:数据执行保护,即DEP-Data Execution Prevention,以及与之对应的NXC转载 2014-07-22 19:56:59 · 4253 阅读 · 0 评论 -
/SafeSEH编译选项 : 原理及绕过技术浅析
摘要:主要介绍SafeSEH的基本原理和SafeSEH的绕过技术,重点在原理介绍。关键词:SafeSEH;绕过技术;异常处理 目录前言SafeSEH的保护原理(1) 二进制层面(2) 系统层面怎么关掉编译器的SafeSEH支持怎样检测一个PE文件是否启用了SafeSEH绕过方法简介参考文献转载 2014-07-21 17:09:59 · 5569 阅读 · 1 评论 -
/DYNAMICBASE : ASLR绕过技术概览
1..覆盖返回地址为jmp esp,执行shellcode,当函数返回,返回地址被覆盖为jmpesp,导致执行shellcode 1)对付方法:引入Dep(data ExecutionPrevention 数据执行保护),堆,栈上的内存页属性为不可执行,执行会出错。 2)Anti-Dep:绕过Dep技术ROP转载 2014-07-21 22:02:47 · 1642 阅读 · 0 评论 -
虚拟机检测技术攻防
目录(?)[-]方法一通过执行特权指令来检测虚拟机方法二利用IDT基址检测虚拟机方法三利用LDT和GDT的检测方法方法四基于STR的检测方法方法五基于注册表检测虚拟机方法六基于时间差的检测方式方法七利用虚拟硬件指纹检测虚拟机anti VM的解决方法前言在当今信息安全领域,特别是恶意软件分析中,经常需要利用到虚拟机技术,以提高病毒分析过程的安全性以及硬件资源的节约性,转载 2015-02-05 11:38:41 · 989 阅读 · 0 评论 -
PageHeap的堆破坏检测原理
堆破坏所谓的堆破坏,是说没控制好自己的指针,把不属于你分配的那块内存给写覆盖了。这块内存可能是你程序的数据,也可能是堆的管理结构。那么这个会导致怎样的后果呢?可能的情况我们来yy下把程序里的计算结果覆盖了,这也许会让你重复看了N次代码,校验了N次计算逻辑也搞不明白为何计算结果还是有问题堆管理结构被破坏了,new/delete,或者malloc/free操作失败等等等等~堆破转载 2014-11-03 13:47:35 · 2040 阅读 · 0 评论 -
微软溢出防护功能介绍
DEP(Date Execution Prevention)数据执行保护:DEP通过处理器的(No eXecute)功能,查找内存中没有明确包含可执行代码的数据,找到这些数据后,NX将它们都标记为“不可执行”。以后如果某程序在内存中,试图执行这些带“不可执行”标记的代码,SP2将会自动关闭该程序。因此,假如你运行了一个已经染毒的软件,DEP就会把病毒代码标记为“不可执行”,这样就能阻止病毒在内存中转载 2014-09-19 14:49:06 · 694 阅读 · 0 评论 -
FS寄存器
FS寄存器指向当前活动线程的TEB结构(线程结构)偏移 说明000 指向SEH链指针004 线程堆栈顶部008 线程堆栈底部00C SubSystemTib010 FiberData014 ArbitraryUserPointer018 FS段寄存器在内存中的镜像地址020 进程PID024 线程ID02C 指向线程局部存储指针转载 2014-11-27 17:23:28 · 1400 阅读 · 0 评论 -
了解HEAP组织
HEAP的概念堆栈堆栈,在操作系统内存中有两种存储空间,一个是堆,一个是栈。堆主要用于存储用户动态分配的变量,而栈呢,则是存储我们程序过程中的临时变量。当然栈的作用远不止用作存储变量,但这不是我们这篇文章的讨论内容。 堆(HEAP)的分配,使用,回收都是通过微软的API来管理的,最常见的API是malloc和new。在往底层走一点呢,这两个函数都会调用HeapAlloc(R转载 2014-11-03 13:50:21 · 709 阅读 · 0 评论 -
深入探索Win32结构化异常处理
在Win32操作系统提供的所有功能中,使用最广泛而又没有公开的恐怕要数结构化异常处理( Structured Exception Handling ,SEH ) 了。当你考虑Win32结构化异常处理时,也许会想到__try、__finally和__except等术语。可能你在任何一本讲解Win32的好书上 都能找到关于SEH较为详细的描述,甚至Win32 SDK文档也对使用__try、__fi转载 2014-11-26 10:27:56 · 642 阅读 · 0 评论 -
Windows XP中的新型向量化异常处理
当我安装完Windows XP Beta(以前代号为“Whistler”)时,并没有指望能够看到许多新的API,结果却惊喜地发现我错了!在本月的专栏中,我就要讲述这些新增功能其 中之一——向量化异常处理(Vectored Exception Handling)。 当运行我在1997年11 月MSJ 杂志Under The Hood 专栏 中 介绍的PEDIFF程序时,我发现了向量化转载 2014-11-26 10:26:33 · 1279 阅读 · 0 评论 -
Heap Spray原理浅析
摘要:本文主要介绍Heap Spray的基本原理和特点、以及防范技术。关键词:Heap Spray、溢出攻击、漏洞利用、堆溢出 Heap Spray定义基本描述Heap Spray并没有一个官方的正式定义,毕竟这是漏洞攻击技术的一部分。但是我们可以根据它的特点自己来简单总结一下。Heap Spray是在shellcode的前面加上大量的slide code(滑板转载 2014-09-03 15:49:26 · 760 阅读 · 0 评论 -
BSTR、char*和CString转换
BSTR、char*和CString转换 (1) char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:char chArray[] = "This is a test"; char * p = "This is a test"; 或LPSTR p = "This is转载 2014-09-01 10:44:40 · 409 阅读 · 0 评论 -
CreateFileMapping在N个进程间共享一个HWND类型内存
Windows高深啊,做点东西要查来查去,把人脑创造性转成机器服务C/C++ code?1234567891011121314151617class CIPC{public:转载 2015-01-29 17:58:04 · 825 阅读 · 0 评论 -
创建用户桌面进程(突破Session 0隔离)
这里就引入了Windows Vista之后的Session 0隔离机制。有些服务可能需要在用户界面上显示对话框,或需要与用户的应用程序通讯,这种类型的功能“通常”属于Windows XP服务,因为在Windows XP中,这样做很容易。如果服务恰好需要显示某些用户界面对象,例如对话框,或者需要与应用程序通讯,则在Windows 7下运行可能会遇到问题。转载 2014-10-29 11:20:07 · 7854 阅读 · 5 评论 -
深入探索Windows 7下User Account Control
1.安全桌面 当我们在普通用户模式下,运行非系统信任软件的时候,就会弹出UAC提示,这和我们所用的安全软件的主动防御提示是相仿的。当UAC弹出时就会出现所谓的安全桌面,这个安全桌面又是什么东西呢? 安全桌面(Secure Desktop)就是Winlogon desktop,当Winlogon desktop处于激活状态的时候,任何其它进程都不能访问与桌面相关联的代码或者数转载 2014-10-29 11:08:53 · 755 阅读 · 0 评论 -
VS与Win7共舞:系统服务的Session 0隔离
隔离,是为了更好的保护。但是,众所周知的,隔离也会给我们的生活带来一些不便。在Windows 7中,操作系统服务的Session 0隔离,阻断了系统服务和用户桌面进程之间进行交互和通信的桥梁。通过Session 0隔离,虽然可以让操作系统更加安全,但是也给系统服务带来了不少兼容性的问题。系统服务在Windows 7上遇到的问题 操作系统服务是Windows操作系统中一套完整的转载 2014-10-29 10:59:54 · 816 阅读 · 0 评论 -
VS与Win7共舞:UAC与数据重定向
回想当年微软高调发布Windows Vista的时候,突出的兼容性问题成为其在推广时遇到的最大阻力,让Windows Vista“出师未捷身先死”,从而成为继Windows Me之后微软最失败的操作系统。有鉴于此,微软在进行Windows 7的开发的时候,将应用程序兼容性放在了前所未有的高度,提前两年就开始为Windows 7进行各种兼容性测试,同时在Windows 7上提供了Windows XP转载 2014-10-29 11:01:33 · 1079 阅读 · 0 评论 -
VS与Win7共舞:用户界面特权隔离
在上文(VS与Win7共舞:系统服务的Session 0隔离)中,我们介绍了操作系统服务的Session 0隔离,通过Session 0隔离,Windows 7实现了各个Session之间的独立和更加安全的互访,使得操作系统的安全性有了较大的提高。从操作系统服务的Session 0隔离尝到了甜头后,雷德蒙的程序员们仿佛爱上了隔离这一招式。现在他们又将隔离引入了同一个Session之中的各个进程转载 2014-10-29 11:04:11 · 658 阅读 · 0 评论 -
基于 Windows 7 的高低权限进程通信的研究与实现
与 Windows XP 以及 Windows Vista 相比,Windows 7 为用户提供了一个更易用、更简单、更安全的操作系统。在享受 Windows 7 便利的同时,偶尔会碰到在Windows XP系统上正常运行的程序却在 Windows 7 上出现非正常行为的兼容性问题。从 Windows Vista 开始,Windows操作系统提供了如下安全特性:用户帐户控制、强制完整性检测、用户界转载 2014-10-29 10:53:14 · 1715 阅读 · 0 评论 -
什么是SysWow64
64位的Windows并不是简单地把所有东西都编译成64位就万事大吉的。关于64位的CPU应该做成什么样子,Intel和AMD曾有各自的打算。AMD的回答直接了当:新的64位处理器,应该能在提高更高处理能力的同时,保持对32位应用程序的兼容性。而Intel则希望借此机会,把下一代的处理器,设计得更完美。于是,就有了AMD的x86-64(后被称为amd64)的处理器和Intel的IA-64(安腾)处转载 2014-10-29 11:05:41 · 1321 阅读 · 0 评论 -
浅析Windows安全相关的一些概念
Session我们平常所说的Session是指一次终端登录, 这里的终端登录是指要有自己的显示器和鼠标键盘等, 它包括本地登录和远程登录。在XP时代每次终端登录才会创建一个Session,但是在Vista后所有的服务程序都运行在Session 0, 其他终端会依次运行在session 1, session 2...Logon Session登录Session是指不同帐号的登转载 2014-10-27 10:12:46 · 1271 阅读 · 0 评论 -
TLSAlloc()
为什么要有TLS?原因在于,进程中的全局变量与函数内定义的静态(static)变量,是各个线程都可以访问的共享变量。在一个线程修改的内存内容,对所有线程都生效。这是一个优点也是一个缺点。说它是优点,线程的数据交换变得非常快捷。说它是缺点,一个线程死掉了,其它线程也性命不保; 多个线程访问共享数据,需要昂贵的同步开销,也容易造成同步相关的BUG。 如果需要在一个线程内部的各个函数调用都能访转载 2014-12-22 11:38:09 · 1479 阅读 · 0 评论 -
3种简单的键盘记录简单介绍
Ring3层键盘记录的实现 本文主要论述、对比了用户层主要的三种实现键盘记录的方法:利用钩子函数、轮询键盘消息和直接从输入设备获取数据。在木马程序中,键盘记录是不可缺少的一部分,因为它是窃取别人电脑上数据的关键部分,记录这些程序的账号、密码主要就是靠键盘记录实现的。然后再将获得的账号、密码发到某个指定的邮箱里或某个FTP或网站服务器上。 在用户层实现键盘记录远比在系统层实现简单,是比转载 2015-01-30 17:48:35 · 4258 阅读 · 0 评论 -
COM编程小结
编程小结 一、Com概念所谓COM(Componet ObjectModel,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。在COM规范下将能够以高度灵活的编程手段来开发、维转载 2015-04-02 18:44:47 · 2911 阅读 · 0 评论 -
最易懂的栈桢介绍
首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(地址地)。下图为典型的存取器安排,观察栈在其中的位置 入栈操作:push eax; 等价于 esp=esp-4,eax->[esp];如下图出栈操作:pop e转载 2015-03-12 16:50:11 · 1277 阅读 · 0 评论 -
document 方法:getElementsByName()与getElementById()、getElementsByTagName()的区别
document.getElementsByName() 是根据控件名称获取这个控件对象,因为控件名称可以相同,返回的是一个对象数组。 document.getElementById() 是根据控件ID获取这个控件对象,因为控件ID唯一,返回的是一个对象。 document.getElementsByTagName() 是根据控件TAG获取这个控件对象,返回的是一转载 2015-01-20 10:56:31 · 4132 阅读 · 0 评论 -
VS2005设置代码区域背景颜色
工具-选项弹出设置对话框 选择对话框左侧的环境选项下的字体和颜色选项环境 --... --字体和颜色 --...主要是修改显示项里的纯文本和标识符的项背景色我改的背景色是185 227 221背景色-#B9E3DD(185 227 221) 效果图转载 2014-12-31 14:54:14 · 3154 阅读 · 0 评论 -
InternetExplorer Object
InternetExplorer Object42 out of 82 rated this helpful Rate this topicControls an instance of Windows Internet Explorer through automation.Members TableThe following table lists转载 2015-01-19 13:59:24 · 1626 阅读 · 0 评论 -
跨越进程边界共享内核对象【复制对象句柄】
跨越进程边界共享内核对象有三种方法:对象句柄的继承性命名对象复制对象句柄复制对象句柄共享跨越进程边界的内核对象的最后一个方法是使用BOOL DuplicateHandle( HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHa转载 2015-02-04 11:15:45 · 768 阅读 · 0 评论 -
Win32 系统部分函数
一.GetSystemMetrics返回与windows环境有关的信息 void CDemoDlg::OnTest() { CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST); pListBox->ResetContent(); int nWidth = 0; int nHeight = 0;转载 2015-02-02 15:42:26 · 599 阅读 · 0 评论 -
GetKeyState、GetAsyncKeyState、GetKeyboardState的区别:
GetKeyState、GetAsyncKeyState、GetKeyboardState函数的区别:1、BOOL GetKeyboardState( PBYTE lpKeyState );获得所有的256个键(键盘按键、鼠标按键等等)的状态,lpKeyState是指向一个256bit的数组,存放所有键的状态。2、SHORT GetAsyncKeyState( int vKey )转载 2015-02-02 18:27:18 · 1068 阅读 · 0 评论 -
剪切板操作
// Funciton: // 拷贝数据到剪切板 // 从剪切板粘贴数据 // Data:2011/4/8 #include #include void SetDataToClip(void) { // 打开剪贴板 if (!OpenClipboard(NULL)|| !EmptyClipboa转载 2015-02-02 17:12:23 · 772 阅读 · 0 评论 -
递归和Windows系统的栈保护
Windows系统上创建线程可以使用CreateThread() API,这个API的原型是: HANDLE WINAPI CreateThread( __in LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in转载 2014-09-22 19:16:39 · 513 阅读 · 0 评论 -
UNICODE和ANSI间的相互转换
UNICODE和ANSI间的相互转换 ,主要通过以下两个函数进行转换:MultiByteToWideChar和WideCharToMultiByte。MultiByteToWideChar函数功能:该函数映射一个字符串到一个宽字符(unicode)的字符串。由该函数映射的字符串没必要是多字节字符组。函数原型:[cpp] view转载 2014-08-14 10:21:12 · 2019 阅读 · 1 评论 -
CreateProcess 内部实现
调用CreateProcessW 调用CreateProcessInternalW 参数检查 获取进程文件路径 调用BasepMapFile映射文件(内部调用NtCreateSection) 判断是否是一个DLL文件 判断子系统类型(只能是GUI和CUI中的一种) 是GUI时,则去掉CREATE_NEW_C转载 2014-09-22 14:18:04 · 1226 阅读 · 0 评论 -
Windbg+Vmware/VirutalBox内核调试加速工具VirtualKD
今天又想起来VirtualKD这个东西,试用了一下,真是爽坏了,可能我火星了~~很久以前就知道小喂有个VmKd工具,使用Vmware的后门指令直接拷贝数据来代替模拟串口,能大大提高调试时的数据传输速度。不过那个对VMware版本的依赖性太强,我的Vmware就没法用,所以很不爽得又放下了,很长一段时间也没关注过。最近翻资料时又找到index09同学的一篇文章,介绍了比Vmkd更好用的Vir转载 2013-03-06 07:49:53 · 936 阅读 · 0 评论 -
DbgPrint 输出格式
DbgPrint 输出1) 直接打印字符串。DbgPrint(“Hello World!”);2) 空结尾的字符串,你可以用普通得C语法表示字符串常量char variable_string[] = “Hello World”;DbgPrint(“%s”, variable_string);3) 空结尾的宽字符串(WCHAR类型)WCHAR st转载 2013-07-31 14:29:43 · 1127 阅读 · 0 评论 -
Win8下管理员权限运行脚本
1.在批处理的第一行加入:cd /d %~dp0 然后在批处理上右键选择使用管理员权限运行。2.右键任务栏,选择资源管理器,进程选项卡,显示所有用户的进程,结束explorer,文件-新建任务 explorer,此时选中“利用管理特权创建此任务".桌面显示完成后就可以直接双击批处理运行了。3.使用第三方提权工具,例如elevate ,用法elevate -c regsvr32转载 2013-05-20 17:51:13 · 1856 阅读 · 0 评论 -
Windows进程创建的流程分析
. 创建进程的大体流程: 创建进程的过程就是构建一个环境,这个环境包含了很多的机制 (比如自我保护, 与外界通信等等)。 构建这个环境需要两种“人”来协调完成(用户态和内核态),他们各有分工,其中用户态提供原料(提供创建的那些参数), 内核态负责来构建这个环境,由于环境是由内核态构建的,因此他持有这个环境的控制权, 而用户由于提供了原料, 因此他具有使用权。 内核态开始构建环境中的基转载 2013-07-11 00:09:11 · 1016 阅读 · 0 评论 -
InstallShield安装与制作
目 录一、 InstallShield安装二、 InstallShield 破解三、 制作安装包(一) 打开工程(二) 工程助手页面1、Application Information:程序信息2、Installation Architecture: 安装包结构3、Application Files;指定安装的文件默认目标路径转载 2013-06-21 16:04:50 · 1204 阅读 · 0 评论