C语言实现病毒源码 当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上找扩展名为C的匹配文件,如果找到,查找是否有被传染过的标志“INFECTED”。如果有此标志,继续找其它的C文件,直至全部检查一遍。若没有这个标志,则 (1)在未被感染的C程序头部加入“INFECTED”已被传染标志。 (2)读取病毒文件的头文件,将其插入到即将被感染的文件头部。如果发现有重复则不插入。 (3)在主程序中插入“VIRUSES();”调用VIRUSES函数。寻找PRINTF、for、while、break语句,如果找到就在之前插入。 (4)在文件尾部插入VIRUSES_SUB子程序。 (5)在插入到将感染文件里面的VIRUSES_SUB子程序里面,必须把文件名改为当前自身的文件名,否则被传染后的文件经过编译、连接和运行后不能再继续传染。 (6)最后插入VIRUSES子程序。这个子程序里面调用了VIRUSES_SUB,执行到这里返回执行结果信息。
上传时间: 2013-12-24
上传用户:缥缈
//获得当前的模式 oldmode = vga_getcurrentmode[] //初始化 vga_init[] //判断是否支持该模式 if[vga_hasmode[mode]] vga_setmode[mode] else { PRINTF["No such mode\n"] exit[1] } //取得信息 width = vga_getxdim[] height = vga_getydim[] colors = vga_getcolors[] //绘图 for[i=0 i<colors i++]{ vga_setcolor[i] vga_drawline[0, i, width-1, i] }
标签: vga_getcurrentmode vga_init oldmode vga_ha
上传时间: 2014-12-19
上传用户:maizezhen
//获得当前的模式 oldmode = vga_getcurrentmode[] //初始化 vga_init[] //判断是否支持该模式 if[vga_hasmode[mode]] vga_setmode[mode] else { PRINTF["No such mode\n"] exit[1] } //获得当前的模式 mode = vga_getcurrentmode[] info = vga_getmodeinfo[mode]
标签: vga_getcurrentmode vga_init oldmode vga_ha
上传时间: 2017-03-24
上传用户:ecooo
srand[getpid[]] /* initialize some of the memory */ memset[heightmap, 0, MAPSIZE*MAPSIZE] memset[vpage, 0, RENDERWIDTH * RENDERHEIGHT] PRINTF["Creating dx d fractal terrain\n", MAPSIZE, MAPSIZE] heightmap[0] = [rand[] 128] + 64 // initialize starting point on map CreateFractalMap[0, 0, MAPSIZE, MAPSIZE] PRINTF["Smoothing terrain\n"] for [i = 0 i < 5 i++] SmoothMap[] MakeColorMap[]
标签: MAPSIZE initialize heightmap getpid
上传时间: 2014-01-04
上传用户:ainimao
srand[getpid[]] /* initialize some of the memory */ memset[heightmap, 0, MAPSIZE*MAPSIZE] memset[vpage, 0, RENDERWIDTH * RENDERHEIGHT] PRINTF["Creating dx d fractal terrain\n", MAPSIZE, MAPSIZE] heightmap[0] = [rand[] 128] + 64 // initialize starting point on map CreateFractalMap[0, 0, MAPSIZE, MAPSIZE] PRINTF["Smoothing terrain\n"] for [i = 0 i < 5 i++] SmoothMap[] MakeColorMap[]
标签: MAPSIZE initialize heightmap getpid
上传时间: 2013-12-25
上传用户:CSUSheep
//结构 struct fb_fix_screeninfo finfo struct fb_var_screeninfo vinfo //打开设备 fd = open["/dev/fb0", O_RDWR] if [!fd] { PRINTF["Cannot open framebuffer device.\n"] exit[1] } //取得固定信息 if [ioctl[fd, FBIOGET_FSCREENINFO, &finfo]] { PRINTF["Error reading fixed information.\n"] exit[1] } if [ioctl[fd, FBIOGET_VSCREENINFO, &vinfo]] { PRINTF["Error reading variable information.\n"] exit[1] }
标签: struct fb_fix_screeninfo fb_var_screeninfo finfo
上传时间: 2014-08-16
上传用户:gut1234567
移植uip-1.0到Atmega32 1)把 uip-1.0 的所有文件加入到工程,包括 uip 目录的文件(除uip-split.c)、unix 目录的文件、lib 目录的文件; 2)修改 uip/uip-neighbor.c 文件的 void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr) 函数,一般注释掉 PRINTF 语句即可,或者改为你自己的串口格式化打印实现。 3)uip 目录里的源文件除 uipopt.h 外一般都无需修改;uipopt.h 包含了 uip-conf.h ,所以大部分修改可以在 uip-conf.h 里进行。 uip-conf.h 里加入如下定义,可以减少编译的警告: #define notdef 0 #define UIP_CONF_IPV6 0 #define UIP_ARCH_ADD32 0 #define UIP_ARCH_CHKSUM 0 #define UIP_NEIGHBOR_CONF_ADDRTYPE 0 4)移植工作主要是 定时器中断程序 与 网络驱动 的编写
上传时间: 2013-12-20
上传用户:csgcd001
client socket include <sys/types.h> include <sys/socket.h> include <stdio.h> include <netinet/in.h> include <arpa/inet.h> include <unistd.h> int main() { int sockfd int len struct sockaddr_in address int result char ch = A sockfd = socket(AF_INET, SOCK_STREAM, 0) address.sin_family = AF_INET address.sin_addr.s_addr = inet_addr("127.0.0.1") address.sin_port = 9734 len = sizeof(address) result = connect(sockfd, (struct sockaddr *)&address, len) if(result == -1) { perror("oops: client") exit(1) } write(sockfd, &ch, 1) read(sockfd, &ch, 1) PRINTF("char from server = c\n", ch) close(sockfd) exit(0) }
上传时间: 2017-07-29
上传用户:wab1981
基于S3C2440移植的uC/OS-II最新源码(V2.83),以及Flash、LCD、Nand Flash驱动和PRINTF库。 使用ADS开发环境。
上传时间: 2017-09-07
上传用户:colinal
两个链表的交集 #include<stdio.h> #include<stdlib.h> typedef struct Node{ int data; struct Node *next; }Node; void initpointer(struct Node *p){ p=NULL; } int printlist(struct Node* head){ int flag=1; head=head->next; /* 因为标记1的地方你用了头结点,所以第一个数据域无效,应该从下一个头元结点开始 */ if(head==NULL) PRINTF("NULL\n"); else { while(head!=NULL) { if(flag==1) { PRINTF("%d",head->data); flag=0; } else { PRINTF(" %d",head->data); } head=head->next; } PRINTF("\n"); } return 0; } struct Node *creatlist(struct Node *head) { int n; struct Node *p1=(struct Node *)malloc(sizeof(struct Node)); p1->next=NULL; while(scanf("%d",&n),n!=-1) { struct Node *pnode=(struct Node *)malloc(sizeof(struct Node)); pnode->next=NULL; pnode->data=n; if(head==NULL) head=pnode; p1->next=pnode; p1=pnode; } return head; } struct Node *Intersect(struct Node *head1, struct Node *head2) { struct Node *p1=head1,*p2=head2;/*我这里没有用头指针和头结点,这里是首元结点head1里面就是第一个数据,一定要理解什么事头指针, 头结点,和首元结点 具体你一定要看这个博客:http://blog.sina.com.cn/s/blog_71e7e6fb0101lipz.html*/ struct Node *head,*p,*q; head = (struct Node *)malloc(sizeof(struct Node)); head->next = NULL; p = head; while( (p1!=NULL)&&(p2!=NULL) ) { if (p1->data == p2->data) { q = (struct Node *)malloc(sizeof(struct Node)); q->data = p1->data; q->next = NULL; p->next = q;//我可以认为你这里用了头结点,也就是说第一个数据域无效 **标记1** p = q; p1 = p1->next; p2 = p2->next; } else if (p1->data < p2->data) { p1 = p1->next; } else { p2 = p2->next; } } return head; } int main() { struct Node *head=NULL,*headt=NULL,*t; //initpointer(head);//这里的函数相当于head=NULL; // initpointer(headt);//上面已经写了headt=NULL那么这里可以不用调用这个函数 head=creatlist(head); headt=creatlist(headt); t=Intersect(head,headt); printlist(t); }
标签: c语言编程
上传时间: 2015-04-27
上传用户:coco2017co