自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(38)
  • 收藏
  • 关注

翻译 Kaspersky Flaw(6) -- 允许用户模式代码操作内核内存

允许用户模式代码操作内核内存现代操作系统的一条重要原则是内核与用户模式的分离,不允许用户模式代码直接操作内核空间内存.这条原则对保证系统的稳定性非常必要,比如阻止有错误的用户模式程序破坏内核并导致系统崩溃。可是KAV程序员并不认为这种分离原则很重要。KAV一个非常奇怪的不安全实现是让用户模式可以直接调用其内核驱动的部分函数,而不是采用加载用户模式DLL,或者加载用户模式代码到目标进程的方式。这

2006-08-12 12:34:00 1118

翻译 Kaspersky Flaw(5) -- 修改没有输出和不是系统服务的内核函数

修改没有输出和不是系统服务的内核函数KAV的内核补丁还不仅局限于系统服务,其中最危险的就是挂钩一个既不是输出函数又不是系统服务的内核函数nt!SwapContext(因此并没有可靠的办法,只能从编码的特殊痕迹来获取它的地址)。nt!SwapContext在内核每一次上下文切换的时候都会被调用,以便进行内部数据的保存。作者认为,通过不可靠的编码特殊痕迹来对未输出的重要核心函数进行补丁的方式并

2006-08-12 00:35:00 1009

翻译 Kaspersky Flaw(4) -- 不正确的校验内核对象类型

不正确的校验内核对象类型Windows通过一系列的"内核对象"来揭示很多内核特性。这些内核对象在用户模式下被包装为句柄。这些句柄本身是整数值,在内核模式下被转换为指向内核对象的指针,用来和内核函数进行通信(尤其是系统服务)。所有的内核对象都是使用共同的句柄空间。由于这个句柄空间被不同类型的内核对象所共享,系统服务的一个任务就是校验句柄是否指向正确的类别。校验是通过对象管理器中ObRefer

2006-08-10 23:51:00 946

翻译 Kaspersky Flaw(3) --- 隐藏用户空间线程

 隐藏用户空间线程KAV错误使用系统服务挂钩不仅是对NtOpenProcess。另外一个被KAV挂钩的系统服务是NtQuerySystemInfomation,在接收到SystemProcessAndThreads类别调用的时候,挂钩函数将截掉某些特定进程的线程列表。这将影响从用户空间获取应用程序进程的线程列表。使用这种技术令人费解,因为对用户空间隐藏线程都是和Rootkit联

2006-08-08 09:47:00 937

翻译 Kaspersky Flaw(2) --- 不正确校验用户空间指针

 不正确校验用户空间指针很多KAV安装的挂钩(包括KAV自定义的系统服务)都会因为操作系统的不同而出现问题。比如,在KAV修改的NtOpenProcess函数中企图通过直接和硬编码的0x7FFF0000比较,来判断是否是用户空间地址。在绝大部分x86 Windows系统上,用户空间地址的最大值都是0x7FFEFFFF。但是硬编码用户空间的最大值并不是好办法。比如把Boot.in

2006-08-08 09:34:00 892

翻译 Kaspersky Flaw(1) --- 动态修改系统服务

动态修改系统服务虽然KAV使用了反病毒软件常用的文件系统过滤来截取对于文件的获取,同时还使用对一系列API的挂钩来截取对不同文件的获取。在内核空间中使用挂钩API函数的方法非常危险:首先必须仔细交验所有从用户空间传入的参数,否则系统的安全性可能会受到未授权的恶意程序的威胁;其次很难安全的恢复这种内核空间的挂钩而不使系统崩溃,因为很难判断当时是否有线程正在使用这部分程序。此外KAV还错误地挂钩一

2006-08-08 09:20:00 1095

原创 IDA的使用技巧(三)

逆向工程是需要非常复杂的算法来支持,(对此我知之甚少),因此难免在IDA反汇编的结果中会出现一些错误。一般来说,出现错误的部分IDA都会用红色的背景色来突出这个错误,或者在Problem Subview中列出这个错误。从这点也能看出IDA作者实事求是的精神。对于函数的错误分析,很多时候都会影响到阅读反汇编结果,一般来说,该函数读起来总会发现有些地方不对劲。以下列出几个在反汇编的时候可能

2006-07-26 00:05:00 1957

原创 IDA的使用技巧(二)

介绍一个动态分析和跟踪的IDA插件Process Stalker下载地址: http://www.openrce.org/downloads/details/171手册地址:http://pedram.redhive.com/process_stalking_manual/这个插件利用IDA静态分析的结果,生成每一个独立函数的GML图、交叉引用列表和断点列表。然后用Process_Stal

