1.要怎么计算要复制的病毒大小?
我看过B8X的学长是用EQU做的
...
mov cx,ssize
...
...
ssize EQU $ - offset virus_begin
不过是错的,根据仔细的观察机械码后,并没有复制全部,少了约2/5
我想了很久改成
...
enddd BYTE ?
ssize EQU offset enddd + 1 - offset virus_begin
就好像对了,可是几乎全部的.com病毒都有用到$号来算长度,
可以请问有人知道怎么做比较好? 跟不会要用手数吧@@
2.读资料的位移(solved)
因为病毒是贴在后面,所以包含变量的资料也会后移
我现在是在真正病毒开始的地方加标记,然后呼叫这个标记
在将呼叫点的IP推出来减掉原本的标记座标
call virus_begin
virus_begin:
pop SI
sub SI,OFFSET virus_begin
可是现在一直错误.... 有些.com会成功执行原程式
大部分的.com会cored-dumped
所有的.com已丧失再感染其他程式的能力
想请问应该要怎么弄? JMP要注意要扣掉3bits或2bits的IS
才是相对位置
谢谢