调戏木马病毒的正确姿势-基础篇

本文是一篇关于调戏木马病毒的教程,从基础理论出发,包括病毒的历史、API概念、Hook技术和DLL注入。文章详细介绍了如何在安全环境下分析和对抗恶意程序,如使用虚拟机、PeDoll工具进行行为监视。内容分为理论基础篇和实战正式篇,适合不同水平的读者。
摘要由CSDN通过智能技术生成
作者:immenma(传闻中的表姐)
来源:i春秋社区
目录
  • ----------------------理论基础篇-------------------
  • 从科幻小说说起:
  • 危险的潘多拉盒子
  • 来说说应用程序编程接口
  • 工欲善其事必先利其器
  • (*)正确地作死
  • (*)被劫持的应用程序接口
  • (***)Hook与QQ密码的战争
  • (***)DLL注入与Hook
  • 1:被篡改的名单,导入表注入
  • 2 被劫持的OEP
  • 3.不怀好意的插班生,远程注入
  • (**)基于inline Hook的行为监视PeDoll
  • (**)调戏木马病毒前的准备工作

----------------------实战正式篇-------------------

  • 第一章:使用PEDoll调戏cmd调用类型的锁机程序
  • 第二章:使用PEDoll调戏磁盘锁(MBR)锁机程序
  • 第三章:使用PEDoll调戏钓鱼程序
  • 第四章:栈中的明文陷阱,使用PeDoll堆栈功能获取软件中的注册码
  • 第五章:使用PeDoll调戏远控木马
  • 后记


正文开始

从科幻小说说起:

如果要对病毒讲故事,显然计算机的从业者或者是程序猿总能搬出一大堆的专业术语,他们从一开始的计算机病毒如何破坏,到计算机病毒如何隐藏自己保护自己复制自己总是津津乐道,但显然的,在开篇的文字中我并不打算说的太深入。因为这些太专业的话题对没有相关基础的业外人士并不特别的友好,它除了让人想打瞌睡和让女神感觉你就是个工科男“屌丝”之外,对科普什么是计算机病毒并没有什么帮助。

不过幸运的是,最初的计算机病毒不是程序猿写的,它的出身相当的有文艺范儿,1977年,一个叫雷恩的小说家虚构了一个叫《P-1的青春》的科幻小说,小说中讲述了一种计算机病毒,它能够从第一台传染到另一台,最终控制所有的电脑,当然在那个年代,砖家和叫兽们都认为这是瞎扯淡。 可惜在1988年仅仅过了十年,美国国防部和各大学的6000台计算机,因为一名计算机专业学生编制的计算机病毒而歇菜,显然这一回,砖家和叫兽的脸被打的不轻

那么问题来了,这名学生编写计算机的技巧是哪来的,学编写计算机病毒,哪家强?可惜那年蓝翔还不存在,否者他们会在挖掘机上移植个病毒,让你见识下这玩意有多厉害,但那些年,没有培训班,却流行个游戏叫磁芯大战(Core War)。

正如其名,这游戏在电脑上玩,为了尽量避免涉及更多的专业术语而让文章读起来更有趣味性,我打个并不完全恰当的比方这有点像“养蛊”,有些人相信找来个坛子在坛子里放上各种毒虫,几周以后,坛中的毒虫互相残杀,最后留下来的那只就是所谓的蛊,我不知道这样养出来的玩意是否真有某些神奇功效,但这和磁芯大战确实有不少的相似之处,首先计算机的内存是有限的,你需要做的就是,让你的程序尽量占满这个内存区域,同时避免对对面干掉,当你最终终结了对手把对手从内存中抹除,并且自己占据在内存中,你就获得了胜利。 当然,玩的人多了,花样品种就变的多了,程序猿们开发出了爬行者(Cerrper),侏儒(Dwarf),印普(Imp)…投入这场虚拟的战争中,这看起来有点像生化危机或者是终结者里的场景,爬行者每次运行都会复制自身,很快计算机中就全是密密麻麻的爬行者了,而侏儒重在破坏对手,它的理念是,干掉对手就是存活,最有特色的应该是印普这玩意,它只有一条指令,就是把自己的程序复制到下面一条,这样既能让自己不断复制,还有机会干掉对方。磁性大战显然在那个年代的计算机领域相当的流行,就连比尔盖茨也热衷于玩这款游戏,可惜的是,这款游戏的好玩程度似乎不足以让他留在大学,大二,“大学就是个没点屌用的地方”,比尔盖茨这样抱怨着,然后就退学了。不管怎么说,磁芯大战给了一群程序猿们足够的灵感,千千万万的程序猿为了在自己或者是别人的电脑上留下“到此一游”的印记而绞尽脑汁,那么,在计算机普及到民用的年代,他们的机会来了!。

危险的潘多拉盒子

