首页
社区
课程
招聘
[原创]KCTF2020Q1参赛题目:寻踪觅源 by lelfei
发表于: 2020-4-16 09:11 5865

[原创]KCTF2020Q1参赛题目:寻踪觅源 by lelfei

2020-4-16 09:11
5865

寻踪觅源

预设用户名:
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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-4-19 16:28 被kanxue编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (8)
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
2
修复由于进制转换时没有过滤导致存在多解
最后于 2020-4-17 16:24 被lelfei编辑 ,原因:
上传的附件:
2020-4-17 16:12
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
3
替换Makefile文件后,在quickjs当前目录执行 mingw32-make,出现错误
process_begin: CreateProcess(NULL, uname -s, ...) failed.
process_begin: CreateProcess(NULL, cat VERSION, ...) failed.
mkdir -p .obj .obj/examples .obj/tests
命令语法不正确。
Makefile:177: recipe for target '.obj' failed
mingw32-make: *** [.obj] Error 1
这样如何解决?
2020-4-20 17:44
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
4
process_begin: CreateProcess(NULL, uname -s, ...) failed.
对应的是应该是 
ifeq ($(shell uname -s),Darwin)
CONFIG_DARWIN=y
endif
难道无法执行 $(shell uname -s)
2020-4-20 17:48
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
5
process_begin: CreateProcess(NULL, cat VERSION, ...) failed.
对应的是 
endif
DEFINES:=-D_GNU_SOURCE -DCONFIG_VERSION=\"$(shell cat VERSION)\"
ifdef CONFIG_BIGNUM
难道无法执行 shell语句
2020-4-20 17:49
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
6
mkdir -p .obj .obj/examples .obj/tests
对应的是:
$(OBJDIR):
       mkdir -p $(OBJDIR) $(OBJDIR)/examples $(OBJDIR)/tests
这条语句也无法执行?
2020-4-20 17:50
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
7
htg mkdir -p .obj .obj/examples .obj/tests 对应的是: $(OBJDIR): mkdir -p $(OBJDIR) $(OBJDIR)/examples $( ...
要在msys环境下,在cmd里直接运行mingw32-makde会报错的
2020-4-20 18:35
0
雪    币: 1392
活跃值: (5177)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
8
请问一个问题。就是 qjsc 把js处理成字节码以后的bin。可以完整还原成js吗?
2020-11-16 16:14
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
9
IamHuskar 请问一个问题。就是 qjsc 把js处理成字节码以后的bin。可以完整还原成js吗?
基本能还原吧,变量名都没改
2020-11-17 12:16
0
游客
登录 | 注册 方可回帖
返回
//