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

  • 相关阅读:
    我告诉你 电脑软件工具
    mysql 查询当天、本周,本月,上一个月的数据
    springboot:springboot+mybatis多数据源最简解决方案
    MySQL数据库优化的(经典必看)
    MyBatis 的强大特性之一便是它的动态 SQL之常用属性使用
    你知道Spring 中使用了哪些设计模式?
    kafka 相关面试问题
    掌握TCP/IP的通信原理(三次握手、四次挥手)。
    jsp和servlet实现文件的上传和下载
    Java获取数据库记录通过javabean映射,并存入list集合
  • 原文地址:https://www.cnblogs.com/little-monkey/p/7201500.html
Copyright © 2011-2022 走看看