2006-07-13 17:07:00 2779

原创 IDA的使用技巧(一)

1、IDA中如何处理TLS Callback Function关于TLS Callback Function可以参见linux2linux的"线程局部储存隐藏的入口点",http://blog.csdn.net/linux2linux/archive/2005/08/26/465634.aspx.i)用Ctrl+E查找程序入口点,对于使用了TLS Callback的程序,会看到一个叫Tls

2006-07-11 11:33:00 2396

原创 提交了一个Doxygen1.4.7的bug和patch

最近开始用doxygen来把自己的程序进行文档化,以前使用的是1.4.4。后来下载了一个1.4.7,在对IDL文件的属性进行/defgroup和/ingroup的时候,发现总是不能文档化。doxygen的文档没有任何地方提到对group有什么修改。于是下载了doxygen的源码进行查看,发现它在1.4.7的时候增加了对IDL文件的属性的分类,但是在group的对应文件并没有增加相应部分。我的t

2006-06-24 19:35:00 846

转载 Python URL May 22

QOTW: "Its hard to make a mistake by having too many short and simple functions. And much too easy to make them when you have too few ;-)" - Thomas Bartkus "Argh, the following is valid Python synt

2006-05-23 10:14:00 764

转载 一些有用的Python站点

Everything Python-related you want is probably one or two clicks away in these pages:     Python.orgs Python Language Website is the traditional     center of Pythonia         http://www.python.org

2006-05-23 10:09:00 1222

转载 Python URL March 17

      QOTW: "Generally, you should always go for whatever is clearest/most easily read (not just in Python, but in all languages)."—Timothy Delaney   "You will fi

2006-05-23 10:06:00 803

原创 DeferWindowPos

最近做界面的时候遇到一个问题,在WM_SIZE的消息处理函数中需要调整多个控件的位置,发现在2K下可以顺利工作,可是在xp下就有很强的闪烁感。Google了一下,发现java awt的一个bug(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4959178)提到这个错误。主要原因也是2k和xp下WM_SIZE消息有一些区别。         

2006-05-15 00:05:00 3632

原创 msn8.0去广告和搜索条

具体的方法是同事告诉我的,大致如下:用资源方式打开msgsres.dll文件,“4004”->“923”搜索”SSConstrainer”,然后前面位置的“layoutpos”的值修改为“None”搜索”idSearchContainer”,然后前面位置的“layoutpos”的值修改为“None”

2006-04-13 11:27:00 1149 1

翻译 Defeating Native API Hooker

