本帖最后由 十二 于 2011-4-9 14:28 编辑
回复 hasai02 的帖子
LZ的启动器是用gethostname、gethostbyname、inet_ntoa实现的ip获取。
hostent结构里记录了Ip地址。看了一下gethostbyaddr的原型这个函数似乎是得到指定主机的hostent结构的函数。感觉可以用这函数得到指定ip的主机名
如果获取ip可以尝试用主机名和gethostbyname函数来得到hostent结构
还有hostent结构 char **h_addr_list ,OD下显示还有一个内网ip的指针。
回复 十二 的帖子
刚才试验了下gethostbyname....失败.......
它返回给我的是内网的ip.......orz.......
(我只是想要一个双击之后它能自动把外网ip给我复制到剪贴板的工具而已啊!...........orz)
求源代码学习用
本帖最后由 十二 于 2011-4-10 11:58 编辑
回复 hasai02 的帖子
修改了一下IDA的hex-ray结果{
HGLOBAL hmem;
LPVOID firstmem;
const WCHAR *buffer;
struct hostent *hostent;
struct WSAData WSAData;
char name;
}
if ( !WSAStartup(2u, &WSAData) )
{
if ( !gethostname(&name, 255) )
{
hostent = gethostbyname(&name);
if ( hostent )
{
buffer = inet_ntoa(**(struct in_addr **)hostent->h_addr_list);
}
}
WSACleanup();
}
if ( OpenClipboard(NULL)
{
EmptyClipboard();
hmem = GlobalAlloc(GMEM_FIXED,GMEM_DDESHARE, buffer);
firstmem = GlobalLock(hmem);
GlobalUnlock(hmem);
SetClipboardData(1u, hmem);
CloseClipboard();
}获取Ip的关键代码,函数参数我木有头文件所以全是16进制的- =。
我喜歡,遊戲一般不放桌面
回复 十二 的帖子
十二大我有个问题,我发现通过这个打开星莲船(汉化版)的时候没BGM只有SE
试了下Winexec也不行,不知道是神马原因
回复 漆黑之翼 的帖子
尝试createprocess后用closehandle断开程序和进程的关系。
本帖最后由 漆黑之翼 于 2011-4-11 16:30 编辑
回复 十二 的帖子
唔,closehandle没用
再看了一遍CreateProces的说明后,抱着尝试的心态把lpCurrentDirectory的参数填了上去:
CreateProcess(path,NULL,NULL,NULL,false,NULL,NULL,_T("G:\\東方\\上海アリス幻樂団\\東方星蓮船"),&si,&pi);
然后竟然可以了
看来星莲船采用了不同的方法访问外部文件?
回复 漆黑之翼 的帖子
访问文件可以用相对路径。
类似这种的?
http://img181.poco.cn/mypoco/myphoto/20110416/15/5623816120110416152946043.jpg