[問題] 病毒複製長度

作者: 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