[讨论]有个反调试软件制作过程中遇到的问题
[讨论]有个反调试软件制作过程中遇到的问题信息来源:邪恶八进制信息安全团队([url=http://www.eviloctal.com/]www.eviloctal.com[/url])
议题作者:dhbellwyc
大家好!首先我可以说,相比于PEDIY,可能这里更适合我一点,呵呵。
我打算编一款反调试软件,在软件的编写过程中有几个问题可否请教一下各位:
1. 在WINDOWS操作系统中,如果一个程序,不管是用户级还是内核级只要不是操作系统本身,在不接触进程句柄的情况下,如果能够读取进程数据。我这款反调试软件就是通过阻止得到进程句柄来达到反调试甚至反破解目的的。
2. 有关操作系统内核的未公开函数的挂钩问题,由于是未分页的,所以可能不能用SSDT的方式实现,我现在得知一种方法,就是通过查找该未公开函数的特征代码,然后在系统内存中,以得到该函数的入口地址,再修改该地址以跳转到我自己的函数来实现挂钩,不过这种方法我觉得是不是有些危险啊,有没有其它的方法啊?
帖子5 精华[url=http://forum.eviloctal.com/digest.php?authorid=144579]0[/url] 积分9 阅读权限40 在线时间0 小时 注册时间2007-10-20 最后登录2008-6-13 [url=http://forum.eviloctal.com/space.php?action=viewpro&uid=144579]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=33187&repquote=143380&extra=page%3D4&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=33187&pid=143380&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP [url=http://www.google.cn/search?q=干洗店加盟&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]少女暴富的隐秘(图)[/url]
[url=http://forum.eviloctal.com/space-uid-23325.html]zhuwg[/url] [img]http://forum.eviloctal.com/images/avatars/pw/sky3.gif[/img]
运维管理组
[img]http://forum.eviloctal.com/images/default/star_level2.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img] 1. 据我所知 不能
偶可以完全不经过任何进程句柄相关函数
来读取或者修改任何进程的数据 最简单的就是读写物理内存了
另外 偶在内核中自己枚举句柄链表 您有啥方法阻止?
或者高端内存暴力进程也行的
2.有关操作系统内核的未公开函数的挂钩问题
很安全 没有任何危险
只要你的代码写的漂亮 hook很安全和稳定 谢谢楼上对第二个问题的回复,不过就第一个问题来说,我要的是能够在不接触句柄的情况下访问进程,而不是不接触进程句柄相关函数,也就是说你自己的函数不能使用任何句柄。这样可以吗?
我现在确保的一点是,你只要使用了句柄,就会被我检测到。那在不使用句柄的情况下,如何访问到一个进程,还要调试它呢?尤其是当内核调试器被禁用的时候,禁用内核调试器应该就是把KiDebuggerRotine改写一下就行了吧! 句柄到了最后就是内核中的一大堆数据结构,表层上可以理解为object。对象。
不通过句柄,取对象很容易,所以不要死死盯着句柄不放。没什么太大意义[img]http://forum.eviloctal.com/images/smilies/default/smile.gif[/img]WINDOWS内核疯狂爱好者
帖子239 精华[url=http://forum.eviloctal.com/digest.php?authorid=69539]6[/url] 积分5535 阅读权限150 性别男 在线时间1112 小时 注册时间2007-1-10 最后登录2008-7-20 [url=http://hi.baidu.com/sudami]查看个人网站[/url]
[url=http://forum.eviloctal.com/space.php?action=viewpro&uid=69539]查看详细资料[/url][url=http://forum.eviloctal.com/post.php?action=reply&fid=9&tid=33187&repquote=143618&extra=page%3D4&page=1]引用[/url] [url=http://forum.eviloctal.com/misc.php?action=report&fid=9&tid=33187&pid=143618&page=1]报告[/url] [url=http://forum.eviloctal.com/###]回复[/url] TOP
[url=http://forum.eviloctal.com/space-uid-144579.html]dhbellwyc[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
晶莹剔透§烈日灼然 楼上的话我也知道,不过我感觉WINDOWS主要是通过句柄来引用对象的,除此之外路就比较少了,就算是有编程起来也会很麻烦,可不可以举几个不通过句柄来得到对象的例子啊!谢谢了。我自己先举两个,钩住WINDOWS内核的进程相关函数,获得参数中的EPROCESS。以及遍历进程块链表来取得EPROCESS。还有没有其它的啊?
另外,虽然我知道用句柄的方法不能治本,但好歹目前几乎市场上所有的标准的调试器产品都有用到句柄的,我这一招几乎可以是通吃了。
页:
[1]