一、在用户空间修改系统服务调度表(SSDT)SSDT位于内核空间,如果要修改SSDT的入口函数,rootkit都是通过驱动程序的方式载入再修改的。然而在用户空间可以通过直接读写/device/physicalmemory来修改SSDT的入口。(译注:修改SSDT入口是可以在用户空间进行,只是SSDT的入口函数必须是在内核空间,所以一般rootkit都是把修改后的程序放在驱动程序中,以便直接加载到内

2006-04-13 11:25:00 1638

翻译 Process-wide API spying - an ultimate hack 摘要翻译(三)

在已运行进程注入间谍DLL主体代码(文字说明放在代码的注释中):void inject(DWORD threadid,BYTE*remotebuff, HMODULE hMod, DWORD entrypoint,HANDLE processhandle,HANDLE eventhandle);void loadandinject(DWORD procid){    BYTE array[

2006-04-13 11:19:00 958

翻译 Process-wide API spying - an ultimate hack 摘要翻译(二)

通过目标进程中挂钩所有对DLL的调用由于通过修改目标进程的输入表IAT只能对当前进程有效,所以我们即使对当前所有已加载模块都挂钩了对kernel32.dll的调用,但在这之后启动的进程将不会被挂钩。因此除了对已加载进程修改IAT以外,还需要修改kernel32.dll的输出表EAT。1、修改目标进程的IAT表对所有已加载的模块有效2、修改kernel32.dll的EAT表,所有将来加载的DLL

2006-04-13 11:12:00 930

翻译 Process-wide API spying - an ultimate hack 摘要翻译(一)

简介      进程范围的API挂钩一般都是基于修改目标执行文件的输入函数表(IAT)。通过把目标进程中调用需要挂钩的API函数替换为用户编写的函数,达到挂钩的目的。当然一般情况下,用户的替换函数都是对API的传入参数进行记录或者验证,然后再调用挂钩的API函数。API Spy一般都是把进行Hook和Spy工作的驱动DLL文件通过一个控制程序注射到目标进程,驱动DLL文件和控制程序之间通过WM_C

2006-04-13 11:05:00 987

翻译 键盘间谍(二)

阻止键盘间谍  不被偷窥的Edit控件 不被偷窥的Edit控件在每次用户敲键以后都会产生一些随机键盘事件。键盘间谍将会捕捉到用户的键盘事件和控件创建的虚假事件,从而很难判断真实敲键的内容。另一方面,用户的输入是被保存在控件的成员变量中的,应用程序不会受到影响。虚假键盘事件是利用SendInput API函数产生的。我分别实现了MFC和C#可用的控件。  不被偷窥的Edit控件假定SendInp

2006-04-13 10:57:00 785

翻译 键盘间谍(一)

一、键盘间谍键盘间谍由三个部分组成:主模块、钩子程序和FTP模块。主模块安装一个全局WH_CBT钩子程序;钩子程序每当有敲键动作就通知给主模块,主模块负责对键盘事件进行记录;当键盘的日志达到一定的大小后,主模块就运行FTP模块把日志文件传送到FTP服务器。模块之间的通信通过Windows消息进行。主模块程序如下://///////////////////////////////////////

2006-04-13 10:49:00 937

原创 一道AutoDesk的笔试题目

在网上瞎逛,看到这样一道题目“鼠标左键点击在非当前窗口的标题栏上,会产生什么样的win32消息?”。当时感觉有点茫然,不就是WM_LBBUTTONDOWN、WM_ACTIVATE和WM_SETFOCUS吗?后来感觉可能不是这么简单,就用Spy++跟踪了一下,果然多了不少消息。在NC点击发出的消息流程如下:   WM_NCHITTEST   //在鼠标点击非激活窗体的时候发出的,如果是点在子窗体

2006-04-13 10:41:00 1193

原创 vncSnapshot

vncSnapshot用于从vncServer获取图片并保存为JPG格式,最新的版本是1.2a,新增了-fps和-count参数。其中-count设定连续保存图片的张数,-fps用于设定保存的间隔时间。比如你可以这样用:vncSnapshot.exe -ignoreblank -count 5 -fps 15 192.168.0.1:0 test.jpg测试的结果发现连续保存的5张图片,完

2006-04-13 10:36:00 1061

原创 RasEnumConnections返回错误为632的分析

RasEnumConnections返回错误为632的分析按照MSDN调用RasEnumConnections的例子写成的代码如下:  RASCONN RasConn;  DWORD cb;  DWORD Connections = 0;  RasConn.dwSize = cb = sizeof(RASCONN);  DWORD nRet = RasEnumConnections(&Ra

2006-04-13 10:22:00 3970 5

原创 Win32服务程序对桌面的恢复

在运行时,去掉当前桌面很简单,SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, "", SPIF_SENDCHANGE );对于任何用户和程序都是适用的,对于Win32服务程序也不例外。但对于一般的Win32 App只要发送SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, NULL, SPIF_SENDCH

2006-04-13 10:21:00 897

原创 键盘驱动笔记

前段时间想写一个简单的键盘驱动,就找网上找了一些文档看看。JIURL的键盘驱动5篇文章都很精彩,让人很快就能明白键盘驱动的原理。一般情况微软建议写的键盘驱动都是属于keyboard filter driver,它位于kbdclass和i8042prt驱动之间。利用IOCTL_INTERNAL_KEYBOARD_CONNECT来挂接KeyboardClassServiceCallback,然后在I8

2006-04-13 10:19:00 3620

原创 WFPdisable.exe的处理流程

一直不知道如何关闭WFP(Windows File Protection),进行反汇编了一下WFPdisable.exe,理出它的大概处理流程。HMODULE hSfc = LoadLibary( "sfc.dll" );//这个地方在该程序中声明的是对win2k sp4和winxp sp1适用,不知道对其他版本是否适用LPTHREAD_START_ROUTINE pThread = (LPT

2006-04-13 10:17:00 2216

翻译 恢复Win2K/XP系统服务描述表(翻译)

Win2K/XP SDT Restore 0.2 (Proof-Of-Concept)by Tan Chew Keong恢复Win2K/XP系统服务描述表网址:http://www.security.org.sg/code/sdtrestore.html简介Win32内核Rootkits一般都通过对内核Native API进行hook来完成,它需要修改服务描述表(SDT)。这种修改必须让Rootk

2005-08-17 14:24:00 2167

原创 Boost Python(二)

Boost Python和SWIG是被应用的最广泛的C++&Python库,这篇文章对两者进行了简单的对比http://seal.web.cern.ch/seal/snapshot/work-packages/scripting/evaluation-report.html另外今天还在GMane上找了一个比较好的网站http://comments.gmane.org/gmane.comp.pyth

2005-04-14 14:28:00 891 1

原创 Boost Python使用(一)

一直向往Python的高效,可是手上的程序都是用C++开发的,不想再重写这部分数据结构了,于是就想到了用Boost Python来把这部分数据结构弄成Python的扩展包便于在以后的程序中使用Python进行编程。Boost Python的文档写的比较清楚,在写扩展的时候还是比较轻松。由于是第一次使用Boost Python,所以只是先把C++程序中的enum部分写了Python扩展包。只遇到了一

2005-04-13 17:24:00 999

原创 关于灰度矩证的修改

以前的矩证为 ColorMatrix cmGray = {  0.5f, 0.5f, 0.5f, 0, 0,  0.5f, 0.5f, 0.5f, 0, 0,  0.5f, 0.5f, 0.5f, 0, 0,  0, 0, 0, 1, 0,  0, 0, 0, 0, 1 };效果不好。现在参照CXimage中的GrayScale算法,修改为ColorMatrix cmGray = {  0.299

2005-03-23 11:18:00 898

原创 Python Paradigms for XML

自由软件的一个问题就是可供参考的资料很多,工具也有很多,不同的工具都各有侧重,毕竟“鱼和熊掌不能兼得”。记得第一次安装完pyXML以后,发现其中有很多工具,可是找不到一个详细的文档说明。今天看到了“Python Paradigms for XML ”详细介绍了常见的python XML工具的用法和优势。网址:http://www.idealliance.org/papers/dx_xml03/pa

2005-03-10 17:12:00 630

原创 yield关键字

一直没有搞懂yield关键字是干什么的,今天看到了一篇名为"a generator-based XML reader"的文章,中间的程序有用到了yield,于是决定把它弄懂。yield最早是在python2.2中被引入的,该版本必须Enable generator才能使用yield,在后来的python2.3中把generator的默认改为Enabled。也就是说不用使用from __future

2005-03-08 17:36:00 1754

原创 GDI+

前几天看到别人的Blog上提到了GDI+,简单看了一下发现其实也很简单,没有看其他的什么资料,就只把MSDN上关于GDI+的基本部分都看了一下。发现使用起来非常方便,它所能支持的东西也比GDI多了不少,至少可以把以前用于装载JPG和进行不失真缩放和灰度计算的CxImage函数库去掉了,都用GDI+来完成。这部分是用GDI完成的部分:  HBITMAP hbitmap; CDC* pdc = Get

2005-03-07 16:32:00 1277

原创 __setattr__和__getattr__的使用

今天在ASPN上看到有人提到了如何使用__setattr__和__getattr__,算是给自己解了惑,因为一直就没有搞明白这两个函数的用处。这两个内置函数是用来自定义对象属性的获取方法。__setattr__只能修改对象的instances attribute,而不能修改classs attribute等等。该贴的作者以如何把类的attributes映射为dictnary members为例

2005-03-03 16:26:00 1520

原创 Partial.py

Daily Python-URL是每天都会去看看的网站,今天看到了有人在ASPN上写了一个SimpleWrapper来实现对函数预先设定参数的功能。他的程序结构大概如下:class SimpleWrapper: class MethodCall: def __init__(self, function, *params): self.funct

2005-02-28 17:36:00 653

原创 STLPort Rope源码解析(一)

Rope是一个string的实现方式,最早详细论述这个实现的文章是hans-j. boehm, russ atkinson and michael plass等人在Xerox公司撰写的“Ropes: an Alternative to Strings”,在其中非常详尽的描述了传统string实现方式的弱点以及rope实现的算法和优点。StlPort的Rope也是按照文章所提到的方式实现。另外关于为

2005-02-27 12:36:00 958

原创 pickle模块

pickle是在python中用于持久化(或者序列化)保存python对象的模块。目前pickle只提供生成字符串,磁盘上的文本文件或者二进制文件。如果需要生成xml文件,可以使用xml_pickle和xml_objectify,在以后的文章会对其作一些分析。但pickle 不能解决命名和查找 pickle 文件,以及不能支持并发地访问持久性对象。这样的需求可以通过ZODB(ZOPE的底层数据库)

2005-02-25 11:25:00 1105

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除