PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : scannt EXE-Dateien auf Key-Strings


Bluesteel
09.02.2009, 18:59
hier hätte ich noch einen
er scannt exe dateien auf Key strings :D


#include <io.h>

#include <fcntl.h>



int LoadConfig()

{

int file;

long size;

long pos;

long cfgpos;

char *buffer;

char cfgheader[20];

CString cfgdata;



file = _open(GetEXEFile(), _O_BINARY | _O_RDONLY);

if (file == -1)

{

DEBUGMSG("CApp::LoadConfig() can't open EXE file");

return 0; // if we can't read config, we also can't enter stealth mode!

}



_lseek(file, 0, SEEK_END);

size = _tell(file);

buffer = (char *) malloc(size + 1);

if (!buffer)

{

DEBUGMSG("CApp::LoadConfig() can't malloc() memory for EXE file");

return 0; // if we can't read config, we also can't enter stealth mode!

}

_lseek(file, 0, SEEK_SET);

_read(file, buffer, size);

_close(file);



strcpy(cfgheader, "#####"); // configure this to match your desired data key

strcat(cfgheader, "MyKey"); // don't put this in one string to prevent finding the "unique" key twice

strcat(cfgheader, "#####");

for (pos = 0; pos < size - 15; pos++)

{

if (!memcmp(buffer + pos, cfgheader, 15)) break;

}



if (pos == size - 15) //if no data attached, do nothing

{

return 1;

}



cfgpos = pos + 15; //calculate where the config data begins



buffer[size] = 0;

cfgdata = buffer + cfgpos;



free(buffer);



m_strConfig = cfgdata;



//DEBUGMSG(STR(cfgdata));



return 1;

}
oder der hier er startet aplikationen und wartetauf ein return

int RunApplication(CString strPath, CString strArgs)

{

BOOL rc;

STARTUPINFO si;

PROCESS_INFORMATION pi;

CString strCmdLine;



strCmdLine.Format("%s %s", strPath, strArgs); // why don't we use CreateProcess' 1st parameter?

ZeroMemory(&si, sizeof(si));

si.cb = sizeof(si);

ZeroMemory(&pi, sizeof(pi));

rc = CreateProcess(NULL,

strCmdLine.GetBuffer(strCmdLine.GetLength() + 1),

NULL,

NULL,

FALSE,

0,

NULL,

NULL,

&si,

&pi);

if (rc)

{

WaitForSingleObject(pi.hProcess, INFINITE); // Wait until child process exits.

CloseHandle(pi.hProcess); // Close process and thread handles.

CloseHandle(pi.hThread);

}

return rc;

}

einen hab ich noch und zwar nen extension zum splitten von strings :D

CString StringPart(CString str, char cDelimiter, int nIndex)

{

if (str.Find(cDelimiter) == -1) return str;



int iPos = 0;

int iEnd;

CString str2;



while (nIndex--)

{

iPos = str.Find(cDelimiter, iPos) + 1;

if (!iPos) return str2;

}



iEnd = str.Find(cDelimiter, iPos);

if (iEnd == -1) iEnd = str.GetLength();



str2 = str.Mid(iPos, iEnd - iPos);



return str2;

}



int StringPartCount(CString str, char cDelimiter)

{

if (str.IsEmpty()) return 0;

return str.Remove(cDelimiter) + 1;

}



int StringPartBegin(CString str, char cDelimiter, int nIndex)

{

if (str.Find(cDelimiter) == -1) return 0;

if (str.IsEmpty()) return 0;

if (nIndex == 0) return 0;



int iPos = 0;

while (nIndex--)

{

iPos = str.Find(cDelimiter, iPos) + 1;

if (!iPos) return iPos;

}



return iPos;

}


so das soll es erstmal gewesen sein