C#來做virus的設想

來源:互聯網
上載者:User
偶不懂PE格式,不懂strongname應該如何處理,所以,下面是一個非常笨的方法,

假設有一個exe,我現在要感染它,因為上面的原因決定,我只能選擇一個迂迴的路線。
把exe用ildasm搞成.il代碼,然後把我的il代碼加進去,然後ilasm重新編譯該il,呵呵。這樣做,需要被感染的機器安裝有ildasm(如果不裝sdk,沒這玩意兒)。

簡單的例子:我想輸入hello,fqq!那麼寫一個最小的代碼,如下:using System;

namespace DebugDemo{
    public class Demo{
        public static void Main(){
            Console.WriteLine("hello,fqq!");
        }
    }
}

然後用csc,ildasm,得到.il代碼,main裡面唯一的一行,會輸出為:IL_0000:  ldstr      "hello,fqq!"
IL_0005:  call       void [mscorlib]System.Console::WriteLine(string)

然後,用ildasm 要感染的檔案.exe  /output=tmp.il
然後找到il中的.entrypoint,把上面兩行插進去,並修改後面的il行號(是否需要修改?我沒有實驗過,不過我是都修改了),然後,用ilasm重新編譯一次,把原來的檔案覆蓋即可。

雖然著很濫,不過確實很直接的做法,呵呵。

這是被感染檔案,修改前的il代碼:     .entrypoint
      // Code size       25 (0x19)
      .maxstack  3
      .locals init (int32 V_0,
               int32 V_1,
               int32 V_2,
               int32 V_3)
      IL_0000:  ldc.i4.s   10
      IL_0002:  stloc.0
      IL_0003:  ldc.i4.s   20
      IL_0005:  stloc.1
      IL_0006:  ldc.i4.s   30
      IL_0008:  stloc.2
      IL_0009:  ldloc.0
      IL_000a:  ldloc.1
      IL_000b:  ldloc.2
      IL_000c:  call       int32 DebugDemo.Demo::Sum(int32,
                                                     int32,
                                                     int32)
      IL_0011:  stloc.3
      IL_0012:  ldloc.3
      IL_0013:  call       void [mscorlib]System.Console::WriteLine(int32)
      IL_0018:  ret

下面是被感染檔案修改後的代碼:      .entrypoint
      // Code size       25 (0x19)
      .maxstack  3
      .locals init (int32 V_0,
               int32 V_1,
               int32 V_2,
               int32 V_3)
      IL_0000:  ldstr      "hello,fqq!"
      IL_0005:  call       void [mscorlib]System.Console::WriteLine(string)
      IL_000a:  ldc.i4.s   10
      IL_000c:  stloc.0
      IL_000d:  ldc.i4.s   20
      IL_000f:  stloc.1
      IL_0010:  ldc.i4.s   30
      IL_0012:  stloc.2
      IL_0013:  ldloc.0
      IL_0014:  ldloc.1
      IL_0015:  ldloc.2
      IL_0016:  call       int32 DebugDemo.Demo::Sum(int32,
                                                     int32,
                                                     int32)
      IL_001b:  stloc.3
      IL_001c:  ldloc.3
      IL_001d:  call       void [mscorlib]System.Console::WriteLine(int32)
      IL_0022:  ret

注意IL_0000和IL_0005兩行,被我插入了。

注意!!!這不是什麼病毒教程,如果病毒要這麼寫,作者早就被人扁死了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.