![e语言教程反内存监控技术_第1页](http://file4.renrendoc.com/view/af071a3a568d29bf5a4152c948f96ed0/af071a3a568d29bf5a4152c948f96ed01.gif)
![e语言教程反内存监控技术_第2页](http://file4.renrendoc.com/view/af071a3a568d29bf5a4152c948f96ed0/af071a3a568d29bf5a4152c948f96ed02.gif)
![e语言教程反内存监控技术_第3页](http://file4.renrendoc.com/view/af071a3a568d29bf5a4152c948f96ed0/af071a3a568d29bf5a4152c948f96ed03.gif)
![e语言教程反内存监控技术_第4页](http://file4.renrendoc.com/view/af071a3a568d29bf5a4152c948f96ed0/af071a3a568d29bf5a4152c948f96ed04.gif)
![e语言教程反内存监控技术_第5页](http://file4.renrendoc.com/view/af071a3a568d29bf5a4152c948f96ed0/af071a3a568d29bf5a4152c948f96ed05.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、前言:相信不少朋友辛辛苦苦找到的补丁数据,被别人轻而易举的窃取了.本文就来讲讲怎么防止别人窃取的方法一一列举出来.)的补丁数据.(这也是个矛与盾的话题,本文只是把常见先讲API HOOK.API HOOK 技术,对于新手来说可能非常的神秘,其实它并不神秘,用一句话来概述就是 抢在它前面,做些小动作. 或 修改 EIP 等.现在的家用电脑的U 普遍都是 x86. 在保护模式下,每个进程都是独立的虚拟 4GB 内存空间.它们彼此都互不干扰.或者修改某个进程的某个内存空间.如果EPRO想就必须得到那个进程的或者读写的内存地址按 CR4 里S , 然后通过 EPROS 找到 CR3 再把想要的 PAE
2、 位拆分. 然后再把 CR3 加上 拆分后的 PDE 加上拆分后的 PTE 加上 OFFSET.等等.才能实现 R/W 一段内存空间. 但是仅仅知道这些是的,限CR3 的,因此又不得不去了解段机制. 天呐 仅仅因为这些用户层是没一个读写内存就这么麻烦? 是的,就是有这么麻烦.不过还好.MS 的人考虑的周到.他们把这些烦锁的步骤,封装成一个方法.供Anti Hook API(先斩后奏)调用.欲称Windows API.上面说的烦锁的过程,可以通过 2 个API 轻松实现.Kernel32!RerosMemory/ 读指定进程内存Kernel32!WriteProsMemory / 写指定进程内存
3、知已知彼 百战不殆!通过 Kernel32!WriteProsMemory 就能制作的补丁程序了.如果想知道别人写什么数据,可以通过 HOOK Kernel32!WriteProsMemory这样的函数. 来得到别人的补丁数据.这样的偷窃也很好反.我在这里就举两三个小例子.1) 设置分页属性:知道物理页(PA), 一般有PTE第 0 位 P 位:为 1 时 存在 | 为 0 时 不存在.第 1 位 R/W 位: 为 1 时 可写| 为 0 时 不可写第 2 位 U/S 位: 为 1 时 用户权限 | 为 0 时 系统权限PTE之区分.这些属性在 PTE(页表项) 对应的 第 0 位 第 1 位
4、 第 2 位.P 位为 0 时,在 Windbg 下在 OD 下,会显示 No memory on the specified address,会显示 ? ? ? ?R/W 或 U/S 位为 0 时,会提示一个 0 xC0000005 写,异常.P 位 R/W 位和 U/S 位,是没限操作的.(本章主要讲解应用层的).但是 R/W 位, MS 的人,也给留了一个操作函数.Kernel32!VirtualProtect/设置本进程指定低 2G 内存分页属性(范围 4KB 即 0 x1000)有了这个函数,代码:就可以间接的修改 R/W 位了./ 这里是 MSG 硬编码,(本人当前机器是 XP S
5、p2 英文系统,硬编码的) BYTE szWriteBuffer =0 x6a, 0 x40,0 x68, 0 xe2, 0 x24,0 xa6, 0 x7c, 0 x68,0 xe2, 0 x 24, 0 xa6, 0 x7c,0 x6a, 0 x00, 0 xe8,0 x0c,0 xe0, 0 x31,0 xfb, 0 xc2, 0 x10,0 x00, 0 x90, 0 xb0,0 xeb, 0 x bd, 0 xef, 0 xb0,0 xcb, 0 xc1, 0 xbd,0 xb7,0 xb4, 0 xb2,0 xb9, 0 xb6, 0 xa1,0 x00; HMODULE hMod
6、ule =GetModuleHandle(Kernel32.dll);LPVOID lpWriteFun = GetProcAddress(hModule, WriteProsMemory);/ 英文计算器HWND hWnd =:FindWindow(NULL, Calculator); DWORD dw=0;GetWindowThrerosId(hWnd, &dw);HANDLE h=:OpenPros(PROS_ALL_ACS, FALSE,dw);WriteProsMemory(h,_ADDRESS, szWriteBuffer, sizeof( szWriteBuffer), NULL
7、);DWORD dwOldProtect = 0;这样做,是在机早.执行完补丁后,才修改属性.这样时机得早.否则,一切都是瞎忙活.只要时对方在 HOOK 这个函数的时候,就会产生一个 0 xC0000005我们的数据了.异常. 这样,对方就不能偷窃2.检测 HOOK 指令.已经了, HOOK 就是在做某事前,先干些自己的事.也就是修改 EIP.面想想修改 EIP 的,无非就是 JCC push/ret call 这几种. 但是当下系统之多,不得不考虑兼容性. 所以一般 HOOK,节.为什么正好是前 5 个字节.不是前 4 个字节,6 个字节呢?都会 HOOK,函数的前 5 个字来看看 Writ
8、ePro代码:sMemory 函数可以看的出来, JMP 指令 0 xe9 1 个字节, 加上 (目标地址 - 当前地址 - 5) 结果 4 个字节 ,加起来正好 5 个字节.就可以用 JMP 0 xx 来代替前面的 5 个字节. 这样的,最方便,也最健壮.当然,也最容易被发现了 :(如此一来,只要检测WriteProsMemory 第 1 个字节,是不是为 0 xe9,就可以轻松检测到是否 HOOK.当然了,此法在这里要排除那些不考虑程序兼容性乱 HOOK 的朋友.也要排除那些为了防止被发现 HOOK,将所有不同系统的硬编码都加到程序里面判断的朋友.(如此一来,他可以不用再前 5 个字节修改
9、 EIP. 他可以争对不 同系统,在不同地方,用不同的方法修改EIP.不一定非要用 JCC, 也可以用 push/ret 之类的指令,修改 EIP. )7C80220F 8BFFmov edi,edi;/ WriteProsMemory7C80221155pushebp 7C8022128BECmov ebp,esp 7C802214|.51pushecx7C802215|.51pushecx 7C802216|.8B45 0Cmov eax,arg.2用 JMP 指令来修改到任意一个 EIP.7C80220F -E9 EBDD7F03jmp7F;/WriteProsMemory7C80221
10、4|.51pushecx7C802215|.51pushecx 7C802216|.8B45 0Cmov eax,arg.2VirtualProtect(lpWriteFun, 0 x1, PAGE_NOACS,&dwOldProtect);2) Shadow Function(函数)相信不少朋友应该看过火影忍者.那里面的鸣人练就了一个本领,多重影 每当快要被敌人打到的时候,他就会使用多重影而已.,将本体,被敌人打到的,只是一个影在计算机中,也有这么一个多重影术.Shadow Function. 这个并不是当下什么流行的技术. 当下的一些流行壳,像比如 ZP SE 等知名壳.都有使用 Shad
11、ow Function 技术.也可以使用这个技术反内存监视.让监视者们,监视的影.而真身写入的数据.敌人浑然不知. 听起来是不是很 cool ? 但是,要实现 Shadow 必须要熟知 PE 结构.自己模拟 PE 装载模块. 像小菜不懂 PE 怎么办?在这里,我在教大家一种简单的方法.不知道大家有没有注意,我面写的每个函数前面都有加一个模块名. 那个模块名,就是函数的所在模块. 一般都是在 SYSTEM32 目录下.可以直接将他拷贝出来, 改一下名字.然后直接调用它,就可以了.代码:/ 这里是 MSG 硬编码,(本人当前机器是 XP Sp2 英文系统,硬编码的) BYTE szWriteBuf
12、fer =0 x6a, 0 x40,0 x68, 0 xe2, 0 x24,0 xa6, 0 x7c, 0 x68,0 xe2, 0 x 24, 0 xa6, 0 x7c,0 x6a, 0 x00, 0 xe8,0 x0c,0 xe0, 0 x31,0 xfb, 0 xc2, 0 x10,0 x00, 0 x90, 0 xb0,0 xeb, 0 x bd, 0 xef, 0 xb0,0 xcb, 0 xc1, 0 xbd,0 xb7,0 xb4, 0 xb2,0 xb9, 0 xb6, 0 xa1,0 x00;void CPage1:OnAntiMonitor()HMODULE hModule
13、 =LoadLibrary(WriteMem.dll);DWORD WriteFun= (DWORD)GetProcAddress(hModule, WritePros Memory);BOOL(WINAPI *lpWriteFun)(HANDLE , LPVOID, LPCVOID, SIZ E_T ,SIZE_T *);lpWriteFun =( stdcall *)(void *,void *,constvoid*,unsigned long,unsigned long*)WriteFun;/英文计算器HWNDhWnd =:FindWindow(NULL, Calculator);DWORD dw=0;这样子,别人再 HOOKKernel32!WriteProsMemory ,就是 HOOK的多重影而了.:)本体函数,是可以正常的执行,不受任何影响
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设定明确的工作优先级计划
- 财务分析在企业评估中的应用计划
- 教学创新与成果分享机制计划
- 防止职业倦怠的小技巧计划
- 医学影像科医生工作计划
- 建立员工反馈与建议机制计划
- 2025年电动晾衣机项目合作计划书
- 景区承包合同
- 珠宝定制服务特殊条款协议
- 农产品电商项目开发合作框架协议
- DL-T 2574-2022 混流式水轮机维护检修规程
- 《钢铁是怎样炼成的》读书分享课件
- 思想旗领航向心得体会
- 计算机软件确认控制程序
- 律师事务所章程
- 造价员安全生产责任制
- 桥梁桩基专项施工方案-
- 一级建造师《港口与航道工程管理与实务》
- 高中生物竞赛课件 【知识精研+拓展提升】 细胞生物学
- 四年级下册劳动《做水果拼盘》
- 农产品食品检验员二级技师职业技能鉴定考试题库(含答案)
评论
0/150
提交评论