加载中…
新浪微博
个人资料
刷百度MP3歌曲排名
刷百度MP3歌曲排名
  • 博客等级:
  • 博客积分:0
  • 博客访问:23,763
  • 关注人气:12
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
访客
加载中…
好友
加载中…
评论
加载中…
留言
加载中…
博文
标签:

娱乐

刷百度MP3新歌TOP100排名
刷百度MP3歌曲TOP500排名
刷百度MP3歌手TOP200排名
刷百度MP3新歌TOP50排名
刷百度MP3歌曲TOP20排名
刷百度MP3歌手TOP10排名
联系QQ:2249327391
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 内核
Windows系统的各种资源以对象(Object)的形式来组织,例如File Object, Driver Object, Device Object等等,但实际上这些所谓的“对象”在系统的对象管理器(Object Manager)看来只是完整对象的一个部分——对象实体(Object Body)。Windows XP中有31种不同类型的对象,Object Body反映了某一类型对象的特征信息,例如,文件对象使用FILE_OBJECT结构描述、驱动对象使用DRIVER_OBJECT结构描述、DEVICE_OBJECT用于描述设备对象等等。而各种Object的共有的信息(例如,对象类型、对象的引用计数、句柄数等信息)保存在OBJECT_HEADER与其他的几个结构中。换而言之,在对象管理器内部,不同类型的对象具有相同的Object Header,但Object Body部分却是不同的。
先放上一张Windows Object完整的结构图,其中OBJECT_HEADER取自Windows XP SP2 英文版。

        +----------------------------------------------------------------+
+------->| ( OBJECT_HEADER_QUOTA_INFO )                                  |
+---->
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 内核
[前言]
——————————————————————
之前给原作者发过邮件,不过没能得到unlocker的源代码,所以自己逆向了一份;
逆向的很匆忙,因为近来事情太多,而且unlocker本身也是版权所有,所以不好做的太露骨;
本人也还有不少地方不是很明白,有机会和我联系,一起探讨 :-)
感谢EagleNet的讨论,没有你我也没这么快写完这篇分析。


[关于unlocker]
——————————————————————
Unlocker是一个免费的工具,原作者的网站是:http://ccollomb.free.fr/unlocker
当使用者发现有某个文件或目录无法删除时,只要按下鼠标右键中的'Unlocker',
程序会显示出是哪一些程序占用了该目录或文件,接着只要按下'Unlock'就能够为你的文件解锁。


==============================Here we start=======================================

[大致流程]
——————————————————————
主程序Unlocker.exe通过Z
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 内核
下面是一个驱动监控进程的代码,可能很多人都见过,我对那个线程同步的地方不太理解,已经用红色标出了,麻烦各位大牛给指点下。非常感谢!
//这个函数决定是否 NtCreateSection() 被成功调用

