edit_note帖子
117
stars积分
10,195
event加入
2011-04-03
问答互助
[教程]自己制作简单病毒程序
schedule发表于 2011-07-03 20:05:00
visibility查看 165
chat_bubble回复 7
#1 楼主
mov eax,DWORD ptr [edi 0ch]add eax,Start-Virus_Start上面两行代码是将病毒的代码入口点计算出来后头有用,计算方法简单,是我病毒开始执行地方的标号Start减去病毒开始的地方标号Virus_Start,你可能会有点不理解,这是因为病毒开始的地方不是我病毒开始执行代码的地方,我病毒开始执行代码的地方前面有一大段的数据,这些数据也是包含在代码段里的。 就是说我的病毒只有一个节.text。 (代码节叫。Text)-push DWORDptr [esi 28h]pop DWORD ptr [ebx oldip]保存目标文件原来的代码入口点,这是个偏移而已,如果真的要跳回原来的代码入口点还不能只执行AddressOfEntryPointer(原来代码入口点的指针),还要加个ImageBase成员再跳,否则就等于使你的病毒*。 为啥?因为AddressOfEntryPointer是个偏移,数字较小,一跳就很有可能会跳到2GB以上的系统进程空间去了,你看微软饶的了你不。 除非你使用SHE。push eaxpop DWORD ptr:[esi 28h]现在将上一步的上一步计算出来的病毒的代码入口点地址加上了本节的偏移地址Virtual Address成员的值,填进去。 为啥要连加两个偏移呢? 因为你脑壳不会拐弯:(;计算新的sizeofimagemov eax,Virus_End-Virus_Startadd eax,DWORD ptr [esi 50h]mov ecx,DWORD ptr [esi 38h]invoke Align1mov DWORD ptr [esi 50h],eax这个SizeOfImage成员搞不好很要命的哟! Windows2000下这个值稍微有点没对齐好就拜拜。 很多人曾经在这个地方吃过亏,FT。这个值的意思是整个可执行体映*后在内存中的大小。 将你新增的大小加上原来SIzeOfImage经过节对齐就好了。 如果你哪天感染了的文件无法运行,先看看这有问题没有。 inc WORDptr [esi 6h]刚刚增加了一个节,现在将NumberOfSection的值加一,仅共参考!
全部回复 (7)
2011-07-03 20:06:00
沙发
2011-07-03 20:08:00
板凳
顶一票,支持!
2011-07-03 20:09:00
地板
2011-07-03 20:14:00
#5
支持!
2011-07-03 21:24:00
#6
牛B,看的我一点都不懂,楼主不如制作一个来耍耍咯!
2011-07-03 21:41:00
#7
汗…用源码转换编制器也可以啊,Sb
2011-07-03 23:23:00
#8
楼主我不会,六楼你骂谁呢,小心找你麻烦
登录 后才能回复
flag举报帖子