以前通常用修改hosts文件的方法,实现验证地址修改,但直接使用ip或dns查询代码的软件,修改hosts是无效的。 通过调试,发现某个软件请求验证前调用了inet_addr转换ip地址,通过hook inet_addr函数,实现了ip替换,网络验证转为本地验证。 unit APIHook; interface uses SysUtils, Windows, Win
一个有用的、名为inet_addr的支持函数,可把一个点式IP地址转换成一个32位的无符号长整数。它的定义 如下: unsigned long inet_addr( const char FAR *cp ); cp字段是一个空中止字符串,它认可点式表示法的IP地址。注意,这个函数把IP地址当作一个按网络字节顺序排列的32位无符号长整数返回. 1. 特殊地址 ...
skc := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); 2. bind 一旦为某种特定协议创建了套接字,就必须将套接字绑定到一个已知地址。bind函数可将指定的套接字同一个已知地址绑定到一起。该函数声明如下; function bind(s: TSocket; var addr: TSockAddr; namelen: Integer): Integer; stdcall; 其中第一...
inet_addr function converts a string containing an Internet Protocol dotted address into an in_addr. 版本: 1.0 2002/10/02 22:09:00 === } function GetNameByIPAddr(IPAddr: String; var MacName: String): Boolean; var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSADATA; begin ...
ulmacaddrleng:pointer) : DWord; StdCall; External 'Iphlpapi.dll' Name 'SendARP'; procedure TForm1.Button1Click(Sender: TObject); var myip:ulong; mymac:array[0..5] of byte; mymaclength:ulong; r:integer; begin myip:=inet_addr(PChar('192.168.6.180')); ...
2、er; begin myip:=inet_addr(pchar(80); mymaclength:=length(mymac); r:=sendarp(myip,0,mymac,mymaclength); label1.caption:=errorcode:+inttostr(r); label2.caption:=format(%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x,mymac0,mymac1,mymac2,mymac3,mymac4,mymac5); end; 2、取 ...
lpHostEnt := GetHostByName(HostName);if lpHostEnt = Nil then Exit;I := 0;pPtr := PaPInAddr(lpHostEnt^.h_addr_list);IpList.Clear;while pPtr^[I] <> nil do begin IpList.ADD( inet_ntoa(pptr^[I]^));Inc(I);end;Result := IpList.Count;finally WSACleanup;end;end;用...
addr: dword;beginedtName.Clear;WSAStartup(2, WSAData);IPAddress:=edtAddress.Text;tryaddr := inet_addr(PChar(IPAddress));HostEnt:= GetHostByAddr(@addr, Length(IPAddress), PF_INET);edtName.Text:=HostEnt.h_name;exceptShowMessage('无效的IP地址');end;WSACleanup;end;procedure ...
Functionsendarp(ipaddr:ulong; temp:dword; ulmacaddr:pointer; ulmacaddrleng:pointer):DWord;StdCall;External'Iphlpapi.dll'Name'SendARP'; procedureTForm1.Button1Click(Sender:TObject); var myip:ulong; mymac:array[0..5]ofbyte; mymaclength:ulong; r:integer; begin myip:=inet_addr(PChar('192...
local.sin_addr.S_addr := inet_addr('127.0.0.1'); //将socket绑定地址 nError := bind(soRecv,local,sizeof(local)); if nError = SOCKET_ERROR then CheckRc('bind'); //分配内存 pszRecv := AllocMem(4096); for i := 0 to dwCount -1 do ...