- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
反调试第一
反调试第一
藏好自己的 OllyDbg2008-09-12 13:07OllyDbg 的检测方法多如繁星,即使悉数了解并掌握破解技巧也需要耗费一定的时间。
因此可以制作一个 DLL(比如写一个插件) 借助 API Hook 来完成自动隐藏工作。
这篇教程中我不打算介绍如何进行 Hook API,Google 会比我讲的详细 :)
我们的 DLL 面临着这些问题:
1) 躲避字符串解析漏洞
某天你拿到一个程序载入运行,OllyDbg 连续三次非法后伤逝……
基本可以估计这个程序钻了这个漏洞。OllyDbg 使用了格式化字符输出调试信息,
如果调试信息里带有格式控制字符譬如“%s%s%s”,在字符输出之前就会死于非命。
利用代码:
@pushsz %s%s%s%s%s
call OutputDebugStringA
要避免也很简单,只要钩住这个函数过滤掉对它的调用即可。想做的锦上添花可重定向输出到一个watch窗口中。
2) GetProcessHeap 后门
自从某人从 ASProtect 早期版本得到启发,发现 M$ 的此内存初值后门,这个漏洞也(将会)有不少人用。
利用代码:
call GetProcessHeap
mov eax, [eax+0Ch]
test eax, 40h
je no_debugger
我很抱歉,关于原因的事情你得问微软去了,谁叫你用 Windows 呢 ;-)
解决它要彻底些,不能用 Hook ,因为不一定非通过这个函数读取 Heap,PEB 也可以。
看看 GetProcessHeap:
7C80AA49 64:A1 mov eax, fs:[18]
7C80AA4F 8B40 30 mov eax, [eax+30]
7C80AA52 8B40 18 mov eax, [eax+18]
7C80AA55 C3 retn
剩下的不用多费唇舌了吧。
3) 卑鄙的 native API
native api都是这种形式的:
mov eax, ServiceId
mov edx, xxxxxxxx
call [edx]
retn xx
2k下大同小异:
mov eax, ServiceId
lea edx, [esp+4]
int 2e
retn xx
下面这几个都是利用的WinNT的native API来检查debugger的,所以不能运行在Win9x/ME上。
1、ZwQuerySystemInformation
用这个可以检查系统调试器是否存在,对SoftICE似乎无用,估计只对微软自家的WinDBG有效,有条件的可测试一下。
2、ZwSetInformationThread
用这个函数可以将某个线程的调试端口设为0,使得Win32调试器无法再收到该线程的调试事件,使调试器无法再调试该线程。这个主要是针对VC++这样的ring3调试器的。
3、ZwQueryInformationProcess
这个可以检查某个进程是否正被ring3调试器所调试。
看雪精华里 blowfish 详细介绍过 ZwSetInformationThread 等 API,最好统统 Hook。
4) MeltICE
如果你用监视器,就像 RegMon 等,需要照顾一下这里。
如果发现 CreateFileA/W 中的文件名开头是 “\\.\ ”决不能手软,截留返回0。
这些通常是要进行 MeltICE 探测的。不过有些注册程序要读取硬盘序列号也会打开类似上面的文件名,
所以还是建议你准备一份常用 MeltICE 名表,对比拦截,比较稳妥。
5) IsDebuggerPresent
这个函数你一定用过。
7C812E03 64:A1 mov eax, fs:[18]
7C812E09 8B40 30 mov eax, [eax+30]
7C812E0C 0FB640 02 movzx eax, byte ptr [eax+2]
7C812E10 C3 retn
修改掉标志就行了。
6) 进程检测
查阅一下 Proce
您可能关注的文档
最近下载
- GB-T45001-2020《职业健康安全管理体系 要求及使用指南》培训.pptx VIP
- 医学课件-牛前胃弛缓的诊断与治疗.pptx
- 北师版初中八年级上册数学精品授课课件 第七章 平行线的证明 3 平行线的判定.ppt VIP
- 《科学抗衰老》课件.ppt VIP
- 古人延年益寿的好方子,滋养心肾,润泽肌肤,延缓身体的衰老,妙处多的很.docx VIP
- 邮轮餐饮服务与管理 课件汇总 王昭 项目1--5 邮轮餐饮概述 ---- 邮轮酒水服务.pptx
- 熔焊的焊接过程.pptx VIP
- 山餐安考试题库及答案详解.doc
- 叉车安全操作技术交底.docx VIP
- 邮轮餐饮服务与管理 课件 2.4 俄式服务.pptx
原创力文档


文档评论(0)