- 博客(24)
- 资源 (3)
- 收藏
- 关注
转载 JIURL玩玩Win2k内存篇 内存共享(一) ProtoPTE
内存共享 Windows 2000 中进程之间共享内存的几个主要应用是, 一个 dll(动态链接库)可能被多个进程使用,应该被共享。一个程序也应该可以被多个运行的实例共享。通过文件映射(Memory Mapped File)实现的进程之间通过内存通信,传输数据。 每个进程有自己的4G地址空间,地址空间通过进程自己的页目录和页表,以页为单位映射物理内存。把两个不同进程的一页地
2008-06-18 18:17:00 936
转载 JIURL玩玩Win2k 地址空间的布局
地址空间的布局,每个进程有4G的地址空间,其中低2G是用户地址空间,高2G是系统地址空间。用户地址空间的布局 每个进程有自己的用户地址空间(低2G),在用户地址空间中有,进程的环境变量,进程的参数,进程的堆(Heap),进程载入的模组,进程PEB,线程的堆栈(Stack),线程TEB等等。我写了一个叫 JiurlL2gLayoutSee 的程序,可以获得一个指定进程的用户地址空间
2008-06-18 18:16:00 1593
转载 JIURL玩玩Win2k进程线程篇 EPROCESS
每个进程都有一个 EPROCESS 结构,里面保存着进程的各种信息,和相关结构的指针。EPROCESS 结构位于系统地址空间,所以访问这个结构需要有ring0的权限。使用 Win2k DDK 的 KD (内核调试器)我们可以得到 EPROCESS 结构的定义。注意下面的是 Win2k Build 2195 下的 EPROCESS 结构定义。kd> !strct eprocess!str
2008-06-18 18:16:00 983
转载 JIURL玩玩Win2k内存篇 内存共享(二) CopyOnWrite
CopyOnWrite 对于同一个可执行文件运行的两个进程,或者被多个进程共享的动态链接库,只读共享代码部分的物理页是没有问题的。而对于向代码页中写(调试器就可能向代码页中写),这将会影响其他共享这个代码页的进程的正确执行。或者数据页比如说初始化了的全局变量所在的页,每个进程可能会写入不同的数据,也将影响其他共享这个页的进程的正常运行。为了使程序正常运行,应该使每个进程的可能被写的页映
2008-06-18 18:15:00 793
转载 JIURL玩玩Win2k进程线程篇 PEB
PEB,Process Environment Block ,进程环境块。位于用户地址空间。在地址 0x7FFDF000 处。所以用户进程可以直接访问自己的 PEB 结构。Win2k Build 2195 中进程的 EPROCESS 结构偏移+1b0 处的 *Peb 也指向 PEB 结构。在 undocumented.ntinternals.net (需要注意的是这是个非官方的站点)我们可以找到
2008-06-18 18:13:00 609
转载 JIURL玩玩Win2k进程线程篇 ETHREAD
每个线程都有一个 ETHREAD 结构。Win2k Build 2195 中 ETHREAD 结构定义如下kd> !strct ethread!strct ethreadstruct _ETHREAD (sizeof=584)+000 struct _KTHREAD Tcb+000 struct _DISPATCHER_HEADER Header+000 byte Ty
2008-06-18 18:13:00 923
转载 JIURL玩玩Win2k进程线程篇 TEB
TEB,Thread Environment Block,线程环境块。位于用户地址空间。在比 PEB 所在地址低的地方,比如 0x7FFDF000,0x7FFDE000。每个线程都有自己的一个 TEB。由于 TEB 在用户地址空间,所以本进程中运行在用户模式下的代码就可以访问 TEB 结构。Win2k Build 2195 中一个线程的 ETHREAD 结构偏移 +020 处的 *Teb 指向这个
2008-06-18 18:12:00 591
原创 JIURL玩玩Win2k内存篇 Page Frame Number Database
引子 当系统需要提供一个物理页给应用程序,来满足应用程序要求的时候,将遇到一个问题,系统如何知道哪些物理页已经被使用,哪些物理页没有被使用。Page Frame Number (PFN) DataBase (页帧号数据库)和它的相关结构用来解决这个问题。Working Set 简介一个进程的 Working Set 是进程当前所使用在物理内存中的页的集合。程序使用这些页不会引
2008-06-18 18:12:00 874
原创 JIURL玩玩Win2k进程线程篇 HANDLE_TABLE
Win2k Build 2195 中 EPROCESS 偏移+128 处的 struct HANDLE_TABLE *ObjectTable ,就是指向该进程 HANDLE_TABLE 结构的指针。通过一个进程的 HANDLE_TABLE 结构,我们可以找到这个进程打开的所有对象。我们在程序中获得的各种句柄,就是对象在句柄表中的索引。例如,在程序中打开文件,获得的是一个句柄(HANDLE)。接下来
2008-06-18 18:11:00 1258
转载 浅析 Win2K 中堆(Heap)的实现
关于Win2k堆的实现和里面的数据结构,没有任何的官方描述(差不多可以这么说吧),非官方的东西也只要几篇关于堆溢出的文章提到了一点,还充满了错误(差不错可以这么说吧)。本文通过分析,试验和猜测,来获得知识,同样可能充满了错误,大家多保重。我最近在学习Windows系统,如果有哪位有兴趣,有时间,也有能力的话非常非常欢迎和我联系,或许能互相帮助。本文只是半成品,很多地方没有力求详尽,也非常非常欢迎大
2008-06-18 18:10:00 540
转载 JIURL玩玩Win2k内存篇 VAD
在程序中我们可以使用 VirtualAlloc 在用户地址空间(4G地址空间中的低2G)中申请(保留或者提交)指定地址和大小的一段地址空间。那么系统如何知道指定的这段地址空间是不是已经被分配(保留或者提交)。对于指定地址空间是否已经被提交了物理内存,可以通过页目录和页表来判断,不过这样做很麻烦。而对于指定地址空间是否已经被保留,通过页目录和页表没有办法判断。Win2k 中使用 VAD 来解决这个问
2008-06-18 18:09:00 893
转载 JIURL玩玩Win2k内存篇 LookasideList
系统的堆的简介 系统的堆是系统的数据动态申请和释放的地方。Win2k 把系统堆叫做 pool。根据是否可以被换出物理内存,分为 PagedPool 和 NonPagedPool。LookasideList Windows 2000 中有很多种结构,这些结构需要动态申请。也就是在系统的 pool 中申请。在 pool 中申请和释放内存都是比较慢的,因为申请的时候需要在 poo
2008-06-18 18:08:00 673
转载 JIURL玩玩Win2k 对象
Windows 2000 中有如下27种对象 Directory Thread Mutant Controller Type Profile Event SymbolicLink Section EventPair Desktop Timer File WindowStation Driver WmiGuid Token Device IoCompletion Process Adapter K
2008-06-18 18:07:00 1191
转载 JIURL玩玩Win2k内存篇 分页机制 (一)
基本概念 Windows 2000 使用基于分页机制的虚拟内存。每个进程有4GB的虚拟地址空间。基于分页机制,这4GB地址空间的一些部分被映射了物理内存,一些部分映射硬盘上的交换文件,一些部分什么也没有映射。程序中使用的都是4GB地址空间中的虚拟地址。而访问物理内存,需要使用物理地址。下面我们看看什么是物理地址,什么是虚拟地址。物理地址 (physical address
2008-06-18 18:05:00 552
转载 JIURL玩玩Win2k内存篇 分页机制 (二)
进程的页目录和页表在虚拟地址空间中的位置 当执行一条访问内存的指令时,如果寄存器中的分页标志位已经被设置,CPU就自动完成虚拟地址到物理地址的转换,来完成该指令。CPU在转换地址过程中,并不需要页目录和页表的虚拟地址。但是分页标志位被设置之后,CPU会把所有指令中的地址当做虚拟地址转换成物理地址。所以程序中使用的都是虚拟地址。一个进程的页表和页目录是由系统维护的,比如一个进程申请或者释
2008-06-18 18:05:00 1190
转载 JIURL玩玩Win2k内存篇 分页机制 (四)
为什么地址空间的大小是4G 使用32bit的cpu话,处理32bit的数据比较好。这就决定了在代码中将被非常频繁使用的地址是32bit的。而32bit的地址可以寻址的范围是从0x00000000 到 0xFFFFFFFF ,也就是4GB(对于以字节为单位的编址)大小的范围。也就决定了地址空间的大小是 4G。为什么一页的大小是4K(只是我个人的看法) 确定了虚拟地址空
2008-06-18 18:04:00 635
转载 JIURL玩玩Win2k内存篇 分页机制 (三)
8种转换由于页表被映射到了0xc0000000 开始的4MB地址空间。所以我们也可以象CPU那样完成虚拟地址到物理地址的转换。系统按照对应虚拟空间的先后顺序,把一个进程的页表映射在0xc0000000 开始的4MB地址空间中,把页目录映射在0xc0300000 开始的4KB地址空间中。于是我们可以做如下几种地址的相互转换。1 虚拟地址->虚拟地址对应的PDE地址
2008-06-18 18:02:00 643
转载 [转载]逆向工程不是炫耀者用来装B的工具
逆向工程不是炫耀者用来装B的工具,因为逆向工程从来就是个脑力活加体力活,同时也是对逆向者身心的极大摧残和对意志力的严峻考验。它需要时间,更需要毅力,任何半途而废的举动都会导致前功尽弃的结果。而这些成本我相信都是那些想要炫耀一时的浮躁者所不肯付出的。 如果说反汇编只是功力不足的浮躁者或者是对解剖对象的不屑者走马观花式的分析举动,那么逆向工程就是长期浸淫于此的心静者和对二进制强烈好奇的探
2008-06-18 08:07:00 623
转载 扩展Int 13H调用规范
第一部分 简 介一. 硬盘结构简介1. 硬盘参数释疑到目前为止,人们常说的硬盘参数还是古老的 CHS (Cylinder/Head/Sector)参数。那么为什么要使用这些参数,它们的意义是什么?它们的取值范围是什么? 很久以前(long long ago ...),硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数。由此产生了
2008-06-16 14:25:00 772
原创 详解如何穿透还原
mov cx,512/2 ;设置循环次数(512/2) mov si,7c00h mov dx,1f0h ;数据端口,用来存放要发送的数据. rep outsw ;发送数据. ; ------------------------------------------------------------------------------ ;退出程序 mov ah,4ch
2008-06-16 14:04:00 1322 1
原创 从校内CSS模板引发的思考
前几天去校内网溜达 无意中来到了我们寝室一个室友的校内 进去后吓我一跳,上面写着有7万多访问量 并且是校内红人VIP ,好羡慕啊,不过后来想想不可能啊,自己寝室的室友我还不了解嘛, 再怎么说也不能上万的访问量啊,后来再他主页上翻了半天 终于找出了他的“伎俩” 原来是CSS 模板惹得祸啊 ,校内的CSS模板是能够自己设置的,他的访问量本来是3位数,几百访问量,再这个数字的前面的几个数字居然是CSS图
2008-06-11 08:55:00 709
原创 (留念)第一个视频教程 U盘超级加密软件的原理详解与解密
---------------------------------------------------------------------------爱国者安全网www.3800hk.com中国最大的网络安全资讯门户站多抽出一分钟时间学习.让你的生命更加精彩.动画教程只是起到技术交流作用.请大家不用利用此方法对国内的网络做破坏.国人应该团结起来一致对外才是我们的责任.由此动
2008-06-04 09:54:00 4290 2
原创 cpu 工作在 8086下的1M内存使用情况 整理
CPU工作在 8086模式下,BIOS在初始化完系统后,在1M内存的使用情况从内存最后的单元开始划分9FFFFF-FFFFF 384KB上位内存保留以下是640kb的常规内存 0-9FFFF9FC00-9FFFF BIOS 扩展数据区 1KB07E00-9FC00 是607KB的空内存区域 (估计是存放数据用)07C00-07E00系统引导扇区安放位置 512B0-07
2008-06-04 09:41:00 1509
原创 汇编 特殊符号 解释
80X86 汇编指令符号大全 +、-、*、/∶算术运算符。 &∶宏处理操作符。宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了。 $∶地址计数器的值——记录正在被汇编程序翻译的语句地址。每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值。 ?∶操作数。在数据定义语句中,操作数用?,
2008-06-02 13:14:00 7537 1
dos 汇编学习笔记(记录了很多小的细节和应该注意的东西)
2009-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人