www.pudn.com > 200410111032011273DESMD5ZLIB算法源代码.rar > ArithDLL.cpp


// ArithDLL.cpp : Defines the entry point for the DLL application. 
// 
 
#include "stdafx.h" 
#include "ArithDLL.h" 
 
BOOL APIENTRY DllMain( HANDLE hModule,  
                       DWORD  ul_reason_for_call,  
                       LPVOID lpReserved 
					 ) 
{ 
    switch (ul_reason_for_call) 
	{ 
		case DLL_PROCESS_ATTACH: 
		case DLL_THREAD_ATTACH: 
		case DLL_THREAD_DETACH: 
		case DLL_PROCESS_DETACH: 
			break; 
    } 
    return TRUE; 
}; 
 
/*ARITHDLL_API int WINAPI CheckExeFile(char *szFileName, char *szMutex) 
{ 
    if (szMutex != NULL) 
    { 
        HANDLE m_hMutex; 
  	    m_hMutex=CreateMutex(NULL,FALSE,szMutex); 
       	if (m_hMutex) 
   	    { 
     	    if (GetLastError()==ERROR_ALREADY_EXISTS) 
     	    { 
                CloseHandle(m_hMutex); 
  	        	return -1; 
       		} 
        } 
       	else{ return -2;} 
    } 
 
    HANDLE hFile; 
    hFile=CreateFile(szFileName,  
					 GENERIC_READ, 
					 FILE_SHARE_READ, 
					 NULL, 
					 OPEN_EXISTING,  
					 FILE_ATTRIBUTE_NORMAL, 
					 NULL); 
	if (hFile == INVALID_HANDLE_VALUE) 
        return -3; 
     
	int iLen; 
	iLen = GetFileSize(hFile, NULL); 
    if (iLen<=0)  
	{ 
		CloseHandle(hFile); 
		return -4; 
	} 
     
	char *strTemp=new char[iLen]; 
	int iReadLen, iResult; 
 
    SetFilePointer(hFile, 0L, NULL, FILE_BEGIN); 
    iResult = ReadFile(hFile, strTemp, iLen, (unsigned long *)&iReadLen, NULL); 
    CloseHandle(hFile); 
	if (iResult==0 || iReadLen!=iLen) 
	{ 
        delete strTemp; 
        return -5; 
	} 
 
    char strGene[]="_LSSOFTencrypt_1999b1210_zhangxianzhu_1968dd0316_\ 
Fateher_19321208_Mother_19390507_Wife_19680707_lssoft@public.szptt.net.cn\ 
_中国人的操作系统_longsi_130476dc_22c9f00f"; 
    for(int i=0; i 0 && dwCRC!=0) 
    { 
        if (::MessageBox(NULL, "程序已被病毒或其他程序修改,是否继续执行?",  
						 "LongSi Message", 
						 MB_YESNO|MB_ICONWARNING|MB_DEFBUTTON2|MB_TOPMOST)!=IDYES) 
            return -6; 
    } 
    return 0; 
} 
*/ 
 
 
////////////////////////////////////////////////////////////////////// 
// 
//将网际顺序的unsigned long, 变成Intel顺序的unsigned long值 
// 
// 
////////////////////////////////////////////////////////////////////// 
ARITHDLL_API long WINAPI ChangeLong(long lValue) 
{ 
	unsigned long ulTemp = (unsigned long)lValue; 
	ulTemp = ((ulTemp&0xF000) >> 24) + 
			 ((ulTemp&0x0F00) >> 8) + 
			 ((ulTemp&0x00F0) << 8) + 
			 ((ulTemp&0x000F) << 24); 
	return (long)ulTemp; 
} 
 
////////////////////////////////////////////////////////////////////// 
// 
//将网际顺序的WORD, 变成Intel顺序的WORD值 
// 
// 
////////////////////////////////////////////////////////////////////// 
ARITHDLL_API short WINAPI ChangeShort(short shValue) 
{ 
	unsigned short ushTemp=(unsigned short)shValue; 
	ushTemp = ((ushTemp&0xF0) >> 8) + 
			  ((ushTemp&0x0F) << 8); 
	return (short)ushTemp; 
}