type
status
date
slug
summary
tags
category
icon
password
复现本题主要是为了学习js字节码,若有不足之处,请各位师傅多多指出
V8 是 Google 开发的开源 JavaScript 引擎。 Chrome、Node.js和许多其他应用程序都在使用 V8。
如果只发布V8引擎编译后的字节码,就可以保护源码。
可以从下面这篇文章中学习变量声明、条件分支、循环、函数声明、类等最基本语法对应的字节码。
https://tw.coderbridge.com/series/817c07dc8e1c46f2b0a604b3b4e195c1
下面这个链接可以当v8的javascript字节码阅读官方文档来用。
https://github.com/v8/v8/blob/d84e9496d23cf1dc776ae32199d81accfabaafb5/src/interpreter/interpreter-generator.cc
题目介绍
根据题目给出的bytecode.txt,分析出来它的加密函数已经字符串的比较
选手获得的文件
- nodejs 二进制程序
- flagchecker.jsc,js源码通过Bytenode编译后得到的字节码形式,能够正常运行
- flagchecker_bytecode.txt,nodejs运行flagchecker.js时添加
bytecode
获得的js字节码汇编文本文件。
- runner.js、run.sh,用于引导nodejs运行flagchecker.jsc
解题思路
我们可以根据flagchecker.jsc 的运行结果得出返回值
Right! or Wrong!
然后我们在海量的函数里面就可以定位到一个函数
Main函数-剖析字节码
main函数
可见这个main函数的关键就是外部调用的函数
我们在海量的函数找到其它两个可以函数 aaa,ccc函数
aaa函数-剖析字节码
aaa函数
由于上面的简单铺垫,接下来我们将快速且简洁地分析
经过剖析我们可以得知,aaa这个函数更像一个初始化的函数,那么看来这个外部函数才是加密的关键
ccc函数-剖析字节码
ccc函数
加密函数-实现
解密
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- Author:5m10v3
- URL:https://5m10v3.top/article/4068917f-b98c-4904-bb00-07b035aa6da9
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!