ULONG __stdcall check(PULONG arg)//获得指向服务参数指针
{

  HANDLE hand=0;PFILE_OBJECT file=0;

  POBJECT_HANDLE_INFORMATION info=0;ULONG a;char*buff;
  ANSI_STRING str; LARGE_INTEGER li;li.QuadPart=-10000;

if((arg[4]&0xf0)==0)return 1;//检测标志
if((arg[5]&0x01000000)==0)return 1;//检测属性


//通过文件句柄获得文件名
hand=(HANDLE)arg[6];//获得执行文件句柄

ObReferenceObjectByHandle(hand,0,0,KernelMode,&file,info);//&file获得对象体指针
if(!file)return 1;

RtlUnicodeStringToAnsiString(&str,&file->FileName,1);

a=str.Length;buff=str.Buffer;

while(1)//通过循环判断是不是有'. '标志
{
 
if(bu
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 内核
驱动部分
;@echo off
;goto make

;********************************************************************
;author  :dge
;homepage:http://llfdge.googlepages.com/
;date    :2007.3.16
;********************************************************************

.386
.model flat, stdcall
option casemap:none

include                d:\masm32\include\w2k\ntstatus.inc
include                d:\masm32\include\w2k\ntddk.inc
include                d:\masm32\include\w2k\ntoskrnl.inc
includelib        d:\masm32\lib\w2k\ntoskrnl.lib
include                d:\masm32\Macros\Strings.mac
include                common.inc

_DispatchCreateClose proto :PD
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 内核
今天无意中看了眼 2.6 内核的软中断实现,发现和以前我看到的大不相同
(以前也是走马观花,不大仔细),可以说改动很大。连 softirq 的调用
点都不一样了,以前是三个调用点,今天搜索了一下源代码,发现在多出了
ksoftirqd 这个东西后,softirq 在系统中的调用点仅是在 ISR 返回时和
使用了 local_bh_enable() 函数后被调用了。网卡部分的显示调用,我觉
得应该不算是系统中的调用点。ksoftirqd 返回去调用 do_softirq() 函数
应该也只能算是其中的一个分支,因为其本身从源头上来讲也还是在 ISR 返
回时 irq_exit() 调用的。这样一来就和前些日子写的那份笔记
(Windows/Linux/Solaris 软中断机制)里介绍的 Linux 内核部分的软中
断有出处了,看来以后讨论 Linux kernel 代码一定要以内核版本为前题来
说,要不非乱了不可。看来得买本 Linux 方面的书了,每次上来直接看相
关代码也不是回事,时间也不允许。


linux kernel source 2.6.19.1
/kernel/softirq.c

//
// do_IRQ 函数执行完硬件 ISR 后退出时调用此函数。
//

void irq_exi
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 内核
在 solaris10 中,模块的操作都是通过系统调用modctl实现的,这里我们只分析执行modload时
系统的反应,先套用Solaris internals里关于模块加载的说明:

The kernel module loading facility is threaded. That is, when the kernel modload()
function is called (during bootstrap or by the modload(1M) command), it
creates a kernel thread to perform the module load function. The benefit here is
that concurrent module loads are possible on multiprocessor systems and so provide
faster system boot and initialization. Once the kernel thread is created, the
following series of events is executed to complete the loading and linking of the
module.
1. Create and allocate a modctl structure. First, search the linked list of
   modctl structures, looking for a match to the module name (mod_modname).
   If a match is found, return address of existing structure; otherwise, create a
   new one. Add a new modctl
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 内核
本笔记对 linux kernel 的文件系统操作以及设备操作进行了分析,主要是针
对 ext3 文件系统的 open 流程的分析,目的是为了解答心中的几个疑问:

1、一个文件的操作流程,系统是如何把 struct file 与 struct dentry
   以及 struct inode 结合起来的?

2、文件与设备驱动都是对 VFS(Virtual File System) 抽象出来的 struct file
   进行操作的,那么系统是如何区分的?在哪里开始区分的?

3、linux 内核中没有类 UNIX VFS(Virtual File System) 提供的 struct vnode
   结构,那么具体的文件操作是如何与实际文件系统的操作挂钩的?

4、超级块(super block)在文件与设备驱动操作中起到的作用?

5、在以前的尝试中对 struct file 做手脚为什么影响不到全局?

6、在文件系统内核有几个函数操作集?有何不同?分别是在什么时候赋值?

注:此文档是根据当时的分析过程记录的,分析顺序也就没有再更改过,
    每个人读内核源码的思路不同,或者说目的不同,流程自然也就不同。
    所以在
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

杂谈

分类: 逆向

 

最近需要在访问指定文件时中断下来,但不知道如何下断,在网上搜索了一番无果,只好自己摸索了。听大侠说windbg的条件断点功能异常强大,可以实现,不禁心痒,特尝试一番,顺便熟悉一下windbg的脚本语法。

先来了解简单的,得到当前访问的文件名
先写段C代码,创建C:\a.txt并往文件中写任意几个字符,代码如下:
    HANDLE hFile=CreateFile('C:\\a.txt',
      GENERIC_WRITE|GENERIC_READ,
      0,
      NULL,
      OPEN_ALWAYS,
      FILE_ATTRIBUTE_NORMAL,
      NULL);
    if (hFile == INVALID_HANDLE_VALUE) 
    {
      return ;
    }
 &nbs

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2011-06-02 13:27)
标签:

it

分类: 逆向

 

$$ Win32KCall Script v0.1
$$ by Tesla 2009.05.20

aS ufLinkS '<u><col fg=\\\'emphfg\\\'><link name=\\\'%x\\\' cmd=\\\'uf 0x%x\\\'>';
aS ufLinkE '</link></col></u>';

$t1 nt!KeServiceDescriptorTableShadow;
$$r $t1 8055a6c0;
$t2 poi(@$t1 18);
$t1 poi(@$t1+10);

.printf '\nOrd   Address   fnAddr   Symbols\n';
.printf '--------------------------------\n\n';

.for (r $t0 0; @$t0 != @$t2; $t0 @$t0 1)
{
    $t3 poi(@$t1);
    .printf /D '[=] 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有