作者BingJing (京酱)
看板CSIE_ASM
标题[问题] 病毒复制长度与资料位移
时间Wed Dec 31 16:23:22 2008
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
才是相对位置
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.30.38
※ 编辑: BingJing 来自: 140.112.30.38 (12/31 17:16)
1F:推 imprazaguy:1.我是在病毒尾巴设label virus_end,然後病毒长度就可 01/01 15:36
2F:→ imprazaguy:以经由virus_end-virus_start求出 01/01 15:37
3F:→ imprazaguy:2.跟你方式一样,不过没问题 01/01 15:38
4F:→ BingJing:嗯嗯 谢谢^^ 01/01 15:54
5F:推 Johnny31525:请问EQU那个值不是assembler在编译时就决定了吗? 01/03 22:47
6F:→ Johnny31525:这样会跟着位置变动而跑嘛? 01/03 22:48
7F:→ Johnny31525:还有JMP 实际编出来可能是3BYTE也可能是2BYTE的样子 01/03 22:49
8F:→ Johnny31525:啊抱歉 前面EQU $那部份我误解你意思 当我没说 01/03 22:50