摘要: 最近闲得没事做,想逆几个驱动玩玩,于是就把目标投向了Xuetr,利用Xuetr查询它的驱动文件位置发现DriverPath里面显示的是驱动的位置,但是驱动文件死活找不到,原来是因为它在加载完驱动之后,马上自删除了该文件,估计是考虑到不想被别有用心的人拿来逆向吧今天我们的任务就是要来获取这个SYS文件,然后利用IDA来XX,以学习Xuetr里面的一些先进技术一开始想到的方法是既然文件在这个位置出现过,那么我写一个死循环的函数来不断的CopyFile,这样不就可以获取到它的SYS文件么,于是就有了下面的代码#include <windows.h>#include <stdio.h 阅读全文
posted @ 2012-11-10 16:40 unixstudio 阅读(4264) 评论(0) 推荐(0) 编辑
摘要: Windows内部有很多的对象类型,比如PROCESS类型,THREAD类型,FILE类型,LPC PORT类型,DEVICE类型等等,我们可以使用sysinternal提供的winobj工具来查看(win7 x86 sp1)在编程的过程中我们有时候需要用到类型的索引(TypeIndex),由于在不同的操作系统版本中TypeIndex会发生改变,本文将教大家一种方法来遍历这些类型还有其相应的TypeIndex首先要知道类型也是一种对象,同样它也有OBJECT HEADER,OBJECT BODY等信息,是通过OBJECT MANAGER对象管理器来管理的在这些类型对象当中有一个非常重要的对象, 阅读全文
posted @ 2012-11-09 16:50 unixstudio 阅读(4777) 评论(3) 推荐(0) 编辑
摘要: 前面的<<HOOK IAT RING3>>文章中使用到了shellcode,那么这个shellcode是怎么制造出来的呢,本文将为你一步一步的解惑这个shellcode的主要功能是调用MessageBoxA弹出一个空的对话框,注意此时的地址空间是在别的进程,由于不同的操作系统会影响动态链接库的加载地址,而且不同版本的dll中函数的偏移量RVA也不尽相同,因此写一个通用型的shellcode就显得非常的有必要那么shellcode要怎么动态去定位API的地址呢,方法还是一样的,首先定位函数所在的模块,然后在EAT里面进行搜索即可,只要找到Kernel32.dll中的Get 阅读全文
posted @ 2012-11-09 00:28 unixstudio 阅读(2390) 评论(2) 推荐(2) 编辑
摘要: IAT(Import Address Table,输入地址表):当PE文件装入的时候,Windows加载器的工作之一就是定位所有被输入的函数和数据,并且让正在被装入的文件可以使用那些地址,输入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于相关的dll等文件中,当然只有被程序调用到的函数才会出现在IAT中(EAT是PE中所有导出的函数或者变量,注意区别,一般的EXE文件不会有导出表,但并不是说EXE不能导出函数或者变量)所谓的HOOK IAT就是钩住感兴趣的函数,然后改变程序的执行流程或者对该函数进行监控PE结构的输入表以一个IMAGE_IMPORT_DESCRIPTOR( 阅读全文
posted @ 2012-11-08 23:31 unixstudio 阅读(2286) 评论(0) 推荐(1) 编辑
摘要: 操作系统的内核模块根据处理器的个数和是否支持PAE(Physical Address Extension物理地址扩展)分为以下四种 ntoskrnl.exe ---Uniprocessor单处理器,不支持PAE ntkrnlpa.exe ---Uniprocessor单处理器,支持PAE ntkrnlmp.exe ---Multiprocessor多处理器,不支持PAE ntkrpamp.exe ---Mulitiprocessor多处理器,支持PAE操作系统实际上加载的内核模块只能是上述四种中其中的一种本文介绍的方法比较通用,没有局限性,可以正确的获得系统内核的基地址,主要方法有以下几种:通 阅读全文
posted @ 2012-11-05 16:22 unixstudio 阅读(5743) 评论(1) 推荐(1) 编辑
摘要: 只要稍微熟悉PE结构就能很快写出来,GetProcAddress的原型如下FARPROC WINAPI GetProcAddress(HMODULE hModule,LPCSTR lpProcName) hModule是指模块的基地址,比如用LoadLibrary加载dll返回的地址 lpProcName顾名思义就是函数或者变量的名称,但也可以是函数或者变量在模块中的序号(ordinal)本文实现的GetProcAddress没有实现序号的功能,仅仅是通过名字字符串来得到地址,主要是因为dll版本的不同会导致序号发生改变,因此这里不提倡使用序号来获取地址(虽然序号可以不用通过查找而直接获得地址 阅读全文
posted @ 2012-11-05 01:23 unixstudio 阅读(760) 评论(0) 推荐(0) 编辑