郁金香外挂技术-郁金香灬老师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

郁金香终身VIP管理员QQ150330575项目合作(有实力的+)视频教程+每月更新+QQ群
飞郁视频分享(每周更新)
查看: 2661|回复: 3

X64过调试器检测

[复制链接]
发表于 2015-6-29 10:08:14 | 显示全部楼层 |阅读模式
前几天搞了一个程序,该程序有32位和64位两种。猜测这两个用的肯定是同一个代码。因为目前32位程序保护措施比较成熟。跟了一下32位的,发现加了一个starforce的壳,看到这个名字,我就很知趣的退出了,因为凭我的能力,完全搞不定starforce。
所以把目光放在了64位程序上。用了最新的x64dbg,载入程序一看,提示检测到调试器。所以第一步就是过调试器检测。
在Win7 64系统下,调试器检测使用的是IsDebuggerPresent这个API函数,在这个函数上下断点,就会触发中断,这个函数在kernel32.dll中,由kernelbase.dll调用。因此,该API函数调用后,返回到kernelbase.dll中,然后再返回到程序中,如果有调试器存在,则rax=1,否则rax=0。
然后就可以修改程序中,对rax检测的代码,就可以过调试器了。
不过,有个地方给我留的空间太少,怎么修改代码都差一个字节,因此,突发奇想,想到了修改kernelbase.dll,让它直接返回0不就可以了么。
于是,修改如下。
将下面第三行,原来本是movzx eax,byte ptr ds:[rcx+2],修改为movzx eax,byte ptr ds:[rcx+1]
如下图所示。
000007FEFDADA6A0    65 48 8B 04 25 30 00 00    mov rax,qword ptr gs:[30]
000007FEFDADA6A9    48 8B 48 60                mov rcx,qword ptr ds:[rax+60]
000007FEFDADA6AD    0F B6 41 01                movzx eax,byte ptr ds:[rcx+1]
000007FEFDADA6B1    C3                         ret

这样,无论是否有调试器存在,rax的返回值都是0。这样就可以骗过程序了。
然后,就是拿出PE启动盘,启动后,将修改后的kernelbase.dll替换掉系统中的对应文件。(c:\windows\system32\kernelbase.dll)。
注意,因为权限问题,我的机子无法选择覆盖原文件,所以只能把原文件删除后,再把破解过的复制过去。
再用调试器载入程序,哈哈,顺利通过,没有告警。
总结:现在的32位程序保护非常成熟,手段五花八门,给破解增加了极大的困难。但好在,目前对于64位程序的加壳保护软件几乎没有,所以大部分64位程序都是没有壳的,包括一些商业软件,游戏软件等。这样就给了我们一段宝贵的真空期,至少目前这段时间里,64位程序还是相对好分析破解的。

郁金香外挂教程,学习中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

限时限量优惠

QQ|小黑屋|手机版|郁金香外挂技术-郁金香灬老师 ( 苏ICP备10059359号 )

GMT+8, 2020-6-2 11:37 , Processed in 0.041604 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表