之前在论坛里面看到了有前辈发帖介绍怎样使用 360的下载接口,但是只有建立下载任务,不能够控制任务状态,查看网速,为了满足自己的欲望,嘿嘿
,因此花了不少时间来找剩余的函数接口,望各位大牛指正。好了,不废话,现在上函数原型。
//启动下载器
int _StartRun();// 启动下载器,无参数
//停止下载器
int _StopRun();//停止运行下载器,无参数
//建立任务,开始下载
int _ PPStartTask(
LPSZSTR szDownUrl,//下载URL
LPSZSTR szFilePaht,//下载文件的存放 完整路径
int nUnknow1,//0
int nUnknow2,//0
int nUnknow3,//0
int nUnknow4,//0
int nUnknow5//0
);
//暂停/停止任务
int PPStopTask(
DWORD nTaskID//包含任务的ID
);
//开启P2P下载
int _EnabledP2P(
BOOL bEnabled//指定是否启用P2P下载
);
//设置下载速度 0:不限速
int PPSetConfig(
IN LPVOID lpPreperties;//指向一个属性的结构体
DWORD nUnknow;//未知参数,始终为0
);
//获取指定任务的任务信息
int _PPQueryTask3(
IN DWORD nTaskID//包含指定将要获取的任务ID信息
,OUT LPVOID lpTask //指向一个用来返回任务信息的结构体
);
//移除指定的任务
int PPRemoveTask(
IN DWORD nTaskID //传入要移除的任务ID
);
上面的函数当中,为Unknow的参数,是我也不知道是个什么作用,可以不用管,里面用到了两个结构体,同样结构体里面Unknow 还是不清楚是什么东东
typedef struct _TASK
{
DWORD nUnknown1;
ULONG64 nTotalBytes;//下载文件的总大小,单位:字节
ULONG64 nDownloadedBytes; //已下载字节数,单位:字节
ULONG64 nUnknow2;
ULONG64 nUnknow3;
DWORD nUnknow4;
DWORD nDownloadSpeed; //当前任务下载速度,单位:字节
DWORD nUploadSpeed; //当前任务上传速度,单位:字节
DWORD nUnknow5;
DWORD nUnknow6;
DWORD nUnknow7;
DWORD nUnknow8;
WCHAR wFilePath[512];//文件下载全路径
WCHAR wUnknow[1024];
}TASK,*PTASK;
typedef struct _CONFIG
{
DWORD nType;// 指定为0xC,可能不同的系统有所不同
DWORD nDownSpeed; //指定限制的下载速度,单位:字节
DWORD nUploadSpeed; //指定上传的速度,单位:字节
CHAR cUnknown2[180];
}CONFIG,*PCONFIG;
下面穿插上各个函数的使用示例
用到的全局变量
HMODULE hModule;//全局变量
DWORD g_nTaskID;//全局变量
//启动下载器
wchar_t wDllPath[MAX_PATH] = { 0 };
GetModuleFileName(NULL, wDllPath, MAX_PATH);
PathRemoveFileSpec(wDllPath);
wcscat(wDllPath, L"\\LiveUpd360.dll");
hModule = LoadLibrary(wDllPath);
if (0 == hModule)
{
return false;
}
DWORD StartRun = (DWORD)GetProcAddress(hModule, "_StartRun");
DWORD EnableP2P = (DWORD)GetProcAddress(hModule, "_EnableP2P");
_asm
{
mov eax, StartRun
call eax
push 1
mov eax, EnableP2P
call eax
add esp,0x4
}
//建立任务,自动开始下载
DWORD PPStartTask = (DWORD)GetProcAddress(hModule, "PPStartTask");
wchar_t wFilePath[MAX_PATH] = L"c://test/test.exe";
wchar_t wDownUrl[1024] = L"pdown://http://cdn.browser.aliyun.com/download/bin/YunOSzhushou-2.7.0.3458.exe";
_asm
{
push 0
push 0
push 0
push 0
push 0x14
lea eax, dword ptr wFilePath
push eax
lea ebx, dword ptr wDownUrl
push ebx
mov ebx, PPStartTask
call ebx//新建任务,开始下载
add esp, 1ch
mov g_nTaskID, eax//保存任务ID
}
//获取指定任务的信息
TASK *task = new TASK();
DWORD _PPQueryTask3 = (DWORD)GetProcAddress(hModule, "_PPQueryTask3");
_asm
{
mov eax, eax
mov ebx, ebx
mov eax, eax
mov ebx, task
push ebx
mov eax, g_nTaskID
push eax
mov eax, _PPQueryTask3
call eax
add esp, 8h
}
//停止/暂停 任务
DWORD PPStopTask = (DWORD)GetProcAddress(hModule, "PPStopTask");
_asm
{
mov ebx, dword ptr g_nTaskID
push ebx
mov eax, PPStopTask
call eax
}
//设置下载器属性,这里只能设置下载/上传速度,单位为字节
PCONFIG pConfig = new CONFIG();
pConfig->nUnknow1 = 0xC;
pConfig->nDownSpeed = 200*1024;
pConfig->nUploadSpeed = 10 * 1024;
memset(pConfig->cUnknown2, 0, 180);
TASK *task = new TASK();
DWORD PPSetConfig = (DWORD)GetProcAddress(hModule, "PPSetConfig");
_asm
{
push 0
mov eax, pConfig
push eax
mov eax, PPSetConfig
call eax
add esp, 8h
}
delete task;
delete pConfig;
//移除指定的任务,同时会删除源文件,可用于暂停,下载中的任务,不用于已完成的任务
DWORD PPRemoveTask = (DWORD)GetProcAddress(hModule, "PPRemoveTask");
_asm
{
mov ebx, dword ptr g_nTaskID
push ebx
mov eax, PPRemoveTask
call eax
}
里面的_PPQueryTask3 这个函数,只有现在新版的360 里面才包含的有,老版的没有,这里我奉上对应的DLL。
这是本人第一次发帖,如有不周正之处还请原谅;如果还有什么不太清楚的地方,请回帖,谢谢。
另外,求邀请码,求优秀!!!!
360Liveup.7z
[课程]Android-CTF解题方法汇总!
上传的附件: