[c/c++] programming之路(4)、常量和变量

一、打开多个程序(温习)

 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\n",&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”进程所占内存暴涨(这也就是许多黑客的惯用伎俩——伪装成其他应用,也是许多杀毒软件误报的原因)

 

posted @ 2017-07-18 19:53  进击的小猴子  阅读(542)  评论(0编辑  收藏  举报