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
才是相對位置
謝謝