[問題] 病毒複製長度

看板CSIE_ASM作者 (京醬)時間17年前 (2008/12/31 16:23), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
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)

01/01 15:36, , 1F
1.我是在病毒尾巴設label virus_end,然後病毒長度就可
01/01 15:36, 1F

01/01 15:37, , 2F
以經由virus_end-virus_start求出
01/01 15:37, 2F

01/01 15:38, , 3F
2.跟你方式一樣,不過沒問題
01/01 15:38, 3F

01/01 15:54, , 4F
嗯嗯 謝謝^^
01/01 15:54, 4F

01/03 22:47, , 5F
請問EQU那個值不是assembler在編譯時就決定了嗎?
01/03 22:47, 5F

01/03 22:48, , 6F
這樣會跟著位置變動而跑嘛?
01/03 22:48, 6F

01/03 22:49, , 7F
還有JMP 實際編出來可能是3BYTE也可能是2BYTE的樣子
01/03 22:49, 7F

01/03 22:50, , 8F
啊抱歉 前面EQU $那部份我誤解你意思 當我沒說
01/03 22:50, 8F
文章代碼(AID): #19MolxRV (CSIE_ASM)