- 博客(7)
- 收藏
- 关注
原创 山寨OBJECT_TYPE隐藏技术的检测方法
针对《对抗内存搜索对象-教主》一文中山寨OBJECT_TYPE隐藏技术的检测方法: 方法1: [Windows XP sp2] nt!_OBJECT_TYPE +0x000 Mutex : _ERESOURCE +0x038 TypeList : _LIST_ENTRY [ 0x821a55f0 - 0x821a55f
2011-11-25 22:32:44 790
原创 利用PDB文件获取未导出全局变量、函数等信息
方法来源于对Sysinternals的procexp的逆向。在通过kernel的pdb获取未导出的MmSizeOfPagedPoolInBytes和MmMaximumNonPagedPoolInBytes时,procexp执行了如下几个步骤:1. 获取kernel的映像文件名称 调用IsProcessorFeaturePresent判断PAE是否开启,以确定使用ntoskrn
2011-11-25 22:31:28 2170
原创 内核对象有效性的判定
一. 内核对象1. 进程对象(EPROCESS)较简单的方法是判断EPROCESS中的ExitTime是否为0,如果是0则说明该进程正在运行。但是由于该值不会对进程的运行产生任何影响,如果rootkit会在此处填值,使判断失效。根据《Windows 核心编程 第五版》 P231中的叙述,Windows中的进程内核对象中存在一个布尔变量,标示进程是否终止,使得WaitForSing
2011-11-25 22:30:36 1476
原创 SSDT中几个函数的原型和用处
1. RpcNtConnectPort PortName: "\\Rpc Control\\DNSResolver" NtRequestWaitReplyPort 获得DNS解析的内容。 2.监控注册表操作NtCreateKeyNtEnumrateKeyNtSetValueKey 3.监控文件操作NtCreateFileNtQueryDirect
2011-11-25 22:29:25 825
原创 返回地址HOOK
通过几次栈回溯,找到需要hook的地点,将返回地址替换为自己的hook函数。 这种方法应用场景应该不常见,但对于之前提到的《PsSetCreateThreadNotify回调PsLookupThreadByThreadId失败》,这应该是一个不错的解决方案。下面详细说明。第一次回溯,找到了上一级调用函数,在这里为“PspCreateThread”。在这里HOOK依然不能成功调用“P
2011-11-25 22:28:07 1086
原创 PsSetCreateThreadNotify回调PsLookupThreadByThreadId失败
PsSetCreateThreadNotify设置的回调函数中调用PsLookupThreadByThreadId失败。原因在此。在这个回调中因微软的疏忽,VISTA之前的系统调用PsLookupThreadByThreadId查找ThreadId对应的ETHREAD一定会失败。因此应采用二次hook:1.首先保存此处的三个参数,然后找到调用ThreadNotifyRoutin
2011-11-25 22:04:41 1577
原创 世上只有知识不存在再分配
时间久了,再熟悉的东西也会慢慢淡忘。在Google Docs上记录了的那些技巧性的东西,若不分享,怕是将会永远淹没在字节海洋,像从未出现过一样。因此,打算分享部分前几年写的东西。并且今后会经常更新博客,“技巧”可能会少些,更多会记录“技术”积累的点滴。朋友的一句话:“世上只有知识不存在再分配。”
2011-11-25 22:00:37 302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人