Comments (9)
这个是我这边的一个 bug 导致的,已经修复了,我晚点会发个版本,明天你可以用 0.22.1-beta
这个版本验证下
from quickjs-wrapper.
順便請教,我在測試 bytecode 發生這樣的錯誤
是不是因為qjsc的版本跟你的庫不相容
這是bytecode範例
要去掉 //bb
然後用 base64 解密剩餘字串
然後用 context.execute 發生的
from quickjs-wrapper.
順便請教,我在測試 bytecode 發生這樣的錯誤 是不是因為qjsc的版本跟你的庫不相容
這是bytecode範例 要去掉 //bb 然後用 base64 解密剩餘字串 然後用 context.execute 發生的
这个还不太清楚,你是怎么编译成字节码的,是通过我提供的 compile 方法编译的吗?或者可以给个原始的 js 文件,我这边编译下试试看
from quickjs-wrapper.
順便請教,我在測試 bytecode 發生這樣的錯誤 是不是因為qjsc的版本跟你的庫不相容
這是bytecode範例 要去掉 //bb 然後用 base64 解密剩餘字串 然後用 context.execute 發生的
lbgs_open.zip这个还不太清楚,你是怎么编译成字节码的,是通过我提供的 compile 方法编译的吗?或者可以给个原始的 js 文件,我这边编译下试试看
這個貓影視有發一個工具,不過封裝起來了
https://github.com/catvod/CatVodOpen/tree/main/open/qjsc
原始檔案
https://github.com/catvod/CatVodOpen/blob/main/open/kunyu77_open.js
bytecode 後檔案
https://github.com/catvod/CatVodOpen/blob/main/open/qjsc/bytecode/kunyu77_open.js
ps:他們 bytecode 後有再轉成 //bb+base64(bytecode) 格式
他們發布的版本在這,看看是否可以用 IDA Pro 查看他們的 so quickjs 版本
https://github.com/catvod/CatVodOpen/releases/tag/1.0.8
另外我有個疑問
如果要載入這種已編譯好的
透過 QuickJSContext.execute(bytecode) 怎麼提前設定他的 moduleName
from quickjs-wrapper.
这个是我这边的一个 bug 导致的,已经修复了,我晚点会发个版本,明天你可以用
0.22.1-beta
这个版本验证下
測試沒問題了,感謝。
距離QQ解封還有16天。
from quickjs-wrapper.
順便請教,我在測試 bytecode 發生這樣的錯誤 是不是因為qjsc的版本跟你的庫不相容
這是bytecode範例 要去掉 //bb 然後用 base64 解密剩餘字串 然後用 context.execute 發生的
lbgs_open.zip这个还不太清楚,你是怎么编译成字节码的,是通过我提供的 compile 方法编译的吗?或者可以给个原始的 js 文件,我这边编译下试试看
這個貓影視有發一個工具,不過封裝起來了 https://github.com/catvod/CatVodOpen/tree/main/open/qjsc
原始檔案 https://github.com/catvod/CatVodOpen/blob/main/open/kunyu77_open.js
bytecode 後檔案 https://github.com/catvod/CatVodOpen/blob/main/open/qjsc/bytecode/kunyu77_open.js
ps:他們 bytecode 後有再轉成 //bb+base64(bytecode) 格式
他們發布的版本在這,看看是否可以用 IDA Pro 查看他們的 so quickjs 版本 https://github.com/catvod/CatVodOpen/releases/tag/1.0.8
另外我有個疑問 如果要載入這種已編譯好的 透過 QuickJSContext.execute(bytecode) 怎麼提前設定他的 moduleName
-
字节码需要通过我提供的方法来编译的,你这个应该是用的 quickjs 自带的 qjsc 的方式编译的,我是 fork 的 quickjs 仓库,里面是有一些新的改动,所以可能会有一些兼容性问题。你可以用原始档案通过我提供的
compile
或者compileModule
方式来编译后执行下看下,使用方式可以参考单元测试里的示例代码:wrapper-android/src/androidTest/java/com/whl/quickjs/wrapper/QuickJSCompileTest.java
-
关于你的疑问,moduleName 是在执行的时候,通过类似 ModuleLoader 去加载的,并不是提前设定的。一般是先编译好,在 ModuleLoader 里通过 moduleName 去加载对应的 module 代码
from quickjs-wrapper.
如果是 compileModule
的话,可以参考这个测试方法,可以单独编译 Module 代码:
@Test
public void testCompileModuleWithMockModuleLoader() {
thrown.expect(QuickJSException.class);
thrown.expectMessage("Could not find export 'a' in module 'a.js'");
QuickJSContext context = QuickJSContext.create();
context.setModuleLoader(new QuickJSContext.DefaultModuleLoader() {
@Override
public String getModuleStringCode(String moduleName) {
return "";
}
});
// 在 ModuleLoader 中返回空字符串,可以实现仅编译当前模块字节码,而不用编译它所依赖的模块
byte[] bytes = context.compileModule("import { a } from 'a.js';");
context.execute(bytes);
context.destroy();
}
实际执行的时候,还是需要通过 setModuleLoader 去加载对应 Module 代码的,一般可以提前编译成字节码,加载支持两种方式,一种是 String 代码,一种是字节码
from quickjs-wrapper.
了解,我再試試看了,感謝大神。
from quickjs-wrapper.
順便請教,我在測試 bytecode 發生這樣的錯誤 是不是因為qjsc的版本跟你的庫不相容
這是bytecode範例 要去掉 //bb 然後用 base64 解密剩餘字串 然後用 context.execute 發生的
lbgs_open.zip这个还不太清楚,你是怎么编译成字节码的,是通过我提供的 compile 方法编译的吗?或者可以给个原始的 js 文件,我这边编译下试试看
這個貓影視有發一個工具,不過封裝起來了 https://github.com/catvod/CatVodOpen/tree/main/open/qjsc
原始檔案 https://github.com/catvod/CatVodOpen/blob/main/open/kunyu77_open.js
bytecode 後檔案 https://github.com/catvod/CatVodOpen/blob/main/open/qjsc/bytecode/kunyu77_open.js
ps:他們 bytecode 後有再轉成 //bb+base64(bytecode) 格式
他們發布的版本在這,看看是否可以用 IDA Pro 查看他們的 so quickjs 版本 https://github.com/catvod/CatVodOpen/releases/tag/1.0.8
另外我有個疑問 如果要載入這種已編譯好的 透過 QuickJSContext.execute(bytecode) 怎麼提前設定他的 moduleName
- 字节码需要通过我提供的方法来编译的,你这个应该是用的 quickjs 自带的 qjsc 的方式编译的,我是 fork 的 quickjs 仓库,里面是有一些新的改动,所以可能会有一些兼容性问题。你可以用原始档案通过我提供的
compile
或者compileModule
方式来编译后执行下看下,使用方式可以参考单元测试里的示例代码:wrapper-android/src/androidTest/java/com/whl/quickjs/wrapper/QuickJSCompileTest.java
- 关于你的疑问,moduleName 是在执行的时候,通过类似 ModuleLoader 去加载的,并不是提前设定的。一般是先编译好,在 ModuleLoader 里通过 moduleName 去加载对应的 module 代码
是的,確實不兼容,嘗試將他們的頭CATOP移除並注入第一個 byte 0x02 會出現其他錯誤
所以只好放棄了。
from quickjs-wrapper.
Related Issues (20)
- Promise 内部执行JS调用Java方法,在JS的callback中执行reject会crash HOT 5
- Console.log support output map object HOT 1
- README: context.destroy(context) -> context.destroy()
- How to addJavascriptInterface?
- 大神您好,有個問題想請教 HOT 11
- 請問更新至 0.19.1 有需要調整什麼嗎? HOT 22
- 問題詢問 HOT 8
- Todo: JVM 下不同平台的动态链接库支持
- java中什么获取 js Promise 和 async function 的结果呢? HOT 2
- https://github.com/bellard/quickjs/issues/187
- 能否支持JSRuntime创建多个JSContext上下文? HOT 4
- Console 沒有顯示 JS 錯誤訊息 HOT 5
- 問題詢問 HOT 9
- 能否支持Java byte写入js的ArrayBuffer? HOT 5
- 是否支持多线程? HOT 2
- 是否支持多线程?
- ModuleLoader 加载ByteCode后的模块那么路径就会有问题 HOT 8
- Quickjs优化版 HOT 3
- 是否支持创建多个的JSRunTime
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quickjs-wrapper.