【放置江湖】弱联网手游,网络协议分析修改。每天签到可获得35元宝

本文详细介绍了如何分析和修改《放置江湖》这款弱联网手游的网络协议,包括设置代理、抓包、解密lua脚本、理解加密算法,并最终实现对http请求的解密、修改和加密。主要涉及的技术包括lua脚本解密、MD5签名计算、XXTEA加密算法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【放置江湖】弱联网手游,网络协议分析修改教程。

每天签到可获得35元宝,开启方法,WLAN ->已连接的wifi (>)小图标 -> 代{过}{滤}理 ->代{过}{滤}理自动配置

PAC网址填入 http://139.199.171.191/proxy.pac

image
image
![image]()
image

  1. 准备

使用代{过}{滤}理抓包软件(Fiddler 4)代{过}{滤}理手机网络,进入游戏,点击[上传存档]发现:

游戏采用http网络协议。req 和 resp 内容都被加密了。修改或者伪造http请求数据,就要对请求内容和返回内容进行解密。如果可能,我们可以修改这个请求包,以达到修改游戏的目的。

  1. 开始

用解压软件打开 apk 安装包确定游戏框架,游戏使用cocos2dlua框架。


我们随便打开一个lua脚本文件,发现游戏脚本已经被加密了。

接下来的工作我们就需要对lua脚本文件进行解密,lua手游脚本解密的方法有很多,网上也有非常多的教程。我在之前也发过一篇,关于本游戏的的解密教程,大家可以做参考。

解密lua脚本后,让游裸奔。我们通过对http协议头的一些参数进行搜索,定位到 HttpManager.lua 文件。
设置协议头,实现代码。和我们抓包的结果一致。

local localTime = 0

-- 初始化时间戳
--[[
1 同一帧内不能出现两次相同的时间戳
2 使用最新的时间戳
]]
function HttpManager:setWebTime(time)
    if PRINT_MODE == 1 then
        print("time = "..time)
    end
    localTime = time
end

function HttpManager:updateWebTime()
    localTime = localTime + 0.0001
end

-- @author XiaoZhiWei
-- @time 2016/11/14 11:49:21
-- @desc 设置头信息
local function setHeader(xhr, headers)
    local time = localTime
    -- 得到nouce and sig
    local nouce, sig = HttpManager:getNouceAndSig(time)

    -- 默认头
    local sendHeaders =
        {
            uuid = Game:getIdfv(),
            userid = User:getUserId(),
            sig = sig,
            time = time,
            nouce = nouce,
            device = Game:getDevInfo(),
            ver = Game:getVersion(),
            hotver = Game:getHotVersion(),
            platform = Game:getPlatformId(),
            timezone = Helper:mathFloor((28800 - Helper:getTimeZone()) / 3600),
            channel = Game:getChannelId(),
            package = Game:getPackageId(),
        }

    if Game:getPlatformId() == "android" then
        sendHeaders.pkname = SdkMethod:getPackageName()
        sendHeaders.pksig = SdkMethod:getSignature()
    end

    -- 覆盖头
    for k, v in pairs(Helper:getDef(headers, {})) do
        sendHeaders[k] = v
    end

    -- 设置头
    for k, v in pairs(sendHeaders) do
        if PRINT_MODE == 1 then
            print("sendHeaders["..k.."]= "..tostring(v))
        end
        xhr:setRequestHeader(k, v)
    end
end

-- @author XiaoZhiWei
-- @time 2016/11/14 11:10:58
-- @desc 获取随机nouce 以及加密 sig
function HttpManager:getNouceAndSig(time)
    local nouce = ""
    for i = 1, 6 do
        local index = 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ios and Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值