[问题] 病毒复制长度

楼主: BingJing (京酱)   2008-12-31 16:23:22
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
才是相对位置
谢谢
作者: imprazaguy (Wayne)   2007-01-01 15:36:00
1.我是在病毒尾巴设label virus_end,然后病毒长度就可以经由virus_end-virus_start求出2.跟你方式一样,不过没问题
楼主: BingJing (京酱)   2007-01-01 15:54:00
嗯嗯 谢谢^^
作者: Johnny31525   2007-01-03 22:47:00
请问EQU那个值不是assembler在编译时就决定了吗?这样会跟着位置变动而跑嘛?还有JMP 实际编出来可能是3BYTE也可能是2BYTE的样子啊抱歉 前面EQU $那部份我误解你意思 当我没说

Links booklink

Contact Us: admin [ a t ] ucptt.com