首页
社区
课程
招聘
[分享]学习时写的壳代码
发表于: 2008-11-22 22:58 12256

[分享]学习时写的壳代码

2008-11-22 22:58
12256
学习时写的壳代码,太简陋了。而且还是个半成品。
高手飘过~~~~~
很多参考过看雪的内容,回馈给看雪。
希望能对像我这样的初学者有所帮助。
可以提出您友善的意见。
千万别打击小弟幼小的心灵。

加密代码段:
	file_opt.hFile=CreateFile(szFileName,GENERIC_READ | GENERIC_WRITE,
		FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

	FileSize=GetFileSize(file_opt.hFile,NULL);

	ReadFile(file_opt.hFile,&DosHdr,sizeof(IMAGE_DOS_HEADER),&NumRW,0);

	SetFilePointer(file_opt.hFile,DosHdr.e_lfanew,0,FILE_BEGIN);
	ReadFile(file_opt.hFile,&NtHdr,sizeof(IMAGE_NT_HEADERS),&NumRW,0);

	SetFilePointer(file_opt.hFile,
		(DosHdr.e_lfanew+sizeof(IMAGE_NT_HEADERS)),
		0,
		FILE_BEGIN);
	ReadFile(file_opt.hFile,&SecHdr,sizeof(IMAGE_SECTION_HEADER),&NumRW,0);

	//::MessageBox(NULL,(const char *)SecHdr.Name,NULL,MB_OK);
	if(!lstrcmp((const char *)SecHdr.Name,".text"))
	{
		SecHdr.Characteristics|=IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE;	//修改.text的属性
		SetFilePointer(file_opt.hFile,
			(DosHdr.e_lfanew+sizeof(IMAGE_NT_HEADERS)),
			0,
			FILE_BEGIN);
		WriteFile(file_opt.hFile,&SecHdr,sizeof(IMAGE_SECTION_HEADER),&NumRW,0);
		SetFilePointer(file_opt.hFile,SecHdr.PointerToRawData,0,FILE_BEGIN);
		TextSize=SecHdr.SizeOfRawData;
		pc=new char[TextSize];
		memset((void *)pc,0,TextSize);
		ReadFile(file_opt.hFile,pc,TextSize,&NumRW,0);
		p=pc;
		
		//加密部分与0x13进行异或
		for(i=0;i<TextSize;i++)
		{
			*p^=0x21;
			SetFilePointer(file_opt.hFile,SecHdr.PointerToRawData+i,0,FILE_BEGIN);
			WriteFile(file_opt.hFile,p,1,&NumRW,0);
			p++;
		}
		InsertMsg("成功!代码加密成功!");

		delete [] pc;
	}
	else
	{
		InsertMsg("失败!加壳失败!");
	}

	CloseHandle(file_opt.hFile);


生成不同的节的名称
NewSectionName	db	'.aspack',0
		db	'.vmp   ',0
		db	'.upx0  ',0
		db	'INIT   ',0
		db	'.mackt ',0
		db	'.upx1  ',0
		db	'       ',0
		db	'snyped ',0
		db	'.Katja ',0
		db	'.jtsnew',0
		db	'.SuCop0',0

        invoke	GetTickCount   
	xor	edx,edx   
	mov	ecx,0Bh
	div	ecx
	mov	eax,edx
	mov	ebx,08h
	mul	ebx
	mov	ebx,SectionName
	add	ebx,eax
	mov	SectionName,ebx


anti OD:
                push	0ABDBFFDEh
	pop	[esi].OptionalHeader.LoaderFlags
	
	push	0DFFFDDDEh
	pop	[esi].OptionalHeader.NumberOfRvaAndSizes

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 147
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢LZ,正需要~~学习学习
2008-11-25 00:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢LZ,正需要~~学习学习
2008-11-25 15:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼主,正需要这方面的东西~~学习学习
2008-11-26 17:51
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
thank you
2010-12-9 01:41
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
收下回去看!!^_^
2010-12-21 14:25
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习了!!谢谢楼主分享!!
2010-12-25 22:31
0
雪    币: 4443
活跃值: (2066)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
学习了额!!!!!!!
2011-1-6 14:27
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这些都懂  但是我不清楚的是加了壳之后程序运行时是怎样加载的
2011-3-29 15:42
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不错,能写出简单的,以后就能写出复杂的
2011-4-1 23:37
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
收藏学习,谢了
2011-5-11 09:46
0
游客
登录 | 注册 方可回帖
返回
//