一、打开多个程序(温习)
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int num=10; 6 char str[50]; 7 scanf("%d",&num);//输入一个数据初始化给num 8 //sprintf(str,"for /l %%i in (1,1,%d) do echo china",num);//显式执行 9 sprintf(str,"for /l %%i in (1,1,%d) do @echo china",num);//隐式执行 10 //sprintf(str,"for /l %%i in (1,1,%d) do calc",num);//同步,上一个结束才能开始下一个 11 //sprintf(str,"for /l %%i in (1,1,%d) do start calc",num);//异步,同时进行 12 system(str);//执行指令 13 system("pause");//暂停 14 }
二、常量
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define X 10 //X替换成10 4 #define Y "notepad" //Y替换成“notepad” 5 void main(){ 6 //X=3; 常量不可以被赋值 7 //const int num=10;//num常量 8 printf("我有%d个女朋友",X); 9 system(Y); 10 getchar(); 11 }
三、写一个鬼都看不懂的代码(恶搞,^_^,其实是加密啦)
源代码如下:
1 #include<stdio.h> 2 #include<stdlib.h> 3 void main(){ 4 printf("hello world"); 5 system("tasklist"); 6 system("pause"); 7 }
恶搞版如下:
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define _ void 4 #define __ main() 5 #define ___ { 6 #define ____ } 7 #define _____ printf 8 #define ______ system 9 #define _______ ("hello world"); 10 #define ________ ("tasklist"); 11 #define _________ ("pause"); 12 _ __ ___ 13 _____ _______ 14 ______ ________ 15 ______ _________ 16 ____
终极恶搞版如下(将define定义都封装到1.h头文件中,然后将所有的下划线都移到同一行):代码能够成功运行
1 #include"1.h" //自己写的头文件用“1.h” 系统自带的用<stdio.h> 2 _ __ ___ _____ _______ ______ ________ ______ _________ ____
四、const
1 #include<stdio.h> 2 #define X 10 //内部外部都不可以 3 const int num=10;//程序内部不可以修改,外部可以 4 void main(){ 5 //printf("%x",&X); //常量不能取地址 6 printf("%x ",&num); 7 printf("%d",num); 8 getchar(); 9 }
五、dll移花接木
首先在项目属性中选择生成动态库(dll文件)
1 #include<stdlib.h> 2 #include<windows.h> 3 //_declspec(dllexport)外部可以调用 4 _declspec(dllexport) void goA(){ 5 while(1){ 6 MessageBoxA(0,"你在与间谍聊天","请注意安全",0); 7 } 8 } 9 10 _declspec(dllexport) void go(){ 11 while(1){ 12 int *p=(int *)malloc(10000);//分配10000字节 13 } 14 }
然后用DLL注入工具选择一个进程进行“打针”
注入文件选择代码生成的“dll”文件
选择加载时执行的函数“go”
然后“calc”进程所占内存暴涨(这也就是许多黑客的惯用伎俩——伪装成其他应用,也是许多杀毒软件误报的原因)