JS逆向
文章平均质量分 50
JS逆向,爬虫
逆向小李子
专注逆向分析。
展开
-
Hexin-v cookies
但是当我断下来之后第二次调试,发现断点没了,经摸索得知,每次加载的代码变量是动态变化的,于是我把代码整体抽到浏览器片段里面调试。总结: 对于混淆的代码,如果不进行AST解混淆,那么要进行调试必须得抽取代码,模拟当时环境调试。因为是在cookie里面的,所以在植入之前必定有setCookie 函数的调用。同样找到刚才这个位置,虽然混淆了,调试的时候在内存中能看到函数名hexin-v。但是多次调试之后我发现,明面上存在setcookie的都不是关键函数。这里有个关键的加密函数,它是字节码打乱了,然后还原。原创 2024-04-24 10:41:27 · 234 阅读 · 0 评论 -
NODEjs require报错
参考十一姐文章:import { createRequire } from 'module';原创 2024-04-22 16:52:12 · 333 阅读 · 0 评论 -
v8引擎编译全过程
编译V8:使用ninja工具来编译V8。下载depot_tools工具,并添加到系统环境变量之中。这个必须带上,不然报错,告诉编译器win系统的模式。生成DLL:编译完成后,就得到了V8DLL。cmd 命令行需要设置成为代理模式。原创 2023-08-21 12:10:29 · 644 阅读 · 0 评论 -
猿人学第二届第一题找修改位置(非答题)
AES加密ECB-pksc7 的 key 标准是128位即 16*8(bit) ,这里666yuanrenxue66 是15位不是标准key , 我们看看它修改的算法. 搜索 _doReset。最终发现加密之前传入的铭文和key 没有被解析成字节这一步,它是直接传进去了字符串,注释掉后,我们就得到结果了,下面是根据修改位置自己改的AES.js算法调用测试。x('push')(i()) 和标准代码处理得到的结果是不一样的。调试发现这里的值每次是固定的,直接写死就好了。对比标准的AES ,修改了这里的数组。原创 2023-07-12 01:34:48 · 336 阅读 · 0 评论 -
json 解析chrome浏览器插件json-handle
非常好用,平常工作中需要经常查看对象属性,展开的时候往往都是很长的数据,有了这个大大提升效率了。原创 2023-07-08 23:42:25 · 784 阅读 · 0 评论 -
AST-抽象语法树
AST 语法树 解释和使用原创 2023-07-08 17:10:24 · 477 阅读 · 0 评论 -
猿人学web刷题1
代码逻辑就很明显了,也就是用hex_md5(mw),mw就是传进去的时间戳,回到刚才AST解混淆之后的代码,知道得到时间戳之后还要+100000000。首页1.js 拿到 function oo0O0, 在标签里面, 无法调试,分析自己提取出来,或则hook替换。继续调试输出,结合刚才的md5 加密结尾js有一个整个。加密逻辑存在于window.a中,套娃中的套娃。经过第一个循环拿到window.b。右键遇到反调试,参考前面的文章。: url 时间戳加密。原创 2023-07-07 22:34:51 · 344 阅读 · 0 评论 -
js 本地替换过debug 反调试和右键屏蔽
翻到代码下面,发现是个定时器检测,触发空函数的定时器,还抹掉了debugger字眼,替换了bugger。F12 , 或则直接打开开发者工具。保存并覆盖,刷新网页,ok。然后发现被无限反调试。选择开启添加本地替换。原创 2023-07-07 07:33:38 · 190 阅读 · 0 评论 -
ja3指纹和akamai指纹
请求失效,带上抓包软件却可以->检测ja3浏览器指纹。方法,python 安装curl_cffi库。python 原生request。使用curl_cffi之后。可以看到结果和浏览器一样。原创 2023-07-07 05:28:56 · 266 阅读 · 0 评论 -
Chrome 插件开发覆写xhr请求
最开始的时候想用chrome.webRequest.onCompleted.addListener去实现拦截,注入后发现最多只能取到header信息,回调函数里面的对象并不携带responsetext的信息,如果要取到返回值还需要改写xhr请求。这几天搞chrome谷歌浏览器插件遇到个问题 我想拦截网页请求,并把数据传递到下一个子窗口。重新整理思路,改写xhr ,首先注入jquery 文件,记得在manifest.json 配置一下。上述代码并不能实现取到responsetext的功能。原创 2023-06-26 17:41:06 · 2208 阅读 · 0 评论 -
JS逆向吐环境
把函数转为字符串,调用的函数环境都在这里了,然后把他们丢进(window["webpackJsonp"] = window["webpackJsonp"] || []).push([]) , 就可以用了。1.加载完成后,s=fu(t), 可以看到明显的加载器,手扣太费劲,直接输出吧。直接扣的话14万行代码,7.4m 吐完环境后2.8m ,还算可以了。这里调用时机是webpack加载器加载完成后的吐出。可以看到明显的模块函数,随便测试一个。原创 2023-06-12 02:06:50 · 1122 阅读 · 0 评论