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