您当前的位置:网游热线游戏学院千年私服千年私服技术 → 文章内容 退出登录 用户管理
本类热门文章
相关下载
    怎么利用底层的技术来接管游戏的发包
    作者:佚名  来源:不详  发布时间:2006-5-2 14:00:10

    减小字体 增大字体

    六:如果单机代理被封,

        在WINDOWS系统中,网络通讯的任务是由一个叫WSOCK32.DLL(在SYSTEM目录下)来完成的,每当游戏被运行时,他都会自动的去调用这个动态连接库,因为在WINDOWS系统中对于文件的搜索顺序是 程序目录>系统目录>路径中设置的目录,所以我们就有机会替换掉系统的WSOCK32.DLL使的游戏调用我们的WSOCK32.DLL,这样我们就有了对于游戏封包绝对的控制权,有人问:"我们应该怎么做呢?",我们只要自己编写一个WSOCK32.DLL放到游戏的目录下,就OK了,当然让我们完全自己去编写一个WSOCK32.DLL是不太现实的,因为本身网络通讯要处理很多更底层的东西,比如说从网卡读取BIT流,所以我们选择由我们的WSOCK32.DLL去调用系统的WSOCK32.DLL来完成这个功能。

    WSOCK32.DLL有很多的输出函数,函数如下:
    __WSAFDIsSet
    accept
    AcceptEx
    Arecv
    Asend
    bind
    closesocket
    closesockinfo
    connect
    dn_expand
    EnumProtocolsA
    EnumProtocolsW
    GetAcceptExSockaddrs
    GetAddressByNameA
    GetAddressByNameW
    gethostbyaddr
    gethostbyname
    gethostname
    GetNameByTypeA
    GetNameByTypeW
    getnetbyname
    getpeername
    getprotobyname
    getprotobynumber
    getservbyname
    getservbyport
    GetServiceA
    GetServiceW
    getsockname
    getsockopt
    GetTypeByNameA
    GetTypeByNameW
    htonl
    htons
    inet_addr
    inet_network
    inet_ntoa
    ioctlsocket
    listen
    MigrateWinsockConfiguration
    NPLoadNameSpaces
    NSPStartup
    ntohl
    ntohs
    rcmd
    recv
    recv
    rexec
    rresvport
    s_perror
    select
    send
    sendto
    sethostname
    SetServiceA
    SetServiceW
    setsockopt
    shutdown
    socket
    TransmitFile
    WEP
    WSAAsyncGetHostByAddr
    WSAAsyncGetHostByName
    WSAAsyncGetProtoByName
    WSAAsyncGetProtoByNumber
    WSAAsyncGetServByName
    WSAAsyncGetServByPort
    WSAAsyncSelect
    WSACancelAsyncRequest
    WSACancelBlockingCall
    WSACleanup
    WSAGetLastError
    WSAIsBlocking
    WSApSetPostRoutine
    WSARecvEx
    WSASetBlockingHook
    WSASetLastError
    WSAStartup
    WSAUnhookBlockingHook
    WsControl
    WSHEnumProtocols

       在这里,不是所有的函数都要修改,因为我们只关心发送和接收的封包,所以我们只要修改send 和recv两个函数,前者是发送封包的后者是接收封包的,我们在这两个函数的处理中加入我们自己的代码,来完成封包的辨认,修改以及转发等功能。

    六:如果单机代理被封,我们怎么利用底层的技术来接管游戏的发包?
         在WINDOWS系统中,网络通讯的任务是由一个叫WSOCK32.DLL(在SYSTEM目录下)来完成的,每当游戏被运行时,他都会自动的去调用这个动态连接库,因为在WINDOWS系统中对于文件的搜索顺序是 程序目录>系统目录>路径中设置的目录,所以我们就有机会替换掉系统的WSOCK32.DLL使的游戏调用我们的WSOCK32.DLL,这样我们就有了对于游戏封包绝对的控制权,有人问:"我们应该怎么做呢?",我们只要自己编写一个WSOCK32.DLL放到游戏的目录下,就OK了,当然让我们完全自己去编写一个WSOCK32.DLL是不太现实的,因为本身网络通讯要处理很多更底层的东西,比如说从网卡读取BIT流,所以我们选择由我们的WSOCK32.DLL去调用系统的WSOCK32.DLL来完成这个功能。

    WSOCK32.DLL有很多的输出函数,函数如下:
    __WSAFDIsSet
    accept
    AcceptEx
    Arecv
    Asend
    bind
    closesocket
    closesockinfo
    connect
    dn_expand
    EnumProtocolsA
    EnumProtocolsW
    GetAcceptExSockaddrs
    GetAddressByNameA
    GetAddressByNameW
    gethostbyaddr
    gethostbyname
    gethostname
    GetNameByTypeA
    GetNameByTypeW
    getnetbyname
    getpeername
    getprotobyname
    getprotobynumber
    getservbyname
    getservbyport
    GetServiceA
    GetServiceW
    getsockname
    getsockopt
    GetTypeByNameA
    GetTypeByNameW
    htonl
    htons
    inet_addr
    inet_network
    inet_ntoa
    ioctlsocket
    listen
    MigrateWinsockConfiguration
    NPLoadNameSpaces

    [] [返回上一页] [打 印]
    文章评论 (评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图