首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JS 逆向百例】XHR 断点调试,Steam 登录逆向

XHR 断点定位 本次案例我们使用 XHR 断点来定位加密的位置,首先了解一下什么 XHRXHR 全称 XMLHttpRequest,XHR 可以在不重新加载页面的情况下更新网页、在页面已加载后从服务器请求...既然 XHR 断点,那么这种方法就只能用于 XHR 请求,这也是这种方法的缺点,通过 XHR 断点,定位到的位置通常在加密处理完成之后,已经准备发送请求了,这样的优点我们可以跟踪栈,能比较容易地找到加密的地方...已成功断下: [03.png] 第二种方法,在 Network 面板,点击 XHR 过滤 XHR 请求,在 Initiator 项里可以看到调用的 JS,鼠标移到 JS 上,可以看到调用栈,点击第一个,...这种方法需要注意的XHR 过滤不一定准确,但是只要是 Initiator 项里可以看到 JS,就说明可以跟进去进行调试,如果通过 Form 表单或者其他方式发送的请求,Initiator 项会显示...,鼠标放上去会看到用到了 jsbn.js 里面的方法,如果一个一个函数去扣的话会比较麻烦,直接将整个 jsbn.js 文件代码复制下来即可: [10.png] [11.png] 完整代码 GitHub

1.7K21

JS中Object的keys无序的

在最开始学习 JavaScript 时,我一直被灌输 Object 中的 Key 无序的,不可靠的,而与之相对的 Map 实例会维护键值对的插入顺序。...「But,Object 的键值对真的无序的?」实际上在 ES2015 以后,Object.keys 的规则变了: 在一些现代的浏览器中,keys 输出顺序可以预测的!...Key 都为自然数: 注意这里的自然数指正整数或 0,如果其他类的 Number —— 浮点数或者负数 —— 都会走到下一组类型里,像NaN或者Infinity这种也自然归到下一个类型里,但是像科学记数法这个会稍微特殊一点...总结来说,就是当前的 key 如果自然数就按照自然数的大小进行升序排序。...Recap 在 ES6 之前 Object 的键值对无序的; 在 ES6 之后 Object 的键值对按照自然数、非自然数和 Symbol 进行排序,自然数按照大小升序进行排序,其他两种都是按照插入的时间顺序进行排序

3.5K20

JS逆向 | 分享一个小技巧和XHR断点的小案例

(仅限XHR请求) ? 有点经验的朋友肯定知道这次要用的就是 XHR BreakPoint。 关于XHR BreakPoint在很多文档中都有提及,咸鱼就不啰嗦了,还不是很了解的可以看下面的文档。...今天在交流群划水的时候有几个群友比较纠结于如何判断数据是不是由js生成或异步加载的。...分析请求 用上面的方法我们判断,数据通过js加载的,并且请求的参数和返回的参数都是经过加密的。 ? ? 到这里就需要 XHR 断点帮助我们定位加密了。 定位加密位置 我们先添加一个XHR断点。 ?...所以我们可以重新刷新一下看看数据怎么被加密的。 ? 到这个位置就可以追进去分析了,接下来就比较简单了。 ? 可以看到这里就是参数的主要加密逻辑: ?...把解密和解密的方法扣出来就是我们需要的js代码了。 ? 本文完。 ?

2.3K20

JS单线程,你了解其运行机制

