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

  • 相关阅读:
    jquery easy ui 学习 (8)basic treegrid
    jquery easy ui 学习 (7) TreeGrid Actions
    jquery easy ui 学习 (6) basic validatebox
    jquery easy ui 学习 (5) windowlayout
    jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
    提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll
    visual studio 添加虚线的快捷键
    VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
    visual studio 编译时 出现 Files 的值 乱码
    微信 连接被意外关闭
  • 原文地址:https://www.cnblogs.com/little-monkey/p/7201500.html
Copyright © 2011-2022 走看看