自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 强制删除文件(1)——直接发IRP到文件系统

学习资料:http://www.antiprotect.com/forum_posts.asp?TID=95上面这个连接中的DEMO是比较完整软件,这里我把其中发IRP强制删除文件的部分抽出来了,学习了下,顺便加点注释。这个程序比较简单,主要练习了两个点:(1)模拟发送IRP(2)使用内核事件对象同步IRP的执行强制删除文件的思路很简单,把SECTION_OBJECT_POINTERS结构

2008-06-11 11:36:00 6243 4

原创 键盘过滤驱动之IRP劫持

参考资料:[1] 《Rootkits——Windows内核的安全与防护》[2] 让一切输入都难逃法眼(驱动级键盘过滤钩子)本文主要介绍通过劫持IRP(IRP_MJ_READ)实现键盘过滤驱动的基本方法。算是学习总结吧。这里简单地列举了几个需要注意的地方:[1] 由于需要动态卸载驱动程序,所以要挂接KeyboardClass0。[2] 键盘过滤驱动工作在异步模式。为了得到一个按键操作,首先会

2008-06-09 14:33:00 6524 7

原创 枚举进程(2)——利用EPROCESS/PEB地址特征进行内存搜索

 两个搜索特征:(1)观察所有进程的EProcess结构地址,可以发现都在0x80000000到"system"进程的EPROCESS之间。这就表明所有EPROCESS结构中的peb指针域也应该在这个区间。这就可以大致确定搜索范围。不过在实际测试(xp2)中发现winlogon的EPROCESS大于system的EPROCESS,因此还需要修正搜索范围的最大值。如果对效率要求比较高,还可以把搜索范

2008-06-05 18:30:00 3524

原创 枚举进程(1)——遍历通过EPROCESS结构的ActiveProcessLinks链表

#define EPROCESS_SIZE 1#define PEB_OFFSET 2#define FILE_NAME_OFFSET 3#define PROCESS_LINK_OFFSET 4#define PROCESS_ID_OFFSET 5#define EXIT_TIME_OFFSET 6typedef ULONG DWORD ;typ

2008-06-05 16:29:00 4353 1

原创 输出驱动程序基本信息

用Device Tree查看“/FileSystem/Fastfat”驱动相关信息,如下图所示:写了个最简单驱动,基本实现类似的功能。extern "C" POBJECT_TYPE *IoDriverObjectType; extern "C" NTSTATUS ObReferenceObjectByName( IN PUNICODE_STRING ObjectPath,

2008-06-04 18:19:00 1220

原创 关于PrintWindow

BOOL PrintWindow(  HWND hwnd,               // Window to copy  HDC  hdcBlt,             // HDC to print into  UINT nFlags              // Optional flags);把指定的可视化窗口拷贝到指定的DC。我的测试方法:目标窗口A,当前窗口B,在B程

2007-10-08 16:06:00 4569 2

原创 游戏寻路算法A*的实现

[测试平台] Celeron 2.4GHZ + 1G内存[演示] (1)    地图大小(size),假设地图都是正方形size (2)    障碍百分比(rate):用于设置障碍点数,障碍数=size*size*rate/100(3)    测试软件的目标是用A*算法在地图中找到最短路径(4)    图示中size = 1000的地图用了624ms,这是比较好的情况,

2007-09-21 13:51:00 2672 1

原创 认识A*算法

总结以下几点(F = G + H):● A*/DFS/BFS都是对状态空间进行遍历的方法,区别在于前者通过估价函数H进行有选择的遍历。   可以这么说,当状态空间非常大的时候可以考虑用A*,只要能找到h就行● A*更新方式与DJ非常接近● A*从已访问结点中选取F最小的结点作为下一次的扩展的起点● 假设评价函数时间复杂度为f(n),设路径长度为n,那么总是时间复杂度 为O(n) * f(n)● G

2007-09-19 15:47:00 1215

原创 Physical Memory Viewer

 读取物理内存的测试软件,暂时无法上传附件,下次补上。 利用undocumented function : NtOpenSection / NtMapViewOfSection / NiUnmapViewOfSection输入格式为16进制数据,根据4K每页边界对齐读取一页

2007-09-14 11:26:00 1080 2

原创 基数排序算法测试及性能分析

 基数排序算法复杂度为O(n),在所有排序算法中是最快的,但并不是所有情况都能使用。使用基数排序的一个很重要的思想是:把关键字拆分为多个字关键字,然后依次按子关键字排序。有两种方式,主优先(0号-->(n-1)号),最次优先((n-1)号-->0号)从目标对于整数排序来看,后者比较方便,如果使用前者的话,对0号子关键字排序后还需要记录不同的子序列,每进行一次子关键字排序必定会产生一系列的字序列,结

2007-09-14 11:03:00 1702 1

原创 利用NtUnmapViewOfSection强制卸载模块

 确实可以卸载指定进程指定位置的模块,但有几个问题:[1]  PEB的模块列表中还存在该模块的记录,大部分模块枚举函数都是枚举这个列表[2]  可能会出现访问异常看来RING3下是不可能做到强制卸载模块的完美实现,要进ring0才行。下面是测试代码typedef ULONG (WINAPI *PFNNtUnmapViewOfSection)( IN HANDLE ProcessHandle

2007-09-14 10:19:00 3015

原创 设计一种注册验证算法模型

先废话两句,(1)这种模型不打算出DEMO,看的懂的可以自己去实现,看不懂的可以交流.(2)非常欢迎各位针对这个模型本身的应用性、安全性进行更深入的探讨!(3)没了。。。///////////////////////////////////////////////////////////////////////////////<img onmouseover="this.style.cur

2007-04-24 19:14:00 853

空空如也

空空如也

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

TA关注的人

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