From cd5e09b09704acfae43bd355c5ca0c9a55f51b2b Mon Sep 17 00:00:00 2001 From: pancake Date: Thu, 20 Jun 2024 15:21:44 +0200 Subject: [PATCH 1/3] WIP: Update to the latest r2papi typescript api --- shlr/qjs/Makefile | 64 +++++++++++++++++++++++++++++++------------ shlr/qjs/package.json | 2 +- 2 files changed, 48 insertions(+), 18 deletions(-) diff --git a/shlr/qjs/Makefile b/shlr/qjs/Makefile index db7ddbf7385eb..0cd683ec6e2b1 100644 --- a/shlr/qjs/Makefile +++ b/shlr/qjs/Makefile @@ -1,5 +1,8 @@ include deps.mk +USE_MINIFY=0 +USE_UGLIFY=0 + ifeq ($(QJS_BRANCH),frida) QJS_NAME=quickjs-frida QJS_GITURL=https://github.com/frida/quickjs @@ -48,20 +51,23 @@ src: NM=node_modules +R2PAPI_FILES= +R2PAPI_FILES+=r2papi.js +R2PAPI_FILES+=r2pipe.js +#R2PAPI_FILES+=base64.js +#R2PAPI_FILES+=ai.js +#R2PAPI_FILES+=r2frida.js +R2PAPI_FILES+=shell.js +R2PAPI_FILES+=esil.js +R2PAPI_FILES_JS=$(addprefix $(NM)/r2papi/,$(R2PAPI_FILES)) + js_r2papi.c: # npm i js_r2papi printf "Using r2papi version: " -jq .version node_modules/r2papi/package.json mkdir -p $(NM) - cat \ - $(NM)/r2papi/r2papi.js \ - $(NM)/r2papi/r2pipe.js \ - $(NM)/r2papi/base64.js \ - $(NM)/r2papi/ai.js \ - $(NM)/r2papi/shell.js \ - $(NM)/r2papi/esil.js \ - > $(NM)/r2papi/entrypoint.js + cat $(R2PAPI_FILES_JS) > $(NM)/r2papi/entrypoint.js sed \ -e 's,exports,G,g' \ -e 's,require(,G;//,g' \ @@ -70,10 +76,18 @@ js_r2papi.c: | grep -v 'r2pipe\.js' \ > js_r2papi.qjs echo 'const r2pipe_js_1 = G;' >> js_r2papi.qjs +ifeq ($(USE_MINIFY),1) npx minify --help > /dev/null npm i minify npx minify --js < js_r2papi.qjs > js_r2papi.mini.qjs +else + cp -f js_r2papi.qjs js_r2papi.mini.qjs +endif +ifeq ($(USE_UGLIFY),1) npx uglify-js --help > /dev/null || npm i uglify-js npx uglify-js --no-annotations --toplevel --validate -c < js_r2papi.mini.qjs > js_r2papi.tiny.qjs +else + cp -f js_r2papi.mini.qjs js_r2papi.tiny.qjs +endif @ls -l js_r2papi.qjs @ls -l js_r2papi.mini.qjs @ls -l js_r2papi.tiny.qjs @@ -83,31 +97,47 @@ js_r2papi.c: rm -f js_r2papi.mini.qjs js_r2papi.tiny.qjs js_require.c: +ifeq ($(USE_MINIFY),1) npx minify --help > /dev/null npm i minify - npx minify --js < js_require.qjs > mini.qjs - echo "`du -hs js_require.qjs|awk '{print $$1}'` => `du -hs mini.qjs|awk '{print $$1}'`" + npx minify --js < js_require.qjs > js_require.mini.qjs +else + cp -f js_require.qjs js_require.mini.qjs +endif + echo "`du -hs js_require.qjs|awk '{print $$1}'` => `du -hs js_require.mini.qjs|awk '{print $$1}'`" +ifeq ($(USE_UGLIFY),1) # 20K uglify npx uglify-js --help > /dev/null || npm i uglify-js - npx uglify-js --no-annotations --toplevel --validate -c < mini.qjs > tiny.qjs - @ls -l mini.qjs - @ls -l tiny.qjs - echo "`du -hs mini.qjs|awk '{print $$1}'` => `du -hs tiny.qjs|awk '{print $$1}'`" + npx uglify-js --no-annotations --toplevel --validate -c < js_require.mini.qjs > js_require.tiny.qjs +else + cp -f js_require.mini.qjs js_require.tiny.qjs +endif + @ls -l js_require.mini.qjs + @ls -l js_require.tiny.qjs + echo "`du -hs js_require.mini.qjs|awk '{print $$1}'` => `du -hs js_require.tiny.qjs|awk '{print $$1}'`" npx minify --help > /dev/null npm i minify - npx minify --js < tiny.qjs > mini.qjs - echo "`du -hs tiny.qjs|awk '{print $$1}'` => `du -hs mini.qjs|awk '{print $$1}'`" + npx minify --js < js_require.tiny.qjs > js_require.mini.qjs + echo "`du -hs js_require.tiny.qjs|awk '{print $$1}'` => `du -hs mini.qjs|awk '{print $$1}'`" echo 'static const char *const js_require_qjs = "" \\' > js_require.c - r2 -fqcpcc mini.qjs | grep -v ^const >> js_require.c + r2 -fqcpcc js_require.mini.qjs | grep -v ^const >> js_require.c js_repl.c: # goto this s # 19K https://www.toptal.com/developers/javascript-minifier # ??K +ifeq ($(USE_MINIFY),1) npx minify --help > /dev/null npm i minify npx minify --js < js_repl.qjs > mini.qjs +else + cp -f js_repl.qjs mini.qjs +endif echo "`du -hs js_repl.qjs|awk '{print $$1}'` => `du -hs mini.qjs|awk '{print $$1}'`" +ifeq ($(USE_UGLIFY),1) # 20K uglify npx uglify-js --help > /dev/null || npm i uglify-js npx uglify-js --no-annotations --toplevel --validate -c < mini.qjs > tiny.qjs +else + cp -f mini.qjs tiny.qjs +endif @ls -l mini.qjs @ls -l tiny.qjs echo "`du -hs mini.qjs|awk '{print $$1}'` => `du -hs tiny.qjs|awk '{print $$1}'`" diff --git a/shlr/qjs/package.json b/shlr/qjs/package.json index 5614bae498118..96e3440f733a5 100644 --- a/shlr/qjs/package.json +++ b/shlr/qjs/package.json @@ -1,5 +1,5 @@ { "dependencies": { - "r2papi": "0.3.3" + "r2papi": "0.4.7" } } From 3765064468e0de6f7b830341ef2b9de14cf7e644 Mon Sep 17 00:00:00 2001 From: pancake Date: Thu, 20 Jun 2024 21:44:32 +0200 Subject: [PATCH 2/3] jiiji --- shlr/qjs/Makefile | 4 ++-- shlr/qjs/package.json | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/shlr/qjs/Makefile b/shlr/qjs/Makefile index 0cd683ec6e2b1..fd99a25cbd324 100644 --- a/shlr/qjs/Makefile +++ b/shlr/qjs/Makefile @@ -1,7 +1,7 @@ include deps.mk -USE_MINIFY=0 -USE_UGLIFY=0 +USE_MINIFY=1 +USE_UGLIFY=1 ifeq ($(QJS_BRANCH),frida) QJS_NAME=quickjs-frida diff --git a/shlr/qjs/package.json b/shlr/qjs/package.json index 96e3440f733a5..f711114a4e0f9 100644 --- a/shlr/qjs/package.json +++ b/shlr/qjs/package.json @@ -1,5 +1,9 @@ { "dependencies": { "r2papi": "0.4.7" + }, + "devDependencies": { + "minify": "11.2.1", + "uglify": "0.1.5" } } From 547d60979663387720eca06f15988c48fa2bef37 Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 21 Jun 2024 12:17:15 +0200 Subject: [PATCH 3/3] up --- shlr/qjs/Makefile | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/shlr/qjs/Makefile b/shlr/qjs/Makefile index fd99a25cbd324..e01bceb37d41c 100644 --- a/shlr/qjs/Makefile +++ b/shlr/qjs/Makefile @@ -1,7 +1,7 @@ include deps.mk USE_MINIFY=1 -USE_UGLIFY=1 +USE_UGLIFY=0 ifeq ($(QJS_BRANCH),frida) QJS_NAME=quickjs-frida @@ -30,13 +30,15 @@ QJS_VERSION=$(shell cat src/VERSION.txt) JS_CFILES:=js_repl.c js_r2papi.c js_require.c -all: src $(JS_CFILES) +all: $(JS_CFILES) + +# $(JS_CFILES): node_modules node_modules: mkdir -p node_modules npm i -src: +sync-qjs qjs-sync sync: $(MAKE) $(QJS_NAME) rm -rf src mv $(QJS_NAME) src @@ -52,29 +54,31 @@ src: NM=node_modules R2PAPI_FILES= +R2PAPI_FILES+=index.js R2PAPI_FILES+=r2papi.js R2PAPI_FILES+=r2pipe.js -#R2PAPI_FILES+=base64.js -#R2PAPI_FILES+=ai.js -#R2PAPI_FILES+=r2frida.js +R2PAPI_FILES+=base64.js +R2PAPI_FILES+=ai.js +R2PAPI_FILES+=r2frida.js R2PAPI_FILES+=shell.js R2PAPI_FILES+=esil.js R2PAPI_FILES_JS=$(addprefix $(NM)/r2papi/,$(R2PAPI_FILES)) -js_r2papi.c: +js_r2papi.c: node_modules # npm i js_r2papi printf "Using r2papi version: " -jq .version node_modules/r2papi/package.json mkdir -p $(NM) cat $(R2PAPI_FILES_JS) > $(NM)/r2papi/entrypoint.js + echo 'var G={};' > js_r2papi.qjs sed \ -e 's,exports,G,g' \ -e 's,require(,G;//,g' \ < $(NM)/r2papi/entrypoint.js \ | grep -v 'use strict' \ | grep -v 'r2pipe\.js' \ - > js_r2papi.qjs + >> js_r2papi.qjs echo 'const r2pipe_js_1 = G;' >> js_r2papi.qjs ifeq ($(USE_MINIFY),1) npx minify --help > /dev/null npm i minify @@ -94,7 +98,7 @@ endif echo 'static const char *const js_r2papi_qjs = "" \\' > js_r2papi.c r2 -fqcpcc js_r2papi.mini.qjs | grep -v ^const >> js_r2papi.c # r2 -fqcpcc js_r2papi.tiny.qjs | grep -v ^const >> js_r2papi.c - rm -f js_r2papi.mini.qjs js_r2papi.tiny.qjs +# rm -f js_r2papi.mini.qjs js_r2papi.tiny.qjs js_require.c: ifeq ($(USE_MINIFY),1)