Js逆向 拼夕夕anti_content

前言

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者删除。

网址:aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbS9ob21lL21lZGljYWwv

目标:参数anti_content

1.抓包分析

接口:query_tf_goods_info

在这里插入图片描述

2.逆向分析

直接搜索anti_content进行定位,打上断点,然后单步调试

在这里插入图片描述

发现 t.sent就是我们需要加密参数,已经生成了,所以大概率是前面Object(x.a)()生成的

在这里插入图片描述

Object(x.a)()跟进去发现调了m方法,m方法调的是v方法,v方法里面还是一个控制流,单步调试会发现anti_content r.messagePackSync()里面生成了

在这里插入图片描述

然后看一下r是哪里来的,找一下同级作用域下定义r的位置,

在这里插入图片描述

发现是r = new({serverTime:e}),其中e是十位的时间戳,接下来找到i的定义位置,

在这里插入图片描述

这个明显是webpack打包的模块,可以打上断点然后进入n里面看看

在这里插入图片描述

那么大致的调用流程已经清楚了,

1.  i = n("febz")
2.  r = new({serverTime:e})
3.	anti_content_Promise = r.messagePackSync()  

r.messagePackSync()返回的是一个Promise对象,里面包含了我们需要的anti_content,

后面发现直接调用r.messagePack生成直接就是anti_content,就不用异步改同步了,可以直接拿到结果。

接下来就是扣代码环节

3.扣代码

Js逆向案例 Scrape Spa2(Webpack自吐)

Js逆向之Webpack原理及如何扣代码

对Webpack不熟悉的可以参考这两篇文章

把加载器拿下来,找个地方先放着
在这里插入图片描述
接下来我们进行模块自吐

注意传入的r,要和我们需要调用的模块保持一致 。

在加载器第一行打上条件断点

aaa[r] = e[r],false

在这里插入图片描述
然后在 控制台输入aaa = {} n = {},目的是定义一个空对象存放吐出的模块 和清空已缓存的模块

然后释放断点
在这里插入图片描述

此时aaa中获取到了所有我们需要模块,然后在控制台输入下面的代码,将对象合并成字符串,

xxx = Object.entries(aaa).map(([key, value]) => `"${key}":${value}`).join(",\r\n")
copy(xxx)

然后进行Js格式化,然后找个地方先放着

JS在线格式化

在这里插入图片描述

然后回到我们之前扣下来的加载器,定义一个全局变量,然后导出加载器,随后传入模块

get_anticontent = function (){
	i = xu.loader("fbeZ")
	xx = i({serverTime:Math.floor(Date.now()/1000)})
	anticontent = xx.messagePack()
	console.log("长度:",xx.messagePack().length)
	return anticontent

}

然后在浏览器环境下调试一下

在这里插入图片描述

Ok,没问题,接下就是在Node环境下运行,开始补环境

4.补环境

注意一下常见的Node环境检测点即可,然后挂上代理开补。

借用一下大佬封装好的代理即可

function setProxyArr(proxyObjArr) {
    for (let i = 0; i < proxyObjArr.length; i++) {
        const objName = proxyObjArr[i]; 

        const handler = {
            get(target, property, receiver) {
                console.log("方法:", "get", "对象:", objName, "属性:", property, "属性类型:", typeof property, "属性值:", target[property], "属性值类型:", typeof target[property]);

                return target[property];
            }
        };
        // 检查并初始化对象
        let targetObject = global[objName] || {};  // 在 Node.js 环境中使用 global
        global[objName] = new Proxy(targetObject, handler);  // 在 Node.js 中使用 global
    }
}
setProxyArr(['window', 'document','location','screen','history','navigator'])

5.成功截图

在这里插入图片描述

03-26
### 逆向工程与反编译概述 逆向工程是一种通过对软件的目标代码进行分析,将其转化为更高级别的表示形式的过程。这一过程通常用于研究现有系统的内部结构、功能以及实现细节。在Java和Android领域,反编译工具被广泛应用于逆向工程中。 #### Java逆向工程中的Jad反编译工具 Jad是一款经典的Java反编译工具,能够将`.class`字节码文件转换为可读的`.java`源代码[^1]。虽然它可能无法完全恢复原始源代码,但它提供了足够的信息来帮助开发者理解已编译的Java程序逻辑。Jad支持多种反编译模式,并允许用户自定义规则以适应不同的需求。此外,其命令行接口和图形界面使得复杂代码的分析变得更加便捷。 #### Android逆向工程中的JEB反编译工具 针对Android应用的逆向工程,JEB是由PNF Software开发的一款专业级工具[^2]。相较于其他同类产品,JEB不仅具备强大的APK文件反编译能力,还能对Dalvik字节码执行高效而精准的操作。它的核心优势在于以下几个方面: - **广泛的平台兼容性**:除Android外,还支持ARM、MIPS等多种架构的二进制文件反汇编。 - **混淆代码解析**:内置模块能有效应对高度混淆的代码,提供分层重构机制以便于深入分析。 - **API集成支持**:允许通过编写Python或Java脚本来扩展功能并完成特定任务。 #### APK反编译流程及其意义 当涉及到具体的APK包时,可以通过一系列步骤提取其中的信息来进行全面的安全评估或者学习目的的研究工作[^3]。这些步骤一般包括但不限于获取资产目录(`assets`)内的资源数据;解密XML配置文档如`AndroidManifest.xml`定位应用程序启动点;最后利用上述提到的各种专用软件重现整个项目框架供进一步探讨。 ```bash # 使用apktool反编译APK示例 apktool d your_app.apk -o output_directory/ ``` 以上命令展示了如何借助开源工具ApkTool轻松拆卸目标安卓档案至易于探索的状态下。 ### 结论 无论是传统的桌面端还是现代移动端环境里头,恰当运用合适的反编译解决方案都是达成逆向工程项目成功不可或缺的一环。每种工具有各自专精之处,在实际应用场景当中应当依据具体需求做出明智的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值