摘要: http://sourceforge.net/projects/line/2001年的,连名字都想的一样,这还有天理吗我说这是我独立思考出来的,名字也是我起的,不知道还有么有人信。。。不过既然有人开路了,又赶在我前面,我就识相的跟他后面走吧人家坚持了三个月就跑了,我把它接手过来吧update:连elf loader都已经有了http://sourceforge.net/projects/lbw/在... 阅读全文
posted @ 2010-04-05 22:41 gussing 阅读(943) 评论(0) 推荐(0) 编辑
摘要: 最近有那么一个想法,要开发一个东西叫LINE。我们都知道linux上有一款很牛逼的软件叫WINE(WINE Is Not Emulater),可以在linux上运行windows程序。LINE(LINE Is Not Emulater)就是WINE的反面,让linux程序在windows上运行。http://gussing.cnblogs.com/ WINE之所以可行是基于这么一个事实:windo... 阅读全文
posted @ 2009-10-30 16:48 gussing 阅读(2472) 评论(3) 推荐(3) 编辑
摘要: 有了前面的介绍,堆管理的大体框架已经清楚了,但为了使内容完整,我们还是需要看看释放内存时具体都干了些什么。gussing.cnblogs.com函数RtlFreeHeap接受一个PVOID的参数作为内存地址,却不需要指定内存的大小。这是一个很有趣的地方,malloc,HeapAlloc等申请内存的函数都会指定所需内存的大小,但相应的free函数和HeapFree函数都不需要指定大小。我在面试应聘者... 阅读全文
posted @ 2009-10-01 21:25 gussing 阅读(2879) 评论(0) 推荐(1) 编辑
摘要: ring3里的API HeapAlloc, HeapFree在Kernel32.dll里实现,最后都转到NTDLL.dll里的RtlAllocHeap函数和RtlFreeHeap函数。ring0里要操作堆直接调用ntdll.exe里的RtlAllocHeap函数和RtlFreeHeap函数。这两处地方的两个函数名字一样,所作事情也基本没差别,但千万记住它们是不同的,一个在ring0,一个在ring... 阅读全文
posted @ 2009-09-28 17:42 gussing 阅读(1493) 评论(0) 推荐(1) 编辑
摘要: 严格的说,用户态和内核态都有堆管理相关的内容,两者用的是同一份代码,稍微有些不同的地方就用宏隔开。在windows上写c程序会有不止一个的“堆管理器”介入,比如malloc, free用c runtime的堆管理器;用户态的HeapAlloc,HeadFree等函数用ntdll.dll里的堆管理器;内核态的RtlHeapAlloc,RtlHeapFree等用ntoskrnl... 阅读全文
posted @ 2009-09-26 16:49 gussing 阅读(1609) 评论(0) 推荐(2) 编辑
摘要: 一个进程在其生命周期内可能会打开很多个内核对象,这些对象需要得到很好的管理才能保证效率。NT内核使用Table来保存这些打开对象,该Table的指针存放在EPROCESS->ObjectTable里。gussing.cnblogs.com当我们访问ObjectTable时,需要确定的有两个信息:Table地址和表的级数。Object Table并不总是一个巨大而平坦的线性列表,因为有时候内核... 阅读全文
posted @ 2009-08-30 16:30 gussing 阅读(1432) 评论(0) 推荐(2) 编辑
摘要: 有那么一段时间,“对象”基本上是当时IT届最流行的词语,无论什么东西都要搭上“对象”的概念才够体面。NT核就诞生在那个年代,所以在其设计概念中有“内核对象”这么一个牛逼的物件。几乎所有的windows内核组件,包括进程,线程,文件,设备等都属于内核对象,它们有一组共有的数据以及几个函数指针以提供抽象的访问,基本上c语言要玩&l... 阅读全文
posted @ 2009-08-22 19:53 gussing 阅读(1802) 评论(0) 推荐(1) 编辑
摘要: ntoskrnl.exe导出了很多内核例程供驱动开发人员方便的使用,它也隐藏了很多很强大的历程,防止驱动开发人员过于方便的用它们。比如PspExitThread,这个函数没什么特别的,但配合APC使用它就能杀死绝大多数的进程,包括一些杀毒软件在内。gussing.cnblogs.com 那么如何才能找到这些未导出的函数并使用它们呢?答案就是反汇编,借助强大的windbg,加上一点点汇编基础,操作系... 阅读全文
posted @ 2009-08-18 14:35 gussing 阅读(3212) 评论(1) 推荐(0) 编辑
摘要: PsTerminateProcess函数用于结束一个进程,其声明如下 NTSTATUS NTAPI PsTerminateProcess(IN PEPROCESS Process, IN NTSTATUS ExitStatus) 其中第一个参数是PEPROCESS的指针,如果你只知道pid,可以通过PsLookupProcessByProcessId 获得,而第二个参数指定退出状态码。 Ps... 阅读全文
posted @ 2009-08-11 17:44 gussing 阅读(3895) 评论(3) 推荐(0) 编辑
摘要: ReadProcessMemory函数用于读取其他进程的数据。我们知道自远古时代结束后,user模式下的进程都有自己的地址空间,进程与进程间互不干扰,这叫私有财产神圣不可侵犯。但windows里还真就提供了那么一个机制,让你可以合法的获取别人的私有财产,这就是ReadProcessMemory和WriteProcessMemory。为什么一个进程居然可以访问另一个进程的地址空间呢?因为独立的只是低... 阅读全文
posted @ 2009-07-01 19:23 gussing 阅读(20802) 评论(3) 推荐(3) 编辑