分析了明小子注入工具的源代码,发现他用的是NMHTTP控件来实现域名转IP的。 我把源代码分离了出来: procedure TForm1.btpingClick(Sender: TObject); begin if Form1.SiteName.Text = '' then //判断是否有输入网址 begin showmessage('请输入域名'); end; Form1.NMHTTP1.Host:=Form1.SiteName.Text; //需要解析的主机 Form1.NMHTTP1.Port:=80; //设置端口 Form1.btPing.Enabled:=False; Form1.SiteName.Enabled:=False; try Form1.NMHTTP1.Options(Form1.SiteName.Text); except showmessage('请检测域名是否输入正确,或网络连接是否正常!'); end; Form1.NMHTTP1.Disconnect; //断开 end;
end.
但是Delphi7中没有NMHTTP控件,所以我用winsock来实现域名转IP。 记得添加winsock单元,源代码如下: function HostToIP(Name: string; var Ip: string): Boolean; var wsdata : TWSAData; hostName : array [0..255] of char; hostEnt : PHostEnt; addr : PChar; begin WSAStartup ($0101, wsdata); try gethostname (hostName, sizeof (hostName)); StrPCopy(hostName, Name); hostEnt := gethostbyname (hostName); if Assigned (hostEnt) then if Assigned (hostEnt^.h_addr_list) then begin addr := hostEnt^.h_addr_list^; if Assigned (addr) then begin IP := Format ('%d.%d.%d.%d', [byte (addr [0]), byte (addr [1]), byte (addr [2]), byte (addr [3])]); Result := True; end else Result := False; end else Result := False else begin Result := False; end; finally WSACleanup; end end;
procedure TForm1.Button1Click(Sender: TObject); var hqw:string; begin