学习时写的壳代码,太简陋了。而且还是个半成品。
高手飘过~~~~~
很多参考过看雪的内容,回馈给看雪。
希望能对像我这样的初学者有所帮助。
可以提出您友善的意见。
千万别打击小弟幼小的心灵。
加密代码段:
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);
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课