首页
社区
课程
招聘
[分享]获取IP地址的另一种方法
发表于: 2009-8-17 09:36 6189

[分享]获取IP地址的另一种方法

2009-8-17 09:36
6189
由于工作需要,想实现不调用任何函数获取IP地址,于是把GetIpAddrTable函数逆了,发现它是向\device\tcp查询ip实现的,进一步逆向进行不下去了(水平有限)。

模拟其实现写了段获取IP的代码,虽然不知道有什么用,还是跟大家分享一下吧:

#include <windows.h>
#include <stdio.h>
//By Fypher
//http://hi.baidu.com/nmn714

int main(){
	HANDLE hDevice=CreateFile(
		TEXT("\\\\.\\Tcp"),
		GENERIC_READ|GENERIC_WRITE,
		FILE_SHARE_READ|FILE_SHARE_WRITE,
		0,
		OPEN_EXISTING,
		0,
		0
	);
	if(hDevice==INVALID_HANDLE_VALUE){
		return 0;
	}

	BYTE pInBuffer[36]={
		0x01,0x03,0x00,0x00,0x00,0x00,
		0x00,0x00,0x00,0x02,0x00,0x00,
		0x00,0x01,0x00,0x00,0x02,0x01,
		0x00,0x00,0x00,0x00,0x00,0x00,
		0x00,0x00,0x00,0x00,0x00,0x00,
		0x00,0x00,0x00,0x00,0x00,0x00
	};
	BYTE pOutBuffer[296];

	DWORD len;
	if(!DeviceIoControl(hDevice,
						0x00120003,&pInBuffer,
						sizeof(pInBuffer),
						&pOutBuffer,
						sizeof(pOutBuffer),
						&len,
						NULL))
	{
		return 0;
	}

	CloseHandle(hDevice);
	ULONG a=*(PULONG)pOutBuffer & 0x000000FF;
	ULONG b=(*(PULONG)pOutBuffer & 0x0000FF00)>>8;
	ULONG c=(*(PULONG)pOutBuffer & 0x00FF0000)>>16;
	ULONG d=(*(PULONG)pOutBuffer & 0xFF000000)>>24;
	printf("ip:%d.%d.%d.%d\n",a,b,c,d);
	system("pause");
	return 0;
}


但是我的问题依然没有解决。尝试过暴力搜索,发现内存中没有一个跟系统版本相关的固定地址存放IP地址。
不调用任何函数获取IP地址(Ring0/Ring3都行),请大牛们给点思路……

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 500
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
注册表有。。。
不过硬件不同子项名称序列不一样,你可以枚举然后比较显示名。
本机和ADSL的外网可以看到。

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\
下面是GUID的的项是本地的

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces
下面有很多。。。包括本地和ADSL的外网。。。
但是如何区分没自己研究过。
2009-8-17 09:55
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
3
谢谢了!!
不过MS不调用函数读取注册表依然有难度……
2009-8-17 10:43
0
雪    币: 251
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我感觉不调用API是不可能的,除非IP地址存在于用户态虚拟地址空间的某个地方
最多隐蔽一点调用
2009-8-17 11:08
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
5
哇哈哈哈,终于成功了~!兴奋一下
2009-8-17 15:58
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
LZ 成功了啊。。那分享下啊。。可以不!!
2009-8-17 16:04
0
雪    币: 157
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
恭喜楼主~ 可不可以简单说下思路?~
2009-8-22 10:24
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
cmd命令也可以的.呵呵.暗地里调用.获取参数就可以了.
2009-8-24 00:24
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
咋用?详细说说
2009-8-24 01:19
0
游客
登录 | 注册 方可回帖
返回
//