注册 登录
编程论坛 汇编论坛

[分享][开源]pe病毒原理

无理取闹 发布于 2007-08-29 14:22, 4993 次点击
终于在开学以前完成了这个程序,经过几周的学习,对用汇编编写pe文件病毒有了简单的理解,就写了这个程序
如果有时间会继续学习病毒的编写
此程序实现了当前文件夹及其子文件夹的exe文件的感染
并没有加入破坏系统的代码
大家可以放心试验
希望不要将此程序用于非法途径,不然也违背了我将程序发上来的初衷。
我们学习的是知识,研究的是技术。


现在发最新版本 修改以前版本的BUG 希望大家帮忙测试 看看有什么问题
只有本站会员才能查看附件,请 登录
这个是添加了线程的版本

[此贴子已经被作者于2007-11-14 15:02:05编辑过]

35 回复
#2
windflush2007-08-29 14:30
感染之后有什么症状?
#3
无理取闹2007-08-29 14:36
运行之前先运行一个我插入的消息框
#4
大年初四2007-08-29 14:36
捧场来了
#5
狂放不羁2007-08-29 14:38
我看看。。
#6
千里冰封2007-08-29 15:13

不懂

#7
千里冰封2007-08-29 15:17
我试了一下,发现运行了你的程序之后,我后面的EXE都打不开了.显示不是有效的WIN32文件

#8
无理取闹2007-08-29 15:32
是么 难道我程序有问题? 我怎么用都好使呢 我再看看
#9
无理取闹2007-08-29 15:46
目前没有找到什么原因 不能正常感染某些文件
在附件中附带了一个用来感染的测试文件 先用着吧
#10
xu20002007-08-29 23:49
汇编?强
#11
钢燃2007-08-30 21:17
VMware下调试吗?
学习学习先
#12
无理取闹2007-08-31 10:34

有些目标文件不能感染 原因是由于目标文件中存在.data?段 其中的内容编译器会认为程序在开始执行后才会用到
所以在生成可执行文件得时候只保留了大小的信息 不会占用磁盘空间 有些程序的最后一段为这个段 SizeOfRawData
PointerToRawData这两个值都为0 我的程序实现原理是添加一个节将程序插入并修改pe头 因为在添加节的过程中需要增加我添加节的IMAGE_SECTION_HEADER 上面提到的这两个值是根据上一节(也就是原程序最后一节)的这两个值修改的 所以导致修改的值出错 结果导致有些被感染的文件出现不是有效的win32程序的错误

问题还没有解决 不知道有没有高手能替我解答一下

#13
hwbnet2007-09-04 11:21
请问这个重定位什么意思?call进的地址-偏移地址=?
call @F
@@:
pop ebp
sub ebp,offset @B ;重定位
#14
无理取闹2007-09-06 17:45
可以将变量在宿主程序中找到正确的位置
#15
爱以走远2007-09-07 00:12
无理取闹好强
搞这个
#16
hwbnet2007-09-07 08:57
还是不懂。
#17
无理取闹2007-09-07 10:27

这是我在网上找的 你自己看看吧



在讲解重定位方法之前,我们有必要复习一下call指令。

call指令一般用来调用一个子程序或用来进行转跳,当这个语句执行的时候,它会先将返回地址(即紧接着call语句之后的那条语句在内存中的真正地址)压入堆栈,然后将IP置为call语句所指向的地址。当子程序碰到ret命令后,就会将堆栈顶端的地址弹出来,并将该地址存放在IP中,这样,主程序就得以继续执行。

假如病毒程序中有如下几行代码:

call delta ;这条语句执行之后,堆栈顶端为delta在内存中的真正地址

delta: pop ebp ;这条语句将delta在内存中的真正地址存放在ebp寄存器中

……

lea eax,[ebp+(offset var1-offset delta)]

;这时eax中存放着var1在内存中的真实地址

当pop语句执行完之后,ebp中放的是什么值呢?很明显是病毒程序中标号delta处在内存中的真正地址。如果病毒程序中有一个变量var1,那么该变量实际在内存中的地址应该是ebp+(offset var1-offset delta),即参考量delta在内存中的地址+其它变量与参考量之间的距离=其它变量在内存中的真正地址。有时候我们也采用(ebp-offset delta)+offset var1的形式进行变量var1的重定位。当然还有其它重定位的方法,但是它们的原理基本上都是一样的。这里不在叙述。

#18
hwbnet2007-09-08 10:10
了解,继续往下学。
#19
jayvip2007-09-12 15:20

pe感染现在很 流行。。貌似熊猫烧香就用到了 。。嘿嘿。。 收集中。。。。

#20
无理取闹2007-09-16 20:10
我已经解决了程序其中一些问题
可以感染应该感染的EXE文件 并跳过一些不应该感染的文件
可是源码在家没法发上来
有空一定弄上来
#21
F104TW2007-09-25 18:40
回复:(无理取闹)[分享][开源]pe病毒原理
其实啊病毒分非常多种啦
#22
hwbnet2007-09-26 11:15

我已经解决了程序其中一些问题
可以感染应该感染的EXE文件 并跳过一些不应该感染的文件
可是源码在家没法发上来
有空一定弄上来

原理也要弄上来,越详细越好。
#23
无理取闹2007-09-27 10:39
以下是引用F104TW在2007-9-25 18:40:32的发言:
其实啊病毒分非常多种啦

我已经说明了我写的是感染PE文件的病毒的原理了 呵呵

#24
justholdon2007-10-17 17:47
向你看齐,我也在学32汇编!
#25
无理取闹2007-11-01 17:27
程序更新啦  大家关注一下
#26
TE202007-11-01 21:25
顶一个,学习。。。
#27
firstchoicey2007-11-08 13:06
我试了一下,还是有些exe文件被感染后报错,比如用C++ 6.0写的最简单的HelloWorld程序。不知道什么原因。个人认为不应该是.data?的问题。
#28
无理取闹2007-11-09 18:56
是么 我现在已经修改了 还有文件感染后报错么? 帮忙把报错的文件的原版上传上来 谢谢
在我的机器上测试都可以感染 没有问题
#29
无理取闹2007-11-09 19:53
只有本站会员才能查看附件,请 登录

这是我从别人那里要过来的一个HELLOWORLD 是可以成功感染的 你应该把你的发上来
#30
随心2007-11-10 10:37
我试了,感染成功。可这个要怎么清除掉
#31
tml3272007-11-10 10:38

有时间到网吧去试试!

#32
无理取闹2007-11-12 16:01
当然是用WIN32汇编写的啊
#33
无理取闹2007-11-12 16:08
以下是引用随心在2007-11-10 10:37:20的发言:
我试了,感染成功。可这个要怎么清除掉

要想清除 可有点麻烦了 写个专杀程序吧

#34
圆圆的鸟蛋2007-11-12 21:32
不厚道了啊,,你叫人家自己写专杀啊??

LZ的Win32汇编很强啊,,我也正在学!!挺好玩的呀
#35
无理取闹2007-11-14 15:06
桌面的那些程序没什么意思
1