zoukankan      html  css  js  c++  java
  • 一个删除自身的程序源代码

    #include 
    #include 
    /*
    1.如果有文件的HANDLE打开,文件删除就会失败,所以,

    CloseHandle(HANDLE(4));是十分巧妙的一手.HANDLE4是OS的

    硬编码,对应于EXE的IMAGE.在缺省情况下,OS假定没有任何调

    用会关闭IMAGE SECTION的HANDLE,而现在,该HANDLE被关闭了.

    删除文件就解除了文件对应的一个句柄. 

    2.由于UnmapViewOfFile解除了另外一个对应IMAGE的HANDLE,

    而且解除了IMAGE在内存的映射.所以,后面的任何代码都不可

    以引用IMAGE映射地址内的任何代码.否则就OS会报错.而现在

    的代码在UnmapViewOfFile后则刚好没有引用到任何IMAGE内的代码. 
    */

    main()
    {
      printf("这是一个删除自身的程序 ");
      HMODULE hm = GetModuleHandle(0);
      
      char buf[MAX_PATH];
      GetModuleFileName(hm, buf, sizeof(buf));
      CloseHandle((HANDLE)4);
      
      __asm
      {
       lea eax, buf
       push 0
       push 0
       push eax
       push ExitProcess
       push hm
       push DeleteFile
       push UnmapViewOfFile
       ret
      }
      return 0;

  • 相关阅读:
    Linux下修改Tomcat默认端口
    java 中 byte[]、File、InputStream 互相转换
    安装mule-standalone说明
    python: 可变参数
    vim编码方式设置
    ASCII, Unicode 与 UTF-8
    Vim: 强大的g
    Vim模糊查找与替换
    Vim统计字符串出现次数
    APB简介
  • 原文地址:https://www.cnblogs.com/Chary/p/10669501.html
Copyright © 2011-2022 走看看