欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

反内存监视集绵

反内存监视集绵

反内存监视集绵

/**************************************
/* 
/* 博客:http://hi.baidu.com/bjblcracked
/* 
/**************************************


只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

   相信不少朋友辛辛苦苦找到的补丁数据,被别人轻而易举的窃取了...
本文就来讲讲怎么防止别人窃取我们的补丁数据...(这也是个矛与盾的话题,本文只是把常见的方法一一列举出来...)

前言:
  我们先讲API HOOK.
  API HOOK 技术,对于新手来说可能非常的神秘,其实它并不神秘,用一句话来概述就是 [抢在它前面,做些小动作.] 或 [修改EIP] 等.
  现在的家用电脑的U普遍都是x86. 在保护模式下,每个进程都是独立的虚拟4GB内存空间.它们彼此都互不干扰.
  如果我们想访问或者修改某个进程的某个内存空间.我们就必须得到那个进程的EPROCESS , 然后通过EPROCESS 找到 CR3  再把想要访问或者读写的内存地址按CR4里的PAE位拆分. 然后再把CR3 加上 拆分后的 PDE   加上拆分后的PTE  加上OFFSET.等等...我们才能实现R/W一段内存空间. 但是仅仅知道这些是不行的,因为这些我们用户层是没有权限访问CR3的,因此我们又不得不去了解段机制. 天呐~~ 仅仅一个读写内存就这么麻烦??? 是的,就是有这么麻烦..不过还好.MS的人考虑的周到.他们把这些烦锁的步骤,封装成一个方法.供我们调用.欲称Windows API.


No1: Anti Hook API(先斩后奏)
   

  上面说的烦锁的过程,我们可以通过2个API轻松实现.
  Kernel32!ReadProcessMemory    // 读指定进程内存
  Kernel32!WriteProcessMemory   // 写指定进程内存
  
  知已知彼 百战不殆!
  通过Kernel32!WriteProcessMemory 就能制作我们的补丁程序了. 如果想知道别人写什么数据,我们可以通过HOOK Kernel32!WriteProcessMemory 这样的函数. 来得到别人的补丁数据.
  这样的偷窃也很好反.我在这里就举两三个小例子.
1) 设置分页属性.
我们知道物理页(PA), 一般有
 
---------------------------PTE-------------------------------------------------
第0位 P位:    为1时 存在     | 为0时 不存在.  
第1位 R/W位: 为1时 可写     | 为0时 不可写  
第2位 U/S位:  为1时 用户权限 | 为0时 系统权限   
---------------------------------------------------------PTE-------------------
之区分. 
这些属性在 PTE(页表项) 对应的 第0位 第1位 第2位.
P位为0时,我们在OD下,访问会显示 "No memory on the specified address" 
在Windbg下访问,会显示 "?? ?? ?? ?? ...."
R/W 或 U/S 位为0时, 我们访问,会提示一个 0xC0000005 写,异常.
P位 R/W位和U/S位,我们是没有权限操作的.(本章主要讲解应用层的).
但是 R/W 位, MS的人,也给我们留了一个操作函数.
Kernel32!VirtualProtect    //设置本进程指定低2G内存分页属性(范围4KB 即0x1000)
有了这个函数,我们就可以"间接"的修改R/W位了.

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功