zoukankan      html  css  js  c++  java
  • 偶然发现某人写了这么一段代码

    // selfDeleteWin.cpp : Defines the entry point for the application.
    //


    #include "stdafx.h"
    #include <Windows.h>
    #include <stdlib.h>
    #include <tchar.h>


    int WINAPI WinMain(HINSTANCE h, HINSTANCE b, LPSTR psz, int n){
    // Is this the Original EXE or the clone EXE?
    // If the command-line 1 argument, this is the Original EXE
    // If the command-line >1 argument, this is the clone EXE
    if (__argc == 1){
    // Original EXE: Spawn clone EXE to delete this EXE
    // Copy this EXEcutable image into the user's temp directory
    TCHAR szPathOrig[_MAX_PATH], szPathClone[_MAX_PATH];
    GetModuleFileName(NULL, szPathOrig, _MAX_PATH);
    GetTempPath(_MAX_PATH, szPathClone);
    GetTempFileName(szPathClone, __TEXT("Del"), 0, szPathClone); 
    CopyFile(szPathOrig, szPathClone, FALSE);
    //***注意了***: 
    // Open the clone EXE using FILE_FLAG_DELETE_ON_CLOSE
    HANDLE hfile = CreateFile(szPathClone, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL);
    // Spawn the clone EXE passing it our EXE's process handle
    // and the full path name to the Original EXE file.
    TCHAR szCmdLine[512];
    HANDLE hProcessOrig = OpenProcess(SYNCHRONIZE, TRUE, GetCurrentProcessId());
    wsprintf(szCmdLine, __TEXT("%s %d \"%s\""), szPathClone, hProcessOrig, szPathOrig);
    STARTUPINFO si;
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    PROCESS_INFORMATION pi;
    CreateProcess(NULL, szCmdLine, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
    CloseHandle(hProcessOrig);
    CloseHandle(hfile);
    // This original process can now terminate.
    } else {
    // Clone EXE: When original EXE terminates, delete it
    HANDLE hProcessOrig = (HANDLE) _ttoi(__targv[1]);
    WaitForSingleObject(hProcessOrig, INFINITE);
    CloseHandle(hProcessOrig);
    DeleteFile(__targv[2]);
    // Insert code here to remove the subdirectory too (if desired).
    // The system will delete the clone EXE automatically 
    // because it was opened with FILE_FLAG_DELETE_ON_CLOSE
    }
    return(0);
    }
  • 相关阅读:
    航班延误来领钱,信用卡航班延误险最全攻略(2018年版)
    各银行信用卡延误险整理
    酒店web认证802.11x+ROS共享NAT上网
    登机牌,机票,行程单的区别
    ros6.0的包转发图解
    一将成,万骨枯,趣店上市背后的残酷游戏
    异常值检验实战1--风控贷款年龄变量(附python代码)
    outlier异常值检验算法之_箱型图(附python代码)
    sklearn11_函数汇总
    python高级数据可视化Dash2
  • 原文地址:https://www.cnblogs.com/eaglezzb/p/4176517.html
Copyright © 2011-2022 走看看