
Windows
文章平均质量分 72
BetaBin
学
展开
-
Windows程序输入输出重定向到网络
嗯,最近天气变幻无常……最开始时源于想知道下NC的-e选项是怎么实现的,搜商有限,找到源码都不支持-e……然后就搜到了windows管道方面的知识:微软msdn里面有提到“Creating a Child Process with Redirected Input and Output”(http://msdn.microsoft.com/en-us/library/win原创 2013-04-09 23:06:50 · 2414 阅读 · 0 评论 -
Windows核心编程【9】小结
第九章 用内核对象进行线程同步1、在用户模式下进行线程同步的最大好处就是速度非常快。如果关心应用程序的兴宁,那么应该先看看用户模式下的同步机制能否适用。2、但是用户模式下的同步机制存在一些局限性。例如,对Interlocked系列函数只能对一个值进行操作,它们从来不会把线程切换到等待状态。我们可以用关键段来把线程切换到等待状态,但是它们只能用来对同一个进程中的线程进行同步。此外,在原创 2012-05-04 09:32:59 · 2658 阅读 · 0 评论 -
Camel、Pastal、匈牙利标记法
/*原来我一直用的是Camel标记法……收藏学习了。转载自:http://blog.youkuaiyun.com/lxmuyu/article/details/7235240*/为了代码清晰易懂,通常变量名采用一些著名的命名规则,主要有Camel标记法,Pastal标记法和匈牙利标记法。 Camel标记法采用首字母小写,接下来的单词都以大写字母开头的方法,如m转载 2012-04-20 23:22:05 · 6595 阅读 · 0 评论 -
SEH学习心得【2】- 关于FS段寄存器
——————关于PEB结构在http://blog.youkuaiyun.com/betabin/article/details/7481949中列出。——————看SEH少不了FS段寄存器,关于其大概认识如下。在不同的地址空间,FS段寄存器指向不同的内存段。线程运行在RING0(既系统级别)下,FS段值是0x3B(XP下的值,在2000下是0x38)。运行在RING3(用户级别)下,FS段值原创 2012-03-13 19:44:00 · 2087 阅读 · 0 评论 -
PEB及PEB_LDR_DATA结构
PEB结构如下:(比MSDN上详细多了http://msdn.microsoft.com/en-us/library/windows/desktop/aa813706(v=vs.85).aspx)这个进程环境块就不罗嗦了,直接贴代码。typedef struct _PEB { // Size: 0x1D8/*000*/ UCHAR InheritedAddressSpace;/*001原创 2012-04-20 16:33:25 · 10217 阅读 · 3 评论 -
Windows核心编程【8】小结
第八章 用户模式下的线程同步1、当所有的线程都能够独自运行而不需要相互通信的时候,MS将进入最佳运行状态。2、通常创建线程是为了处理某些任务,当任务完成的时候,另一个线程可能想要得到通知。3、如果一个线程独占了对某个资源的访问,那么其他线程就无法完成它们的工作。另一方面,也不能让任何线程在任何时刻都能访问任何资源。4、在以下两种基本情况下,线程之间需要相互通信。需要让多个线程同时访原创 2012-05-03 10:28:47 · 1504 阅读 · 0 评论 -
看雪熊猫前辈——svchost进程的浅析
/*看雪熊猫前辈讲得太棒了,故转载过来作为学习资料存放。看雪是个好论坛~~~原文链接如下:http://bbs.pediy.com/showthread.php?t=127798(仅做链接资料存放,优快云格式复制不适合看,就当是图片预览,请移步到看雪。)*/标 题: 【原创】svchost进程的浅析作 者: 熊猫正正时 间: 2011-转载 2012-04-18 20:53:46 · 2560 阅读 · 0 评论 -
Windows编程【7】小结
第七章 线程调度、优先级和关联性1、抢占式操作系统必须使用某种算法确定对何时应对哪些线程进行调度,时间又为多长。该章讲述MS的Vista使用的调度算法。2、每个线程都有一个上下文,后者保存在线程的内核对象中。这个上下文反映了线程上一次执行时CPU寄存器的状态。大概每隔20ms,Windows都会查看所有当前存在的线程内核对象。对可调度的线程,采取一定的算法选取一个,将其上次保存在线程上下文原创 2012-04-30 00:07:18 · 2768 阅读 · 0 评论 -
Windows核心编程【6】小结
第六章 线程基础1、每个进程至少都有一个线程。2、线程的两个组件:一个是线程的内核对象,操作系统用它管理线程;另一个是线程堆栈,用于维护线程执行时所需的所有函数参数和局部变量。3、进程是有惰性的,它从来不执行任何东西,只是一个线程的容器。4、线程只有一个内核对象和一个堆栈,几乎不涉及记录活动,不需要占用多少内存。一、何时创建线程1、线程描述了进程内部的一个执行路原创 2012-04-28 22:39:29 · 1567 阅读 · 0 评论 -
分析学习【1】—— Anti-debug分析及Snapshot学习
学着分析一个老样本的时候,发现了这个段anti-debug函数,鉴于WinSDK掌握不足,所以就慢慢分析了下。概述:1、简单分析了这个anti-debug的流程;2、介绍下用到的Win函数,其中重点是如何获取运行中进程snapshot。一、这个anti-debug非常老,如今OD的一堆插件绝对可以秒杀掉。只是简单的调用了"IsDebuggerPresent"函数,判断父进程,还有遍历所有进原创 2012-04-19 16:49:47 · 2819 阅读 · 0 评论 -
获取系统运行进程信息——PSAPI介绍使用
网上资料显示,有这么三种方法可以用来获取系统运行进程信息:方法平台备注PSAPIWindows NT,Windows2000,Windows XP获取进程,驱动器,模块,内存和工作集信息性能计数器Windows NT,Windows2000,Windows XP提供除进程清单以外的关于进程的更多原创 2012-04-21 11:58:12 · 7939 阅读 · 0 评论 -
Windows核心编程【20】小结
第20章 DLL高级技术一、DLL模块的显示载入和符号链接在任何时候,进程中的一个线程可以调用下面两个函数来将一个DLL映射到进程的地址空间中:HMODULE LoadLibrary(PCTSTR pszDLLPathName);HMODULE LoadLibraryEx(PCTSTR pszDLLPathName, HANDLE hFile, DWORD dwFlags)原创 2012-06-12 10:52:54 · 3125 阅读 · 0 评论 -
malloc实现源码
/****malloc.c - Get a block of memory from the heap** Copyright (c) Microsoft Corporation. All rights reserved.**Purpose:* Defines the malloc() function.***************************原创 2013-03-21 20:02:59 · 1869 阅读 · 0 评论 -
IAT Hook的原理
(PE文件不熟悉,dll注入了,用IAT拦截了,可是具体原理还是不熟悉,收藏资料以备来日复习……转载自:http://www.cnblogs.com/71dao/archive/2008/12/23/1360807.html)IAT即Import Address Table 是PE(可以理解为EXE)的输入地址表,我们知道一个程序运行时可以要调用多个模块,或都说要调用许多API函数转载 2013-03-13 17:06:07 · 7713 阅读 · 0 评论 -
Windows路径命名
碰到CreateFileA的如下调用,对该路径不解,故MSDN中获得答案(http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx)。“Win32 Device NamespacesThe "\\.\" prefix will access the Win32 device na原创 2013-02-05 11:12:41 · 1854 阅读 · 0 评论 -
栈溢出防御之——Windows安全机制GS编译选项
安全漏洞中有个重灾区:栈溢出。利用类似memset之类的字符串修改函数,输入超出正常长度的字符串,导致栈溢出,从而影响其它数据(返回地址、标志变量等)。维基百科给出的资料http://zh.wikipedia.org/wiki/%E5%A0%86%E6%A0%88%E6%BA%A2%E5%87%BA主要是函数无限调用导致的堆栈溢出,下面给出个0day2里面的例子温习下栈溢出:#includ原创 2012-10-14 15:26:10 · 8367 阅读 · 0 评论 -
Windows核心编程【10】小结
第十章 同步设备I/O与异步设备I/O1、本章介绍的技术可以用来设计高性能、伸缩性好、响应性好,而且健壮的应用。一个伸缩性好的应用程序在处理大量并发操作时和处理少数并发操作时同样高效。2、在Windows应用程序中,线程是最好的工具,可以用来对工作进行划分。3、通过I/O完成端口,可以让线程在读取设备和写入设备的时候不必等待设备的响应,从而显著地提高吞吐量。4、I/O完成端口最初被原创 2012-05-05 17:48:52 · 4593 阅读 · 0 评论 -
Windows核心编程【22】小结
第22章 DLL注入和API拦截在Windows中,每个进程都有自己私有的地址空间。独立的地址空间对开发人员和用户都是非常有利的。对开发人员来说,系统更有可能捕获错误的内存读/写。对用户来说,OS变得更加健壮,因为一个应用程序的错误不会导致其他应用程序或OS崩溃。APP需要跨越进程边界来访问另一个进程的地址空间的情况如下:1、想要从另一个进程创建的窗口派生子类窗口。原创 2012-06-12 11:08:00 · 1856 阅读 · 0 评论 -
Windows核心编程【21】小结
第21章 线程局部存储区有时将数据与一个对象的实例关联起来是有帮助的。我们可以使用线程局部存储区(Thread Local Storage,简称TLS)来将数据与一个正在执行的指定线程关联起来。例如,可以将创建线程的时间与线程关联起来,然后当线程终止的时候,就可以确定线程运行的时间长度。(TLS可以实现“对各线程有不同意义的全局变量”)C/C++运行库使用了TL原创 2012-06-12 11:00:16 · 1432 阅读 · 0 评论 -
~Windows核心编程【5】小结
第五章 作业1、Windows没有维护进程之间的父子关系。具体地说,即使父进程已经终止运行,子进程仍在继续运行。2、Windows提供了一个作业内核对象,允许我们将进程组合在一起并创建一个“沙箱”来限制进程能够做什么。最好将作业对象想象成一个进程容器。这样就可以对一组进程进行管理了。3、利用StartRestrictedProcess函数将一个进程放入一个作业中,以限制此进程具体能够做原创 2012-04-28 16:40:48 · 1589 阅读 · 0 评论 -
Windows核心编程【2】小结
第二章 字符和字符串处理一、字符编码1、常规C、C++语言学习中习惯单字节(8个bits,256个字符)ANSI字符编码。2、双字节字符集(double-byte character,DBCS),一个字符串中的每个字符都由1个或2个字节组成。以日本汉字为例,如果第一个字符在0x81到0x9f之间,或者在0xe0到0xfc之间,就必须检查下一个字节,才能判断出一个完整的汉字。这样原创 2012-04-27 11:55:56 · 1254 阅读 · 0 评论 -
WinAPI学习 - PostMessage、RtlFreeHeap、PeekMessage、GetTickCount()
今天逆向,遇到这些函数,大概搜查了些资料,大概如下。1、PostMessage函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);这个函数大概将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和Peek原创 2012-03-11 17:50:38 · 4189 阅读 · 0 评论 -
SEH学习心得【1】
(近日遇到大量SEH问题,所以觉得有必要好好研究研究。)一、SEH的汇编实现从实践入手,汇编实现SEH其实不难。简单点如下指令:push offset_exception_function_addresspush fs:[0]mov fs:[0], esp二、SEH的简单理解SEH(Structured Exception Handling),是Windows下原创 2012-03-12 21:32:45 · 1838 阅读 · 0 评论 -
Win32程序内部运行基本原理
/*很到位的一篇总结,所以忍不住就转载过来保存学习了。转载于:http://www.cnblogs.com/sqzxcv/archive/2009/11/28/1612439.html*/申明:本文是我看了孙鑫老师的VC++视频教程后的总结,相当于学习笔记吧,纯粹是为了方便自己。同时也希望能对大家学习vc++有所帮助。至于文中的内容如果有什么错误或不妥,欢迎转载 2012-03-13 19:12:02 · 1312 阅读 · 0 评论 -
Windows提高进程权限至Debug
关于提权,需要了解知道下面三个函数吧,OpenProcessToken 得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限AdjustTokenPrivileges 判断令牌权限在Windows下,每个进程不是说有管理员权限就可以为所欲为。因为每个进程还有个令牌,访问令牌吧。而令牌代表了一些权限使用,如果需要某些特殊权限,需要自己去使能或除能。原创 2012-03-26 06:36:34 · 9624 阅读 · 0 评论 -
VS2008C++编译选项中文说明
C/C++ 编译器选项 -优化-/O1 最小化空间 /O2 最大化速度/Ob 内联扩展(默认 n=0) /Od 禁用优化(默认)/Og 启用全局优化 /Oi[-] 启用内部函数/Os 优转载 2012-03-07 16:48:08 · 2584 阅读 · 0 评论 -
vs2008加载dll深入
之前简单写过如何创建lib和dll文件及简单的使用(http://blog.youkuaiyun.com/betabin/article/details/7239200)。现在先再深入点写写dll的加载方式。dll的加载方式主要分为两大类,显式和隐式链接。具体名词解释如下:隐式链接有时称为静态加载或加载时动态链接。显式链接有时称为动态加载或运行时动态链接。这样我们就大概理解了这两种链接方式了,原创 2012-02-08 11:30:11 · 8149 阅读 · 0 评论 -
WinAPI学习 - ReadFile
在一些逆向中,读取操作常用这个函数,所以查了一下资料。Micro的MSDN上给出的API如下,BOOL WINAPI ReadFile( __in HANDLE hFile, __out LPVOID lpBuffer, __in DWORD nNumberOfBytesToRead, __out_opt LPDW原创 2012-03-07 13:49:04 · 1690 阅读 · 0 评论 -
WinAPI学习 - mciSendString音频播放
关于这个mciSendString函数,MSDN给出的说明如下:The mciSendString function sends a command string to an MCI device. The device that the command is sent to is specified in the command string.大概是说mciSendString是用来和M原创 2012-03-13 19:08:08 · 2733 阅读 · 0 评论 -
windows核心编程--SEH(结构异常处理)
SEH 的工作原理。 Windows 程序设计中最重要的理念就是消息传递,事件驱动。当GUI应用程序触发一个消息时,系统将把该消息放入消息队列,然后去查找并调用窗体的消息处理函数(CALLBACK),传递的参数当然就是这个消息。我们同样可以把异常也当作是一种消息,应用程序发生异常时就触发了该消息并告知系统。系统接收后同样会找它的“回调函数”,也就是我们的异常处理例程。当然,如果转载 2012-03-09 13:29:19 · 1125 阅读 · 0 评论 -
MFC添加消息、隐藏对话框项目界面
真的是太久没写MFC程序了,居然会忘了怎样添加消息……VS2008环境下,找到类视图→右键需要添加消息的类→选择属性→在属性窗口找到消息项目→往对应的消息里面添加函数回车确定,然后代码区就会自动生成,并跳转到对应区域。对于隐藏界面的方法,很多网上的方法都会有启动是闪烁的现象。这里介绍一种,往OnInitDialog函数里面添加下面代码 SetWindowPos(&CWnd:原创 2012-02-08 10:44:47 · 1760 阅读 · 0 评论 -
DLL的DllMain入口函数
关于DllMain入口函数,我也是刚刚接触,大概的认识如下:DllMain入口函数是DLL不可缺少,虽然一般我们可能没有定义这个入口函数,但是系统会从其运行库中引入一个不进行任何操作的缺省DllMain入口函数。这个入口函数被调用的情况有四种,dll的加载和卸载,还有单个线程的启动或终止。大概就是这么个意思吧。如果需要仔细的说明,可以参考msdn给出的详细说明,链接如下:http://msdn原创 2012-02-07 14:42:12 · 1671 阅读 · 0 评论 -
VS2008无法调试,报错MSVCR90.DLL丢失
(非常之郁闷的一个下午,睡完午觉,发现早上搭好的代码没办法调试了。顿时抓狂了下,后来还是想了下早上干过什么。隐隐约约记得把一个MSVCR90.DLL拖到虚拟机去的感觉,然后还改过shared的项目属性,不过只是个预编译头开关。)——————更新,最近发现这个问题可能是由于我的VS2008出问题,有个项目包含stdlib.h就报丢失MSVCR90.DLL。——2012/04/16——原创 2012-04-12 22:22:33 · 5529 阅读 · 0 评论 -
Windows核心编程【3】小结
第三章 内核对象一、何为内核对象1、作为Windows软件开发人员,我们经常都要创建、打开和处理内核对象。系统会创建和处理几种类型的内核对象,比如访问令牌(access token)对象、事件对象、文件对象、文件映射对象、I/O完成端口对象、作业对象、mailslot对象、mutex对象、pipe对象、进程对象、semaphore对象、线程对象、waitable timer对象以及原创 2012-04-27 20:23:43 · 1266 阅读 · 0 评论 -
Windows核心编程【1】小结
第一章 错误处理1、调用Windows函数时,它会先验证你传给它的参数,然后再开始执行任务。如果传入的参数无效,或者由于其他原因导致操作无法执行,则函数的返回值将支出函数在某个方面失败了。2、每种错误都有三种表示:一个消息ID(一个可在源代码中使用的宏,用于与GetLastError的返回值进行比较)、消息文本(描述错误的英文文本)和一个编号(应该避免使用此编号,尽量使用消原创 2012-04-26 20:57:49 · 1287 阅读 · 0 评论 -
驱动开发 环境搭建(VS2008+WDK+DDKWzard)
/*好文章果断要学习收藏。转载自wjcsharp王俊超的博文:http://wjcsharp.blog.51cto.com/1031016/391769*/开发驱动,首先就是搭建开发的环境。既然是开发windows下的驱动程序,那MS的开发工具是一定要的。现在vs都到2010了,所以,也不能总是抱着vs6.0写代码,也要与时俱进~当然又不能太潮流吗……所以选用vs2008开转载 2012-04-23 16:54:55 · 1617 阅读 · 0 评论 -
Windows核心编程【4】小结
第四章进程 一、基本知识1、 进程的定义,一个正在运行的程序的一个实例。由两部分组成,内核对象(系统保存进程统计信息的地方,用来管理进程)和地址空间(进程的所有执行体、数据段、堆栈等)。2、 Windows有2大类应用程序。CUI(控制台用户界面)和GUI(图形用户界面),划分界限模糊。其中,关联到了VS集成环境链接器的各种开关。3、 启动函数在进行一系列初始化(获取新进原创 2012-04-01 10:47:33 · 3431 阅读 · 0 评论 -
解决问题:开启Wireshark之NPF驱动问题
关于新装系统之后,由于我们一系列的开机优化,很多服务都被停掉了,NPE也是一样。针对以上问题(The NPF driver isn't running...),解决方案如下:(首先确认自己先安装了Winpcap)命令行运行命令“net start npf”即可,当然,这是Windows Vista之前的。Windows Vista和Windows 7的用户需要自己进入到系统盘:C:\W原创 2012-01-17 21:22:08 · 13137 阅读 · 0 评论 -
VS2008中LIB和DLL的创建及调用
(这个年有点冷,元宵刚过,也得继续开始学习了。)LIB和DLL的知识就懒得敲了,直接从如何建立生成LIB或DLL开始。创建项目→Win32项目→下一步之后按照需求选择DLL或者静态库(再视需求是否空项目,一般我都空项目),然后就OK了。一、LIB生成、及使用1、新建betabinlib.h文件#ifndef BETABINLIB_H#define BETABINLIB_H原创 2012-02-07 14:24:27 · 6165 阅读 · 0 评论 -
PE文件格式学习心得【1】
PE文件是Protable Executable File Format(可移至的执行体),是目前Windows平台上的主流可执行文件格式。PE可以简单理解为一个结构,这个结构用来告诉Windows加载器如何去加载这个文件。PE会告诉它其资源、导入表等信息。而这些信息对应在PE文件的不同成员变量。暂时理解PE文件,通过其几个主要的结构来学习。先给张有总结性的网上大量流传的PE文件格式图:原创 2012-03-26 10:23:03 · 1949 阅读 · 0 评论