当然我不能在整篇文章就讲故事,否者我就该把这篇文章发表在“科幻天地”或者是“xxx的人物传记”了,很多人对计算机病毒抱有一种恐惧的心态,我喜欢把它比喻成潘多拉盒子,尽管它外表精巧,盒子的制作者也总是想方设法让你去打开它,但假如你不去打开这个盒子,潘多拉盒子和你家里的饼干盒并没有什么不同,(当然假如你不小心打开了它,而又不了解它,那你只能听天由命了,正所谓不作死就不会死),计算机病毒也一样,归根结底它也是计算机程序,没有运行的话,它也只是存储在你电脑上的一堆数据,排除掉一些操作系统的设计缺陷外(例如以前lnk文件解析中缺乏对路径长度的检查而造成的溢出,当然现在存在这些问题的可能性几乎没有了),他最多占据你一些小小的磁盘空间,当然为了保险起见避免某天手抖运行了它,最保险的应该是把他从你的磁盘中也删了。

当然大部分对计算机并不感冒的人总是希望多一事不如少一事,所以他们巴不得不再有人去设计病毒程序,就算设计了病毒程序也别影响到自己的电脑上,正所谓如果有人让你挑个地方长痔疮,大多人都会挑长在别人身上,但是一些狂热的计算机爱好者或者是恶意程序分析师都喜欢收集大批的计算机病毒,在他们看来,这些木马病毒就像是设计精巧的宝箱一样,在一个可控的环境中窥探它们,总是能获取到更多的知识与技巧,这说起来有点像魔窟探险,尽管里面拥有各种各样的妖魔鬼怪甚至处理不当能让你的电脑领便当,但是当它们最终分析出当中的逻辑与技巧,这感觉就是像征服了恶龙的勇士一样,带着荣耀打开潜藏在宝库中的宝箱。

我想这也就是本篇文章最终行文的目的,我希望有更多的人能够用更加简单的方式享受到这种乐趣。为此,我逛遍了各大大小小所谓的“hacker”群(大多是中二病),在各类网盘和网站中下载了一堆似乎是老司机留下的福利。当然经过筛选,我将选出一些比较有代表性的恶意程序甚至是自己编写一些恶意程序作为分析样本。在阅读完全文后,我希望及是是一些刚进门不就的新手,不懂od,不懂x86,不懂编程,同样也能够使用给出的工具享受这种乐趣。

当然,接下来的内容就可能让一些非计算机相关人士感受到不适,那么我做了一些折中的选择,假如你喜欢看我讲故事而不希望了解当中的技术细节那么你可以挑选那些你感兴趣的东西看,这并不影响你对全文的阅读体验。如果你希望了解更多的相关细节,你可能需要通过MSDN Google baidu甚至是stackover flow,github(俗称gayhub,世界上最大的同性交友网站)来获取更多的相关知识。 我将会在文中标注出内容的深度,(*)表示这是一个老少咸宜的内容,你不需要什么基础就能够轻松读懂,(**)可能表示你需要基本的计算机知识与基础的编程技巧,(***)表示以下的内容可能会更深一步,需要你在相关的领域有更深入的了解。当然在这个难度阶级以上,即时你不阅读,也不影响你理解全文。(*x)则表示,这是需要查阅相关文档例如User Manual,DataSheet,即时是我本人也是在相关文档的帮助下行文,如果你希望打破砂锅问到底的话,你可以查阅之后标注出来的reference documents。

当然如果你是十几年的码神老妖怪或者是常年混迹在52pojie甚至China UNIX的远古飙车老司机,你就可以想方设法在文中找找茬了,本人即非圣贤也非全才,文中疏漏,仍望各位指正。

来说说应用程序编程接口



在码农界广泛流传着一个黄段子,说的是两只程序猿去海边钓鱼,其中一个程序猿居然钓上来了一只美人鱼,这个美人鱼,上半身是人,下半身是鱼,于是这个程序猿就把它给放了,另一个程序猿问:Why?,答:没有API。



这是个略带点专业性质的笑话,当中所说到的API(Application Programming Interface)也就是我们中文所说的应用程序编程接口,当然专业人士看到自然蛤蛤大笑起来,老司机自然也能够领会当中的一二。



那么到底什么是API呢,打个比方就像微波炉,你需要加热食物,你只需要把食物放进微波炉然后告诉微波炉加热多少时间然后摁下启动键就可以了,至于到底微波炉的工作原理是什么,如何防止辐射,需要耗多少电,你一概不需要知道。API就像这个微波炉一样,你只需要给出你的加热时间(参数),你就能得到你想要的热腾腾的食物(结果)



当然上述这个比方并不是那么的准确,我更喜欢使用数学公式来表达这个API,假设我们现在回到了初中,继续来学习那个求圆的面积公式

图(1.1)


没错,就是这玩意(图1.1),S等于PI-R的平方,也就是PI乘以面积,当然这个方程我们往往这么来写

图(1.2)

是的,我们把圆的面积公式定义为f(r),这个函数接收一个参数r也就是圆的半径,现在不如让我们假设这个求圆面积公式是个机密,我们不想让别人知道,圆的面积是怎么求的,这样我们就可以开个公司叫《专业求圆面积有限公司》,我们只告诉外界我们有一个叫f(r)的函数,就是你只需把这个圆的半径告诉我们,我们就可以把圆的面积告诉给你,不要998现价求一次只要188,这样客户蜂拥而至,给出我们f(1),f(2),f(3),我们马上给出答案,面积分别约是3.14,6.28,9.42

当然,最准确的说法应该是用C语言了

float __stdcall getAreaofCircle(float r)
{
        Return 3.14f*r*r;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值