首页
社区
课程
招聘
新学脱壳,写了一个小破玩意儿,请大家测试
2004-9-9 14:53 14031

新学脱壳,写了一个小破玩意儿,请大家测试

RoBa 活跃值
16
2004-9-9 14:53
14031
新学脱壳,还在大门外转悠,写了这个小东东让大家乐乐。

IDFooler,用于欺骗文件检测工具,目前仅能伪装成VC和DELPHI。VC那个还行,DELPHI这个能骗过FI,骗不过PEID。以前坛子里有大大写过,我这个感觉更“傻瓜”一些。

在98下运行没问题,请各位在不同系统中测试。如果哪位有各种壳和编译器的特征码请赐教。

附件:IDFooler.rar



关键部分的源码(请参考挂在上面的WinRoot的文章,上面有PE结构的详细分析)
void CPEDlg::OnApply() 
{
	CFile myFile;
	_IMAGE_DOS_HEADER	myDosHeader;
	_IMAGE_NT_HEADERS	myNtHeader;
	_IMAGE_SECTION_HEADER	mySectionHeader;
	int NumberOfSections,myBufSize;
	DWORD VOffset=0,VSize=0,ROffset=0,RSize=0,myVOffset=0,myROffset=0;
	DWORD OldEP,NewEP,Jmp;
	BYTE VCBuf[53]={
		0x55,0x8b,0xec,0x6a,0xff,0x68,0x00,0x00,
		0x00,0x00,0x68,0x00,0x00,0x00,0x00,0x64,
		0xa1,0x00,0x00,0x00,0x00,0x50,0x64,0x89,
		0x25,0x00,0x00,0x00,0x00,0x83,0xec,0x68,
		0x53,0x56,0x57,0x58,0x58,0x58,0x83,0xc4,
		0x68,0x58,0x67,0x64,0xa3,0x00,0x00,0x58,
		0x58,0x58,0x58,0x8b,0xe8
	};
	BYTE DELPHIBuf[10]={
		0x55,0x8b,0xec,0x83,0xc4,0xf4,0x83,0xc4,
		0x0c,0x50
	};
	BYTE myBuf[100]={0};

	CString m_bakname=m_filename+".bak";
	::CopyFile((LPCTSTR)m_filename,(LPCTSTR)m_bakname,FALSE);	//backup
	if (!myFile.Open((LPCTSTR)m_filename,CFile::modeReadWrite|CFile::typeBinary,NULL))
		return;
	myFile.Read(&myDosHeader,sizeof(_IMAGE_DOS_HEADER));
	if (myDosHeader.e_magic!=IMAGE_DOS_SIGNATURE)
	{
		AfxMessageBox("不是有效的MZ文件!",0,0);
		return;
	}
	myFile.Seek(myDosHeader.e_lfanew,CFile::begin);
	myFile.Read(&myNtHeader,sizeof(_IMAGE_NT_HEADERS));
	if (myNtHeader.Signature!=IMAGE_NT_SIGNATURE)
	{
		AfxMessageBox("不是有效的PE文件!",0,0);
		return;
	}
	NumberOfSections=myNtHeader.FileHeader.NumberOfSections;
	myNtHeader.FileHeader.NumberOfSections=NumberOfSections+1;
	myFile.Seek(myDosHeader.e_lfanew,CFile::begin);
	myFile.Write(&myNtHeader,sizeof(_IMAGE_NT_HEADERS));
	for (int i=0;i<NumberOfSections;i++)
	{
		myFile.Read(&mySectionHeader,sizeof(_IMAGE_SECTION_HEADER));
		if (mySectionHeader.VirtualAddress>VOffset)
		{
			VOffset=mySectionHeader.VirtualAddress;
			VSize=mySectionHeader.Misc.VirtualSize;
		}
		if (mySectionHeader.PointerToRawData>ROffset)
		{
			ROffset=mySectionHeader.PointerToRawData;
			RSize=mySectionHeader.SizeOfRawData;
		}
	}		//Get the Max Offset
	while (myVOffset<VOffset+VSize)
	{
		myVOffset+=0x1000;
	}
	while (myROffset<ROffset+RSize)
	{
		myROffset+=0x200;
	}
	for (i=0;i<8;i++) mySectionHeader.Name[i]=0;
	mySectionHeader.Name[0]='R';
	mySectionHeader.Name[1]='o';
	mySectionHeader.Name[2]='B';
	mySectionHeader.Name[3]='a';
	mySectionHeader.Misc.VirtualSize=0x1000;
	mySectionHeader.VirtualAddress=myVOffset;
	mySectionHeader.SizeOfRawData=0x200;
	mySectionHeader.PointerToRawData=myROffset;
	mySectionHeader.Characteristics=0xE0000020;
	myFile.Write(&mySectionHeader,sizeof(_IMAGE_SECTION_HEADER));
			//Add a New Section
	OldEP=myNtHeader.OptionalHeader.AddressOfEntryPoint;
	NewEP=myVOffset;
	myNtHeader.OptionalHeader.AddressOfEntryPoint=NewEP;
	myNtHeader.OptionalHeader.MajorLinkerVersion=6;
	myNtHeader.OptionalHeader.MinorLinkerVersion=0;	
	myNtHeader.OptionalHeader.SizeOfImage=myVOffset+0x1000;
	myFile.Seek(myDosHeader.e_lfanew,CFile::begin);
	myFile.Write(&myNtHeader,sizeof(_IMAGE_NT_HEADERS));
			//write new EntryPoint
	switch (type)
	{
	case TYPE_VC:
		myBufSize=sizeof(VCBuf);
		memcpy(myBuf,VCBuf,myBufSize);
		break;
	case TYPE_DELPHI:
		myBufSize=sizeof(DELPHIBuf);
		memcpy(myBuf,DELPHIBuf,sizeof(DELPHIBuf));
	}

	myFile.SetLength(myROffset+0x200);
	myFile.Seek(-0x200,CFile::end);
	myFile.Write(&myBuf,myBufSize);
	Jmp=OldEP-(NewEP+myBufSize)-5;
	BYTE JmpBuf=0xE9;
	myFile.Write(&JmpBuf,1);
	myFile.Write(&Jmp,sizeof(Jmp));
			//write the KeyCode
	AfxMessageBox("Success!",MB_OK|MB_ICONINFORMATION,0);
}


