-
-
[原创]KCTF2020Q1参赛题目:寻踪觅源 by lelfei
-
2020-4-16 09:11
5086
-
[原创]KCTF2020Q1参赛题目:寻踪觅源 by lelfei
寻踪觅源
预设用户名:
KCTF
预设SN:
40017535dad01714402635730122
设计说明:
发现一个Fabrice Bellard大牛写的开源js引擎quickjs,想学习一下源码,自己动手编译了一个WIN版本,发现可以直接把js脚本编译成EXE,并且生成的文件大小不到1M,用js写crackme是一个多么有意思的事!于是就有了这个CM,也帮大牛推广一下quickjs。膜拜作者Fabrice Bellard,知名开源项目FFMPEG和QEMU都出自他手,项目地址:https://bellard.org/quickjs/ 。
CM设计思路很简单,详见src.js。编译过程比较麻烦,需要先修改Makefile启用win编译环境支持,用MSYS编译出编译引擎,再修改qjsc.c源码启用win下把js编译成exe的功能,用qjsc.exe从js脚本生成C文件,最后用gcc编译出crackme.exe。修改过的Makefile和qjsc.c也提供了,可以对比原始文件看看改动的位置。
编译qjsc.exe命令:运行msys中的mingw32.exe并切换到工作目录,运行mingw32-make
使用qjsc.exe编译js文件:在msys环境中运行:./qjsc -fno-date -fno-eval -fno-string-normalize -fno-regexp -fno-json -fno-proxy -fno-map -fno-typedarray -fno-promise -o crackme src.js
修改C源码文件后重新编译命令:gcc -O2 -flto -D _GNU_SOURCE -I . -o crackme out9492.c ./libquickjs.lto.a -lm -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
破解建议:
想要分析出quickjs引擎的运行原理难度太大,应该比一般的VM引擎还要复杂,不过CM中并没有抹除quickjs的相关信息,敏感的人应该很快发现关键字,然后上网搜索到quickjs源码,从源码中分析出字节码的定义,反编译出js脚本,然后就简单了。目前这个项目还比较小众,估计没有现成的反编译工具,不过有源码参考,自己动手吧。
文件说明:
KCTF2020Q1_by_lelfei.rar 参赛文件
源码文件:
quickjs-2020-01-19.tar.xz 官方源码
Makefile 修改后的Makefile文件,可以在win下用gcc编译
qjsc.c 修改后的qjsc.c,可以在win下把js编译成exe
src.js js脚本源码
out9492.c 包含js字节码的参赛文件源码
kctf2020q1.py js脚本的python实现以及keygen
CM设计说明.txt 本说明文件
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
最后于 2020-4-19 16:28
被kanxue编辑
,原因: