标签:des style ar os 使用 sp strong 文件 on
计算机病毒的定义是:
计算机病毒(Computer Virus)是编制者在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码。
由此可见 计算机病毒的两大特点是影响计算机使用与自我复制。本文从windows平台的下分析自我复制的实践操作。
程序,本质是一个二进制文件,其中包含了平台相关的计算机指令。一个在运行中的程序,被加载到内存中,它在存储介质中的可执行文件通常是不可被修改,但是可以访问其中的内容。由此可以通过拷贝其中的数据,再创建一份一样的二进制文件即可复制一个可执行的文件。
demo中的代码省略部分异常处理
int copyfile(const char* srcFile,const char* desFile) { FILE* fp_in = NULL; FILE* fp_out = NULL; long nFileSize = 0; size_t rByte = 0; size_t wSize = 0; char copyBuf[1] = {0}; fp_in = fopen(srcFile,"rb"); if(!fp_in) { perror("OPEN_FILE_FIAL"); return -1; } if( !fseek(fp_in,0L,SEEK_END) ) { nFileSize = ftell(fp_in); fseek(fp_in,0L,SEEK_SET); } else { perror("GET_FILE_SIZE_FAIL"); return -1; } if( nFileSize > 0 && (fp_out = fopen(desFile,"wb+") ) ) { wSize = 0; while(fp_out && 0 == feof(fp_in) ) { if(rByte = fread(copyBuf,sizeof(copyBuf),1,fp_in) ) { wSize += fwrite(copyBuf,sizeof(copyBuf),rByte,fp_out); if(wSize > 1024)//1K时缓冲区数据存盘 { fflush(fp_out); wSize = 0; } } } fclose(fp_out); } fclose(fp_in); return 0; }
以下代码将一个正在运行的程序的可执行文件复制一份到当前目录下
char szAppPath[MAX_PATH] = {0}; char szDesPath[MAX_PATH] = {0}; char* pChar = NULL; GetModuleFileName(NULL,szAppPath,MAX_PATH);//获取当前程序绝对路径 if( pChar = strstr(szAppPath,".exe") ) { strncpy(szDesPath,szAppPath,pChar - szAppPath); strcat(szDesPath,"_.exe"); if( !copyfile(szAppPath,szDesPath)) { //复制成功 } } else { //是否是可执行文件? }
当你得到了一个可执行文件的拷贝时,便可进行后续的操作。如果这是一个dll也是类似的处理。
标签:des style ar os 使用 sp strong 文件 on
原文地址:http://my.oschina.net/mlgb/blog/349376