js引擎执行异步代码而不用等待,因有为有 消息队列和事件循环。 消息队列:消息队列一个先进先出的队列,它里面存放着各种消息。 事件循环:事件循环指主线程重复从消息队列中取消息、执行的过程。...JS中分为两种任务类型:macrotask和microtask,在ECMAScript中,microtask称为jobs,macrotask可称为task 它们的定义?区别?...,不会执行其它 浏览器为了能够使得JS内部task与DOM任务能够有序的执行,会在一个task执行结束后,在下一个 task 执行开始前,对页面进行重新渲染 (task->渲染->task->…) microtask...另外,setImmediate则是规定:在下一次Event Loop(宏任务)时触发(所以它是属于优先级较高的宏任务),(Node.js文档中称,setImmediate指定的回调函数,总是排在setTimeout...最后 看到这里,应该对JS的运行机制有一定的理解了吧。

2K20

你觉得 Node.js 单线程这个结论对

——爱默生 前言 一提到 Node.js ,我想大家都会想到它的一个特点,单线程。但是 Node.js 在运行的时候依赖 V8 这个宿主环境,难道在宿主环境中也是单线程?...单线程,所以 Node.js 启动后线程数应该为 1,但是事实并非如此,呜呜呜。...解释一下这个原因: Node.js 中最核心的 V8 引擎,在 Node.js 启动后,会创建 V8 的实例,这个实例多线程的。 主线程:编译、执行代码。...所以大家常说的 Node.js 单线程的指的是 JavaScript 的执行单线程的(开发者编写的代码运行在单线程环境中),但 Javascript 的宿主环境,无论 Node 还是浏览器都是多线程的因为...Libuv 本身由 C++ 语言实现的,Node.js 中的非阻塞 IO 以及事件循环的底层机制都是由 libuv 实现的。

1.5K10

你觉得Node.js单线程这个结论对

前言 一提到 Node.js ,我想大家都会想到它的一个特点,单线程。但是 Node.js 在运行的时候依赖 V8 这个宿主环境,难道在宿主环境中也是单线程?请看正文解释你这个疑惑。...单线程,所以 Node.js 启动后线程数应该为 1,但是事实并非如此,呜呜呜。...解释一下这个原因: Node.js 中最核心的 V8 引擎,在 Node.js 启动后,会创建 V8 的实例,这个实例多线程的。 主线程:编译、执行代码。...所以大家常说的 Node.js 单线程的指的是 JavaScript 的执行单线程的(开发者编写的代码运行在单线程环境中),但 Javascript 的宿主环境,无论 Node 还是浏览器都是多线程的因为...Libuv 本身由 C++ 语言实现的,Node.js 中的非阻塞 IO 以及事件循环的底层机制都是由 libuv 实现的。 libuv架构图 ?

1.7K20

容器未来

好吧,我有点糊涂了,让我梳理一下,有一个东西像虚拟化,称为容器,那么我能在Heroku上用它? -l, Heroku已经支持docker, 但是我告诉你: Heroku已经死了....有了Docker这个集装箱,我还需要一个船队? -Yeah, 为了可靠性. 但是Kubernetes会替你管理. 你知道谷歌就是使用Kubernetes,它运行在etcd上面 什么etcd?...-分布式协议RAFT的实现. 什么Raft? -它类似Paxos. 上帝, 有必要给我下这么深的套路?像兔子洞一样深?我只是要启动一个应用,好吧,深呼吸,告诉我什么Paxos?...Aphyr谁? -Aphyr那个写‘Call Me Maybe.’家伙,分布式系统和BDSM大牛,你不认识? 什么? 你说BDSM? -Yeah, BDSM. 在San Francisco....就这样? -Yes! 你不感到辉煌? 我还是要回到 Heroku. 2333333~

2.7K40

你知道 V8 如何执行 JS 代码的

大家好,我小丞同学,一名准大二的前端爱好者 这篇文章将带你了解 V8 如何执行 JS 代码的 愿你忠于自己,热爱生活 引言 源代码首先通过解析器解析成 AST ,然后 AST...再通过解释器解释成最终的字节码 下面我们来聊聊解析器解析成 AST 的这个过程 首先我们先了解一下什么 AST 1....生成字节码 在有了 AST 和作用域之后,就可以生成字节码了,字节码介于AST 和机器码之间的一种代码,可以不需要将其转换成机器码后再执行,字节码可以理解为机器码的一种抽象。...V8 执行 JS 代码的具体流程 在网上看到的一张图(侵删),很形象,excalidraw 上不去,不然我一定自己做了 参考资料 《V8如何执行一段JS代码的?》...《【干货】8分钟带你了解V8引擎如何运行JS!》 非常感谢您的阅读,欢迎提出你的意见,有什么问题欢迎指出,谢谢!

1.2K20

你知道 V8 如何执行 JS 代码的

大家好,我小丞同学,一名准大二的前端爱好者 这篇文章将带你了解 V8 如何执行 JS 代码的 愿你忠于自己,热爱生活 引言 源代码首先通过解析器解析成 AST ,然后 AST 再通过解释器解释成最终的字节码...下面我们来聊聊解析器解析成 AST 的这个过程 首先我们先了解一下什么 AST 1....生成 AST AST 中文名叫抽象语法树,它是源代码语法结构的一种抽象表示 它以树状的形式表现编程语言的语法结构,书上的每个节点都表示源代码中的一种结构 下面我们来一个例子看看 AST 如何产生的 let...生成字节码 在有了 AST 和作用域之后,就可以生成字节码了,字节码介于AST 和机器码之间的一种代码,可以不需要将其转换成机器码后再执行,字节码可以理解为机器码的一种抽象。...V8 执行 JS 代码的具体流程 在网上看到的一张图(侵删),很形象,excalidraw 上不去,不然我一定自己做了

1.2K20

你们敏捷团队

最近常看到有些人说他们敏捷团队,但仔细了解一下他们的工作方式和环境,确实不敢恭维为敏捷团队。...你能很随意的表达你对某个工作的看法?比方时间估算,或者不太清楚这个工作具体要做什么,也或者你觉得这个工作怎么做比较效率高 你们有每个迭代回顾会议?会议上你能自由的说出自己的想法?...好的改进建议,下次迭代会实施? 你有做代码的每日签入和集成? 你知道这次迭代,软件交付的时间和地点? 你有机会和PO交流?在你不懂某个用户故事的范围,怎么才算完成时,PO会解释给你听?...你有参与每次的计划会议?计划会议你有表达想法和估算时间的权力? 你明确知道每个任务怎么才算完成了吗?代码写完?测试全部通过?还是文档需完备,且相关人员Review过?...发现问题时你一个人在埋头苦干不吭声还是在队友讨论,或Scrum master帮忙? ... 就敏捷性的一些重要点,我也写了一个mind map. 因为习惯了英文思维,所以是英文的,都简单英文 ?

96560

Python列表数组

前言 Python的列表我们常常使用的一种内置数据结构,其索引的使用可以让我们能很轻松的获取列表中的元素值,索引看上去就很像数组的内容,让我不禁有个疑问,列表数组?...证明一 我们来看下数组的定义,数组用一组连续的内存空间,来存储一组具有相同类型的数据。...证明二 我们知道数组连续的内存,那同样存储3个元素,3个元素int和3个元素str,那占的内存空间大小肯定不一样,我们来看看列表。...就需要扩容,申请一个大的空间,再将数据迁移过去,那实际上这样?...; 第二部分就是真正存放元素的地址,但是存放的各元素的指针,或者说是引用(所以a和b中的1这个元素的id一样的),引用的字节大小一样的,所以列表有数组的索引功能,也同时能证明一和二的问题。

1.2K00

WebAssembly 真的未来

WebAssembly 真的未来? 本文翻译自 Is WebAssembly Really the Future? Wasm 的前景比以往任何时候都更加光明。但接下来路线图会将我们引向何方?...云原生计算基金会 (CNCF) 最近的年度调查包括关于 WebAssembly (Wasm) 的大胆声明:“容器新常态,WebAssembly 未来。”...“第二个它的技术价值主张。它是否吸引了足够多的开发人员并解决了足够多的技术难题,让他们承担使用 Wasm 作为其堆栈的一部分的开销?” 有 WASI ?...“更重要的,组件模型一种新的应用程序方法,它允许以能力为导向的安全性,并使平台运营商更容易安全地运行应用程序。”...两者之间的权衡使得两者同步增长合理的。”

6910

视频主动学习

无论在线和离线视频都是一个非常好的学习提升自己的路径。 在前段时间的学习过程里,我不禁问了自己一个问题:视频学习主动学习还是被动学习? 先让我们看一下两者的区别。...主动学习 主动学习一种学习者重度参与的学习方式,一种以学习者为中心的学习方式。学习者需要以探索者的角色进入学习状态,需要自己的思考、判断,方能融会贯通。...被动学习 被动学习传统的学习方法,学生很少参与。环境通常以教授者为中心。学者需要通过被动地接受知识。 从学习效率讲,自然主动学习效率最高。所以我才会有自己的疑问。...个人体验 主动学习需要自己调动自己的注意力,放在学习上,或者源于自身的兴趣,总而言之需要投入较多精力和注意力的。...以上我总结视频学习的经验,欢迎有兴趣的一起交流。

64320

Git啥?能吃

目录 Git 的概念 Git 的特点 Git 的下载 几个常用 Git 命令的使用 Git 的概念 Git 一个开源的分布式版本控制系统, Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件...图中可看到有三种操作系统可供下载,我windows操作系统,所以选择了第2个 点击后浏览器就会自动帮你下载,稍微等一下就ok了~ ?...,因为之后对仓库里的文件进行操作时,它的信息要跟这个捆绑在一起的 git config --global user.name '用户名' git config --global user.email...这图 github 上的,gitlab 也是一样的 然后 1 通过 http 地址下载,2 通过 ssh 方式下载,点击 3 处就可以复制 这里要提醒的:如果使用ssh方式下载的话,要先配置好...ssh 密钥,不然没用的 配置方式这里不作讲解 在本地创建 git 仓库 进入到保存git仓库的文件夹,然后执行以下命令: git init '仓库名字' 运行命令后在当前目录下会生成一个文件夹,

56720
领券