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

  • 相关阅读:
    fun()可拆分赋值 fun()可以拆, 变成 fun 和 括号, fun 可以赋值
    全局变量是列表list 的改变, 竟然在局部,用append 就可以了..... 不用global sth...
    * args 和 **kwargs
    三元运算符 c = a if a>b else b
    终于明白为什么要赋值给ret ,
    只要下面看到func() 带括号的,就会弹上去找对应的函数,然后执行相应的函数块
    关于mysql复合主键
    再次回顾post请求中的enctype
    关于crontab以及输出重定向
    HTTP请求中的form data和request payload的区别
  • 原文地址:https://www.cnblogs.com/little-monkey/p/7201500.html
Copyright © 2020-2023  润新知