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安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
2024CISCN(初赛)解题思路及复现2024长城杯-ez_driver复现与思考
Loading...
5m10v3
5m10v3
目前主攻方向为Re
Announcement
🎉5m10v3のBlog已经上线啦🎉
-- 感谢各位师傅的支持 ---
👏欢迎师傅们前来交流👏