看了win98病毒原理制作后,有很多问题和感想,大伙儿一起讨论讨论
本人没编过汇编程序,对汇编指令也不了解,但是某天看了彬整理的文档,就是那个帮助大杂烩,简直太吸引人了,看了那篇暴力搜索api函数地址的文章,被深深的打动了,那种想法充满了想象力和创造力,还有那个exe自删除的做法,太神奇了。win98病毒制作原理的代码看了,有很多地方不清楚,特别是很多技巧性的地方,大伙儿能讨论讨论为什么这样写,还有其它的代替方法吗。其实估计有很多地方需要自己调试才能想通是怎么回事,大家都知道只有调试才能明白程序是怎么工作的,特别是程序执行的机制,请高手达人们说说调试的技巧(对我们菜鸟),先提出我现在有的疑问,大伙儿有的再加
因为只看了几天的汇编,提出的问题大家不要见笑,呵呵
1.BadDay SEGMENT PARA USE32 'BadDay'
assume cs:BadDay,ds:BadDay
vstart:
push ebp
push esp
call nstart
nstart:
;;;;;;;;;;;;;
pop ebp
sub ebp,offset nstart
这里use32指什么,不太明白,还有请高手详细讲解一下这个偏移差的原理
(call nstart
nstart:)这两句看到是为了迷惑反编译的,是这样吗
2.; * 更改程序入口地址 *
cmp now_basein[ebp],0
jnz gonext
mov now_basein[ebp],401000h
gonext:
cmp des_basein[ebp],0
jnz change
mov des_basein[ebp],401000h
change:
mov eax,now_basein[ebp]
push des_basein[ebp]
pop now_basein[ebp]
mov des_basein[ebp],eax
这里的401000h是怎么来的,不明白,change下的是两个地址对换,对吧
3.先跳过去问一个最迷惑的问题
vCreatefile:
mov jumpaddr[ebp],0BFF77B5BH
jmp jumpaddr[ebp]
象这个 函数的地址0BFF77B5BH怎么来的,还有
push 0
push FILE_ATTRIBUTE_NORMAL
push OPEN_EXISTING
push 0
push FILE_SHARE_READ+FILE_SHARE_WRITE
push GENERIC_READ+GENERIC_WRITE
lea eax,FindData[ebp].cFileName
push eax
call vCreateFile
详细讲解一下这种调用函数的方法,参数是怎么传递给函数的
先问到这儿吧,高手们给咱们讲讲课,呵呵