
软件安全
文章平均质量分 86
zacklin
这个作者很懒,什么都没留下…
展开
-
vs2008+ddkwizard+wdk基于xp环境 windows内核编程环境配置 驱动编程入门
最近在学习windows内核编程,为了搭建一个比较完善的开发环境,使内核编程比较方便,我在网上搜集了很多资料,最后整理出自己的一套比较不错的方案,现在拿出来和大家分享1.首先安装vs2008,这个就不用多说了。在此我介绍一下一款好使的vs插件,我平常称其为vc助手,VA_X_Setup。百度一下就可以下载到破解版的。2.安装wdk。建议完整安装。网址是:http://www.microso原创 2012-08-16 14:03:22 · 1556 阅读 · 0 评论 -
ring0启动一个Win32进程
在许多不成功的尝试来试图找到一种方式来以核心模式(KernelMode)来启动可运行的Win32进程后,我最终意外的发现了一段有希望的代码,这些代码既有独创性又有革新性(注意:这种想法来源于Valerino)不幸的是,那些代码看上去并非能在我的机器上正确的运行,并且它总是以崩溃而结束,或者仅仅(在众多幸运的例子中)是一个进程。因此,我决定以自己的方式(尽管代码的结构是相同的)重新实现伟大的Va原创 2012-07-13 11:22:39 · 2357 阅读 · 0 评论 -
汇编命令及OD常用命令及断点设置
汇编32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。寄存原创 2012-07-12 10:23:31 · 8398 阅读 · 1 评论 -
STARTUPINFO结构体
typedef struct _STARTUPINFO{ DWORD cb; //包含STARTUPINFO结构中的字节数.如果Microsoft将来扩展该结构,它可用作版本控制手段.应用程序必须将cb初始化为sizeof ( STARTUPINFO ) PSTR lpReserved; //保留。必须初始化为N U L L原创 2012-06-29 11:14:12 · 768 阅读 · 0 评论 -
OD使用经验
1.我的os是winXP,无法使用trw2000,而softice装了多次均未成功,还蓝屏死机多次.郁闷. 2.友好的gui界面,不像softice.可以边干活边听歌,不像softice,把整个os都挂起了.多用两次,连时间都不知道了.3.强大的内存查看功能,再不用什么-d了,而且跳转方便,爽!一目了然. 4.强大的右键菜单功能 菜单: 文件: 1.其中包括该菜单的下部原创 2012-07-12 10:21:43 · 7403 阅读 · 0 评论 -
有关脱壳以及脱壳实例讲解
当前流行的查壳工具主要以peid和fileinfo这两个软件为代表。PEiD的原理是利用查特征串搜索来完成识别工作的。各种开发语言都有固定的启动代码部分,利用这点就可识别出何种语言编译的。同样,不同的壳也有其特征码,利用这点就可以识别是被何种壳所加密。PEiD提供了一个扩展接口文件userdb.txt ,用户可以自定义一些特征码,这样就可识别出新的文件类型。原创 2012-07-11 16:31:49 · 5093 阅读 · 2 评论 -
pragma comment的使用
#pragma comment( comment-type [,"commentstring"] )comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring是一个提供为comment-type提供附加信息的字符串,Remarks:1、compiler:放置编译器的版本或者名字到一个对象文件,该原创 2012-06-26 17:42:58 · 572 阅读 · 0 评论 -
深度剖析WinPcap之(序言)——分析WinPcap源代码的缘由
过去我一直在开发软件,包括Windows操作系统的应用软件,Linux操作系统的应用软件与驱动程序,也开发过一些嵌入式软件,并在后来的工作中逐渐专注于对软件的测试工作,主要从事软件测试技术与测试方法、软件工程的研究。在此过程中与其他开发人员、测试人员一同工作,帮助他们构建达到工业级标准的软件,或者指导他们提高软件开发或测试的技术水平。随着不断的遇见问题、解决问题,我也在思考一个问题:那就是软件原创 2012-07-09 13:03:34 · 1502 阅读 · 0 评论 -
windbg 使用
WINDOWS调试工具很强大,但是学习使用它们并不容易。特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器)。本教程的目标是给予一个已经有其他调试工具使用经验的开发者足够信息,使其能通过参考WINDOWS调试工具的帮助文件进行内核调试。本文将假定开发者熟悉一般WINDOWS操作系统和进程的建立过程。本文的重点是集成内核模式和用户态模式的图形化调试器Win原创 2012-06-25 16:47:37 · 2266 阅读 · 0 评论 -
WinDbg配置和使用基础
WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件1. WinDbg介绍: Debugging Tools and Symbols: Getting Startedhttp://www.microsoft.com/whdc/devtools/debugging/debugstart原创 2012-06-25 16:44:55 · 2742 阅读 · 0 评论 -
OllyDBG的使用
一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗原创 2012-06-25 15:54:00 · 1928 阅读 · 1 评论 -
如何正确地进入逆向领域 需要技术
从事Windows系统下的软件研发,已走过差不多9年的时光,在这段时间里认识不少朋友。在每认识一个新的朋友的时候,我都会被问到:如何学习破解,如何逆向,这类相关的问题。那么这篇文章我将会详细的介绍正确的方式。 [本内容适用领域] 1> 基于x86-64Bit Windows系统下的商业软件软件破解2> 商业注册码破解 3> 商业软件脱壳 4> Windows版本的游戏破解原创 2012-06-25 14:36:50 · 1724 阅读 · 0 评论 -
ring0调用ring3-apc
最近一段时间都在解决ring0调用ring3函数的问题因为想在驱动中间实现启动一个应用程序,这个应用程序有可能是exe也有可能是dll,但是在核心层没有像WinExec或者LoadLibrary这样的API可供我们调用,并且驱动程序和应用程序的地址空间不同,一个是在高地址空间,一个在低地址空间,如何才能实现ring0调用ring3的函数呢,肯定是不能直接在驱动的地址空间中间执行,因为这些函数在原创 2012-07-17 10:14:48 · 2896 阅读 · 0 评论 -
KeUserModeCallback用法详解(Ring0调用Ring3代码)
ring0调用ring3早已不是什么新鲜事,除了APC,我们知道还有KeUserModeCallback.其原型如下:代码:NTSTATUSKeUserModeCallback ( IN ULONG ApiNumber, IN PVOID InputBuffer, IN ULONG InputLength, OUT PVOID *OutputB原创 2012-07-17 10:29:56 · 4160 阅读 · 0 评论 -
fatal error C1010: unexpected end of file while looking for precompiled header directive
在编译VC++6.0是,出现fatal error C1010: unexpected end of file while looking for precompiled header directive的错误.解决方法:1、如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的 Settings,选择C/C++选项卡,从Category组合框原创 2012-08-20 13:46:50 · 704 阅读 · 0 评论 -
C/C++底层实现指定磁盘只读
燕狂徒写的驱动挂钩,限制磁盘只读,用于保证涉密计算机的稳定,相当于将磁盘变成ROM#include "ntddk.h"#include #include #define DRIVERNAME "OnlyRead(GongXiPeng!)" // for use in messagestypedef struct tagDEVICE_E原创 2012-07-24 16:07:08 · 1509 阅读 · 0 评论 -
Trojan/Win32.TDSS.eyj[Rootkit]分析
病毒标签:病毒名称: Trojan/Win32.TDSS.eyj[Rootkit]病毒类型: 后门文件 MD5: 45433E3C1489F1F64798BC82BFA21864公开范围: 完全公开危害等级: 4文件长度: 23,040 字节感染系统: Windows98以上版本开发工具: Microsoft Visual C++ 6.0病毒描述:该病毒为后原创 2012-07-24 11:27:59 · 1492 阅读 · 0 评论 -
HOOK ObjectType 干涉文件访问
前几日在网上看到MJ0011大虾写的一篇《ObjectType HOOK干涉注册表操作(bypass icesword,gmer,NIAP,etc.)》的文章,感觉很有兴趣。MJ大虾的文章给出的代码主要是干涉注册表的。而ObjectType 可以干涉的不只是注册表,所以就想到用同样的方法去干涉文件的访问,举一反三嘛。然后问题就出现了用Windbg跟了一下,发现在pNewParseP原创 2012-07-24 10:53:06 · 1189 阅读 · 0 评论 -
ObjectType HOOK干涉注册表操作
来看ObOpenObjectByName,它会调用ObpLookupObjectByName来打开一个对象对象头(object_header)有一个object type结构object type结构里有一个TypeInfo,结构是OBJECT_TYPE_INITIALIZER typedef struct _OBJECT_TYPE_INITIALIZER {USHORT Le原创 2012-07-24 10:47:49 · 1221 阅读 · 0 评论 -
一个简单的NT驱动之驱动入口函数(DriverEntry)
一个简单的NT驱动之驱动入口函数(DriverEntry) 2011年12月16日 选了本驱动开发方面的书《Windows驱动开发技术详解》,这本书类似于MFC方面孙鑫的《VC++深入详解》,看了一部分感觉还不错。 在开始看这本书之前查了许多资料,是想看看自己的实际需求需要看些哪方面的书,但发现要学的技术太多了,汇编要学,操作系统要学。还是不管了,先找本书来看看再说原创 2012-07-23 17:17:44 · 9415 阅读 · 0 评论 -
TDSS
* TDSS. Rootkit 技术 o 一切的开始: TDL-1 o TDL-2: 这场游戏还在继续 o TDL-3: 故事是否终结? * TDSS 在线 o The “Partnerka” o AffId o 链接 o C&C原创 2012-07-24 11:34:13 · 9024 阅读 · 0 评论 -
Rootkit——内存是如何被伪造出来的
McAfee首席反病毒专家Rachit Mathur研究过一种被认为是 TDL3 rootkit 变种的rootkit,这个rootkit就是用来隐藏臭名昭Google Redirect 病毒的程序。但是这个rootkit的行为有些怪异。Mathur在接受ZDNet的采访时解释说: 一些反rootkit工具无法通过hooks直接识别出这个rootkit,另外,它还不允许外部debug工具原创 2012-07-24 11:16:39 · 1425 阅读 · 0 评论 -
Windows驱动开发小结
Windows驱动开发有很多种开发工具,而且各有优势,如DDK、DriverStudio、WinDriver等。DDK开发驱动最复杂,而且需要了解很多关于Windows内核的知识,因此开发周期很长,但是出来的驱动执行的效率是最高的;DriverStudio对DDK里面很多函数做了封装,而且可以通过向导生成驱动程序框架,只需要在上面修改就可以生成驱动,但是也需要对内核知识以及经DriverStudi原创 2012-07-20 11:15:36 · 2052 阅读 · 0 评论 -
VC6.0 +WDK 开发驱动的环境配置
原来开发驱动的环境是VC6+DDK+DriverStudio3.2,当时配置的时候就花了好一阵功夫,也没有彻底搞清楚。现在要重装了,决定改用WDK来开发,但环境的配置又搞的我头疼,不太喜欢命令行方式的编译,还是想借助VC6来开发驱动。 在安装完VC6和WDK以后,就开始进行环境的配置了,可结果是弄了半个上午,还是搞不定。去网上找信息,关于WDK的,多是使用VS2005或VS20原创 2012-07-20 15:58:29 · 1181 阅读 · 0 评论 -
利用钩子技术控制进程创建
05年的老文章了,今天才看到,一直想做而没有做出来的东西,差距啊...修正原文一些翻译不恰当的地方原英文地址:http://www.codeproject.com/KB/system/soviet_protector.aspxDownload source files - 10.8 KbDownload demo project - 12.1 Kb一原创 2012-07-17 17:18:18 · 1060 阅读 · 0 评论 -
Windows注册表HIVE文件格式解析
我们可以用系统提供的注册表编辑器(regedit)来访问和修改注册表中的数据。直观的讲,注册表呈现出来的是图1所示的形式,它由根键(rootkey)、子键(subkey)、键值(value)和数据(data)组成。数据之间有类型的分别,常见的有:REG_SZ、字符串型,REG_BINARY、二进制型, REG_DWORD、双字型,REG_MULTI_SZ、多字符串值型和REG_EXPAND_S原创 2012-06-21 12:00:16 · 8764 阅读 · 0 评论 -
感染系统文件实现自启动
在众多随系统启动的方法中,感染系统文件是一种比较隐蔽的方法,可以做到使被感染的系统文件大小和时间都不变,而且无需修改注册表,一般人很难发现。下面就为大家详细介绍这种方法。分析 方法很简单,只要将一段运行其它程序的代码添加到系统文件中,让它先于系统文件运行即可。为实现此功能,我们需要做如下操作:一是搜索系统文件中的所有节,检测每个节尾部是否有足够的多余空间以便添加我们的代码;二是修改原创 2012-06-18 16:42:37 · 1291 阅读 · 0 评论 -
无驱动执行Ring0代码
// 原理:通过/Device/PhysicalMemory修改NtVdmControl入口,跳转到Ring0Code//************************************************************************#include#include#include#pragma comment (lib,"ntdll.lib原创 2012-06-18 17:55:36 · 2183 阅读 · 1 评论 -
脱壳基础知识入门
现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。壳发展到今天,强度越来越高了,将许多人挡在门外,使得原创 2012-05-14 17:15:14 · 4025 阅读 · 0 评论 -
实现调用加壳的外壳中的子程序
加壳往往是实现对原PE的节数据加密、压缩,若能加壳的同时,让加壳后的程序调用壳中的某些子程序,那加壳强度大大增加。这样处理后,即使脱掉了壳,程序执行也肯定不正常,因为脱壳的同时也将这些子程序脱掉了! 怎样实现呢?作为探讨性的介绍,还是搞一个最基本的来说(假设现在您已经会写PE-exe、PE-dll等PE加壳程序): 我的实现是这样的:作为一个PE文件,多多少少程序中会有m原创 2012-05-14 17:12:14 · 832 阅读 · 0 评论 -
浅谈壳的加载步骤及手动脱壳
浅谈壳的加载步骤及手动脱壳。 现在玩脱壳的人越来越多了,不知道是好事还是坏事。 现在玩手动脱壳一般三样工具足矣:loader,ImpREC,TRW2000。也许是这三剑客的功能太强大,因此手动脱壳也变得象流水化作业。大致以下几个步骤就搞定了。1)loader找OEP.(OEP就是程序原来的入口点,即Original Entry Point) 2)TRW2000来Dump。也就是原创 2012-05-14 17:03:38 · 1344 阅读 · 0 评论 -
加壳软件的实现原理篇
加壳软件的实现原理篇 Author: x0R Heap Heap棕色:代表HEAP区,也就是动态分配的内存区域. Protected Program Program蓝色:代表被加密后的源程序代码区 En/De原创 2012-05-14 16:39:53 · 6546 阅读 · 0 评论 -
Inline Hook 之(监视任意函数)
前面已经写过两次inline hook的博文了,第一篇为:《C/C++ HOOK API(原理深入剖析之-LoadLibraryA)》,这篇博文的方法是通过修改任意函数的前面N个字节,实现跳转并进入到我们自定义的hook函数里,执行完毕我们的hook函数之后,再直接调用被hook的函数。第一篇的方法没有考虑多线程的情况,所以在多线程环境下会有问题。第二篇为:《 Inline HOOK API原创 2012-04-19 16:10:09 · 2289 阅读 · 1 评论 -
VirtualProtect函数
首先我们来看看MSDN上对VirtualProtect函数的说明。BOOL VirtualProtect( LPVOID lpAddress, DWORD dwSize, DWORD flNewProtect, PDWORD lpflOldProtect ); 各参数的意义为:lpAddress,要改变属性的内存起始地址。dwSize,要改变属性的内存区原创 2012-04-19 16:38:29 · 40140 阅读 · 3 评论 -
对还原系统技术的分析
系统的还原点如果还原的时候不起作用了,还是还原时出了别的问题?难道系统还原只是一个摆设? 它究竟要如何使用,才能达到我们所想要的一种结果?使用还原系统环境的用户一般都不会安装其他的防护软件,一旦还原软件被穿透的话,会带来比较大的安全威胁。 还原系统技术原理 还原系统基本原理是磁盘设备过滤驱动。比较常用方法是自己会建一个磁盘卷设备,在harddiskX进行文件过滤。过滤驱动如何做到还原?原创 2012-04-05 17:41:35 · 866 阅读 · 0 评论 -
讲述UPX壳的运行原理
加壳软件可分为两类:一类是压缩,一类是保护。压缩的目的是减少程序体积,如ASPack、UPX、PECompact等。保护是为了防止程序被跟踪和调试,如ASProtect、幻影。壳的存在会让我们找不到程序的真实入口点,从而不能正确的分析反汇编程序,也就对程序起到了一定的保护作用。下面我们一起来认识一下一个程序有壳和没有壳的区别以及带UPX壳的一些特征,同时,我们也可以了解一下PE文件的结构。开始之前原创 2012-04-01 13:47:38 · 7698 阅读 · 0 评论 -
upx加壳原理
upx的功能有两种描述。一种叫做给程序加壳,另一种叫压缩程序。其实这两种表述都是正确的,只是从不同的角度 对upx的描述。 upx的工作原理其实是这样的:首先将程序压缩。所谓的压缩包括两方面,一方面在程序的开头或者其他合适的地方 插入一段代码,另一方面是将程序的其他地方做压缩。压缩也可以叫做加密,因为压缩后的程序比较难看懂,主要是 和原来的代码有很大的不同。最大的表现也就是他的主要作用就是原创 2012-04-01 13:30:02 · 15526 阅读 · 0 评论 -
远程OS探测中的网络协议栈指纹识别技术
摘要 远程探测计算机系统的OS(操作系统)类型、版本号等信息,是黑客入侵行为的重要步骤,也是网络安全中的一种重要的技术。在探测技术中,有一类是通过网络协议栈指纹来进行的。协议栈指纹是指不同操作系统的网络协议栈存在的细微差别,这些差别可以用来区分不同的操作系统。本文研究和分析了此技术的原理和实践,并提出了防止指纹探测的方法。关键词 远程OS探测、协议栈指纹、TCP/IP协议原创 2012-03-30 11:43:17 · 4077 阅读 · 0 评论 -
一次完整的入侵检测
目标:取得管理员权限,在网站中留一个网页,收集漏洞情况。 计划:第一天进行踩点,第二天测试进攻,第三天看看网站的论坛……最终取得管理员权限。 1. 好久没有入侵了,很多都不会了,不过步骤还是要的。首先进行踩点(我踩踩踩!!),当然不是盲目的去扫描,先ping了一下他的网站。 Ping www.inday.com Pinging www.inday.c原创 2012-03-28 15:32:52 · 4493 阅读 · 0 评论 -
INT3断点
INT3断点是断点的一种,在诸如Ollydbg中的快捷键是F2,是一种很常用的断点类型。INT3指令的机器码为CC,所以通常也称之为CC指令。当被调试进程执行INT3指令导致一个异常时,调试器就会捕捉这个异常从而停在断点处,然后将断点处的指令恢复成原来的指令。当然,如果自己写调试器,也可以用其他一些指令代替INT3指令来触发异常。 用INT3断点的好处是可以设置无数个断点,缺点是改变了原程序原创 2012-06-04 16:10:40 · 1095 阅读 · 0 评论