-
归档
- 2011 年九月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年五月
- 2007 年四月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
- 2005 年十月
- 2005 年九月
- 2005 年八月
- 2005 年七月
- 2005 年六月
- 2005 年二月
- 2004 年十月
- 2004 年九月
- 2004 年八月
-
杂项
日归档:2004 九月-28
[转贴]缓冲区溢出原理之白话草稿
转自<黑客基地> 首先,要说明本文所要阐诉的仅仅是白话.仅仅是说了一些心得,毕竟我也是觉得惶恐的.没有什么任何听不懂的地方,只要你能坚持看完本文,则会初步的理解缓冲区溢出的概念. 关于缓冲区溢出,自然要从"缓冲区"说起.则,何为"缓冲区",学习过C语言的人应该知道,当程序即将运行时,会检查该程序将会使用到的变量,并且为该变量在内存中"划"出(或者用"登记"比较合适)一段来,用于存贮该变量的数据.而被分出的内存区域大小则和程序代码的变量长度一样.例如,定义某变量为8个字符,则该被分配内存大小也为8. 什么是变量,且听下面的例子(或许不是很准确): 例如,你要计算一个长方形的面积,可以根据数学公式: 长*宽=面积, 得出. 倘若一个长方形长为20,宽为10,用程序表示出来或许应该如下:(下面的程序我想用任何编译器都编译不出,用脑袋或许可以) 行1 l=20 行2 h=10 行3 s=l*h 现在让我们解读一下该"程序" 其中,我们用"l"表示"长方形的长",并且赋值为"20",行1; 其中,用"h"代表"长方形的宽",赋值为"10",行2; 其中,用"s"表示"长方形的面积",值为"l*h",白话则是用"l"乘"h"得出面积,行3,这也恰恰应用到了数学的公式. 问题也就随之出现,上面的程序显然是有很大的弊病的.因为–它仅仅可以计算一个长方形的面积,世界上那么多长方形,要如何计算?!难道要为每个长方形都写一个程序么? 然而事情看样子总是有转机的,变量也就随之出现了,当有了变量,我们就可以输入(通过你的键盘)数据给程序,程序接受后,则会计算出相应的长方形了. 程序或许可以如下: 行1 +——输入"长" 行2 | 输入"宽"———————+ 行3 +——长的变量 | 行4 宽的变量———————+ 行5 搜集到了足够的信息,执行s=l*h 事情就这样被解决了?不,经过上面的温习,我们初步了解了一些程序的知识.现在进入缓冲区溢出这个概念. 还要提起变量,我们在本问第二自然段提过: "当程序即将运行时,会检查该程序将会使用到的变量,并且为该变量在内存中"划"出(或者用"登记"比较合适)一段来,用于存贮该变量的数据.而被分出的内存区域大小则和程序代码的变量长度一样.例如,定义某变量为8个字符,则该被分配内存大小也为8." 让我们看这一段: "被分出的内存区域大小则和程序代码的变量长度一样.例如,定义某变量为8个字符,则该被分配内存大小也为8." 问题出现了,为什么要给变量定义一个长度呢?我是这样理解的,因为它需要在内存中分配出空间给该变量提供数据存贮空间,倘若,没有事先定义好该变量的数据长度(或者谨慎的说"最长度"),则,我们的计算机到底要为它分配多少空间呢?1K?1M?1G?呵呵,显然为其定义一个长度是有必要的! 何为缓冲区溢出?有何危害? … 继续阅读
发表在 Uncategorized
留下评论
[转贴]土法制作免杀黑洞
转自<Hoky Security Team> 作者:imhere 来自:小榕论坛 昨天厚着脸皮与辉哥索要PE加密个人版,得到答复是需要100大洋,晕到…….联想到几天前我还投票赞成收费,这个郁闷呀…… 在家里憋气憋了几天,终于给憋出一条土方法来保护咱可爱的黑洞马儿。中秋来临,谨以此篇与我们这些既没本事又没钱的弟兄们共享, 高手们就请便吧! 适用范围:7.12正式版EXE服务端适用,其余版本未作测试,好象演示版有自校验是不行的。 防毒测试:通过最新KV查杀,瑞星在线查杀(文件查毒和内存查毒)、卡巴斯基文件在线查毒 土法步骤:1、用7.12正式版配置好生成EXE服务端文件,这里文件名假设是hd.exe;同时要记住配置时的程序安装路径和程序安装名称, 这里我们假设路径是在根目录下C:\winnt,程序安装名称是update.exe; 2、给服务端文件hd.exe脱壳,黑洞早期的壳是upx的,好脱一点,最新的9.15演示版我就没脱得了,郁闷…如何脱黑洞壳网上有资料,我就不罗嗦了; 3、给hd.exe加壳,这个加壳工具很重要,我用的是asprotect1.31(5.18)版本,这个版本太猛了,猛得加了后黑洞都不能正常运行了,这里我要的就是这个效果 。在自己机器上运行hd.exe,这个时候我的机器上线了,请注意,这时hd.exe 并没有象通常那样消失并生成安装程序update.exe,我们发现hd.exe仍然存在并且在运行, 同时在注册表run键下又生成c:\winnt\update.exe的启动键值,system32目录下生成findriv.dll,但是安装程序update.exe没有生成,如果重启的话就不能再次上线了。 4、这时我们耍了个小聪明,把服务端文件名改成和安装程序名一致,即把hd.exe改成update.exe,并且路径与程序安装路径一致c:\winnt,这样如果重启的话,还会重新上线; 5、我们做查毒测试,用瑞星在线查毒查内存和文件没有查出,用江民KV2004一查,晕,findriv.dll被查杀,黑洞又不能上线了; 6、如法泡制,尝试给findriv.dll脱壳加壳,它也是UPX壳,用黑洞脱壳的办法来吧!…晕,脱不了,原来这里用upxfix时选取的节数应该是2而不是5…同样加上asprotect壳,体积竟然比upx壳大了近5倍,达122K,不管了,好用就行,用kv、瑞星、卡巴不能查出; 7、把findriv.dll放回system32目录下,记住要修改它的属性,改成只读、系统、隐藏文件。再次运行服务端文件update.exe(hd.exe),ok,一切正常,用kv查,查个鬼呀!!!重启,上线,各项功能正常。 8、至此,土法制作的免杀黑洞就完成了,菜鸟同学们鼓掌呀…… 至于如何在肉鸡上运用,嘿嘿,不至于还要我再罗嗦吧….
发表在 Uncategorized
留下评论