⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 endata.cpp

📁 此为本书的配套光盘.本书不但由浅入深地讲解了软件保护技术
💻 CPP
字号:
/********************************************************************

	Copyright (c) Beijing Feitian Technologies
	http://www.FTSafe.com

	File :		EnData.cpp	

	Created:	2003/11/04

	Author:		yihai
	
	Purpose:	?

	Revision:	?

*********************************************************************/
// EnData.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

void EncryptData(char* pData,int iSize,char factor)
{	
	for(int i=0;i<iSize;i++)
	{
		pData[i] ^= factor;
	}
}

int main(int argc, char* argv[])
{
	if(argc<5)
	{
		printf("useage: offfset size filename\n");
		return 0;
	}
	
	char* pStop=NULL;
	
	char* pFileName = argv[1];
	DWORD dwOffset = strtoul(argv[2],&pStop,16);
	DWORD dwSize = strtoul(argv[3],&pStop,16);
	char  chFactor = (char)strtoul(argv[4],&pStop,16);
	
	
	if(access(pFileName,0)==-1)
	{
		printf("File %s is not exist!\n",pFileName);
		return 1;
	}		
	
	HANDLE hFile =	CreateFile(pFileName,GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	
	if(hFile==INVALID_HANDLE_VALUE)
	{
		printf("error open %s\n",pFileName);
		return 1;
	}
	
	char* pData = new char[dwSize];
	
	SetFilePointer(hFile,dwOffset,0,FILE_BEGIN);
	DWORD dwRead=0;
	if(!ReadFile(hFile,pData,dwSize,&dwRead,NULL))
	{
		printf("error read %s\n",pFileName);
		return 1;		
	}
	if(dwRead<dwSize)
		printf("warning read size:%d\n",dwRead);
	
	EncryptData(pData,dwSize,chFactor);
	
	SetFilePointer(hFile,dwOffset,0,FILE_BEGIN);
	DWORD dwWritten=0;
	if(!WriteFile(hFile,pData,dwSize,&dwWritten,NULL))
	{
		printf("error write %s\n",pFileName);
		return 1;		
	}
	if(dwWritten<dwSize)
		printf("warning written size:%d\n",dwWritten);

	CloseHandle(hFile);
	delete[] pData;
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -