摘要:http://www.cnblogs.com/yifi/p/6480704.html 利用LoadImageNotify回调拦截DLL加载,1.这个时候写内存有可能导致死锁;2.DLL被拦截一次之后,重启前再也无法加载 最简单的方法,拦截IRP_MJ_CREATE,发现带FILE_EXECUTE属性
阅读全文
摘要:http://bbs.pediy.com/thread-145687.htm http://www.pediy.com/kssd/pediy11/104918.html KeUserModeCallback的基础知识我们都知道一个普通的系统调用,它的过程大概是这样的(以OpenProcess为例):
阅读全文
摘要:PEB >LDR >InLoadOrderModuleList 通过循环遍历LDR_DATA_TABLE_ENTRY中的BaseDllName找到Kernel32.dll找到Dll ntdll!_LDR_DATA_TABLE_ENTRY +0x030 DllBase得到文件内存首地址通过PE文件导入
阅读全文
摘要:// Class.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <Windows.h> using namespace std; class Base //Derive的间接基类 { public:
阅读全文
摘要:在X86Windows中,函数通过以下步骤来参与SEH: 1.在自身的栈空间中分配并初始化一个EXCEPT_REGISTRATION(_RECORD)结构体。 2.在该EXCEPTION_REGISTRATION(_RECORD)挂入当前进程的异常链表。 当某个函数触发异常时,系统首先通过调用KiD
阅读全文
摘要:参考链接:http://www.dewen.net.cn/q/302/ INT 0x2E在系统调用的时候,需要进行栈切换的工作。由于Interrupt/Exception Handler的调用都是通过 call/trap/task这一类的gate来实现的,这种方式会进行栈切换,并且系统栈的地址等信息
阅读全文
摘要:参考链接:http://www.cnblogs.com/LittleHann/p/3458736.html 创建一个Windows进程,是由操作系统进行3各部分执行组成 1.客户的Windows库的Kernel32.dll 2.Windows执行 3.Windows子系统进程(Csrss.exe)
阅读全文
摘要:1 #include 2 3 typedef unsigned long DWORD; 4 5 typedef struct _KLDR_DATA_TABLE_ENTRY { 6 LIST_ENTRY InLoadOrderLinks; 7 PVOID ExceptionTable; 8 ULONG ExceptionTableSize; 9 ...
阅读全文
摘要:#include using namespace std; void QuickSort(int a[],int l,int r) { int mid = a[(l+r)/2]; int lwalker = l; int rwalker = r; while (lwalker mid) rwalker--; if (lwalker l)...
阅读全文
摘要:1 先入先出法(FIFO)最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在
阅读全文
摘要:一、首次适应算法 使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。 然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。 该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区很少被利用,从而保留了高地
阅读全文
摘要:一、Ring3层方法总结 1)利用Createtoolhelp32Snapshot Createtoolhelp32Snapshot会返回当前进程的进程快照句柄 通过 Process32First 和 Process32Next枚举进程 1 #include "stdafx.h" 2 #includ
阅读全文
摘要:进程内组件 进程外组件直接指向组件程序的VTableextern "C" _declspec(dllexport) int _stdcall MyFunction(int n); 可以按照函数的序号查找 在DEF文件中指名也可以根据函数的名称查找COM采用本地过程调用 和 远程过程调用 LPC RP
阅读全文
摘要:/* 为什么要有伸展树 根据80-20黄金法则即80%的访问发生在20%的数据上,所以如果我们能够把经常访问的节点推到靠近根节点的位置, 那么就可以极大的提高访问速度。 根据这个思路,我们提出了 “ 旋转到根 ” 这一思路, 具体的:每次查找、插入、删除一个节点,我们都使用旋转的方法把这个节点旋转到根节点的位置, 并且因为旋转操作能够很好的把其他访问路径上的节点向上移动, 所以最后这经常访问...
阅读全文
摘要:/* ① 如果树 T 是 AVL 树,那么它的左右子树都是 AVL 树; ② T 的左右子树高度差小于等于 1。 高度是 O(logn) 平衡因子 = 每个结点的左子树高度 - 右子树高度 AVL 搜索树的搜索和二叉排序树搜索的算法一样, 但插入操作和删除操作就不能完全按照二叉排序树的插入和删除来进行 当在插入路径上存在不平衡点时,把离插入点最近的不平衡点称为A 节点 1) 插入...
阅读全文
摘要:USN是Update Service Number Journal or Change Journal的英文缩写,直译为“更新序列号”,是对NTFS卷里所修改过的信息进行相关记录的功能。当年微软发布Windows 2000时,建立NTFS 5.0的同时,加入了一些新功能和改进了旧版本的文件系统,为它
阅读全文
摘要:/* * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ * │Esc│ │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│ ┌┐ ┌┐ ┌┐ * └───┘ └───┴───┴───┴...
阅读全文
摘要:http://www.mengwuji.net/thread-6765-1-1.html 进程加载模块顺序 : ModLoad: 00f60000 00f80000 C:\Users\YIFI\Desktop\AVL\Debug\AVL.exe // 自己本身ModLoad: 77700000 77
阅读全文