Skip to content

雷霆战机小程序数据加密、解密算法。

Notifications You must be signed in to change notification settings

LauZzL/leitingzhanji

Repository files navigation

逆向教程

谢谢你的关注。我会在近期更新一个该游戏的逆向教程,会发布在我的博客中:Here,有兴趣的同学话可以关注一下。

教程更新后本仓库将进入存档状态,你可以在这之前通过issue与我交流。

^1.0.9

该版本后的加解密算法将不再开源,以防商用。

演示

test

简单说说流程

现版本算法经过了ob混淆处理,刚入门的同学不建议上手,会头疼的。

  1. 混淆解密(看情况,我是做了反混淆的,看着相对来说清晰一点)
  2. 扣算法
  3. 现版本算法是需要^node 18环境的,或者转到c代码后编译为dll调用

混淆后的代码

jsob.png

反混淆后的代码

deob

该脚本仅供测试使用,请勿用于商业用途。

该脚本仅供测试使用,请勿用于商业用途。

该脚本仅供测试使用,请勿用于商业用途。

如何使用

Node

const ltzj = require('./leitingzhanji');
// 加密
ltzj.encrypt(json_payload, cmdSequence);
// 解密
ltzj.decrypt(result_buffer);

Node 例子

import axios from 'axios';
const ltzj = require('./leitingzhanji');

const url = 'https://wxmini.jj5agame.com/p.f';
const json_payload = {
    head: {
        cmdDataSplitLength: 0,
        cmdId: 96,
        cmdLength: 0,
        cmdSequence: 179, // 该值需要与加密函数传入的cmdSequence值保持一致
        cmdVersion: 4,
        headVersion: 0,
        timestamp: Math.floor(Date.now()),
        crcVerify: 0,
        platform: 0,
        reconnect: false,
        sid,  // sid
        uid  // uid
    },
    id: 1
}
let payload = ltzj.encrypt(json_payload, 179)
const result = await axios({
    method: 'POST',
    url: url,
    data: payload,
    headers: headers,
    responseType: 'arraybuffer'
});
// 返回结果
console.log(ltzj.decrypt(result.data));

About

雷霆战机小程序数据加密、解密算法。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published