呵呵,没什么技术含量,贻笑大方了:)

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 7
打赏
分享
最新回复 (20)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 85 2004-9-9 15:41
2
0
支持一下
可以看看PEid的识别过程
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
鸡蛋壳 2004-9-9 16:02
3
0
针对这个欺骗工具,直接加入特征字,这样可以直接检测出欺骗工具。 哈哈
雪    币: 5364
活跃值: (2277)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lucktiger 2004-9-9 17:26
4
0
原理就是增加了一段该语言的入口代码,运行后指向原始入口点。
支持加强功力,写出一个猛壳。
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bbzhu 2004-9-9 18:10
5
0
能够发出源码!谢谢!
雪    币: 250
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baby 2004-9-9 18:56
6
0
好东西,先收藏。
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
RoBa 16 2004-9-9 20:40
7
0
最初由 lucktiger 发布
原理就是增加了一段该语言的入口代码,运行后指向原始入口点。
支持加强功力,写出一个猛壳。


这个离“壳”还差十万八千里,更别提“猛壳”了,不过我会努力的

放出源代码,请各位批评指正。
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2004-9-9 20:48
8
0
把hying抓来刑讯逼供就行了
雪    币: 2367
活跃值: (756)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
小虾 10 2004-9-9 21:00
9
0
最初由 forgot 发布
把hying抓来刑讯逼供就行了

:D 恐怖ing~~~
雪    币: 279
活跃值: (375)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
lordor 6 2004-9-9 22:22
10
0
最初由 forgot 发布
把hying抓来刑讯逼供就行了


逼供?
估计Hying会给出一个鸡蛋壳
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2004-9-9 22:23
11
0
hying把鸡蛋壳伪装代码给你
雪    币: 13146
活跃值: (3983)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
LOCKLOSE 2 2004-9-9 22:34
12
0
最初由 forgot 发布
hying把鸡蛋壳伪装代码给你

......鸡蛋壳的强度如何?:D
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Vicky 2004-9-10 00:26
13
0

达达们快写出一个猛壳来哈~~~~
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mhsong 2004-9-10 23:00
14
0
看见这个东东真高兴,学习ing 谢谢
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
meila2004 2004-9-11 18:36
15
0
我对原代码的共享者,都是怀着敬佩的心情!
对于PEid的原理,我很敢兴趣!
雪    币: 87616
活跃值: (199274)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2004-9-11 23:18
16
0
支持!
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
qiweixue 19 2004-9-13 14:18
17
0
期待楼主开出个猛壳,来学习ing,真是谢谢・・
最初由 Vicky 发布

达达们快写出一个猛壳来哈~~~~
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wolfx 2004-12-8 15:31
18
0
最初由 LOCKLOSE 发布

......鸡蛋壳的强度如何?:D


估计能被砖头砸不破
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limee 2004-12-12 13:47
19
0
我用Windows下面的Notepad.exe来伪装成为Delphi写的程序,
但是用Peid却检测不到?
这个是不是bug?
附件:
附件:notep.rar

最初由 RoBa 发布


这个离“壳”还差十万八千里,更别提“猛壳”了,不过我会努力的

放出源代码,请各位批评指正。
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limee 2004-12-12 20:41
20
0
Delphi的伪装没有成功,似乎哪里还需要一些特征的值

最初由 RoBa 发布
新学脱壳,还在大门外转悠,写了这个小东东让大家乐乐。

IDFooler,用于欺骗文件检测工具,目前仅能伪装成VC和DELPHI。VC那个还行,DELPHI这个能骗过FI,骗不过PEID。以前坛子里有大大写过,我这个感觉更“傻瓜”一些。

在98下运行没问题,请各位在不同系统中测试。如果哪位有各种壳和编译器的特征码请赐教。
........
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lwqqq 2004-12-17 21:10
21
0
xpsp2下用Notepad.exe来伪装,记事本不能运行,用软件伪装出现"遇到
错误----",已经删除IDFooler.exe.
游客
登录 | 注册 方可回帖
返回