跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 一个新的玩具,在 js 里套娃 c 编译器
未分類
14 10 月 2020

一个新的玩具,在 js 里套娃 c 编译器

一个新的玩具,在 js 里套娃 c 编译器

資深大佬 : codehz 0

仓库地址 https://github.com/codehz/tjs

这是某天折腾 tcc 时突发奇想的的 idea,也就是用 js 做脚本,然后任何涉及系统的功能直接用 tcc 运行时编译出来调用(

查了查 node 方面有 node-ffi,但是显而易见都用了 nodejs 了,系统交互基本很多都能在纯 js 层做了,于是再搞这个

目前测试可以直接使用 windows api MessageBox 弹个框(暂时只支持 win,32 位+64 位)

特(que)色(xian):

  1. 没有事件循环(咕)
  2. 没有常见 js 函数,除了内置的(咕)
  3. 强制启用 ESM (和严格模式)

示例代码:

import { Compiler } from "builtin:c"; const compiler = new Compiler("memory"); compiler.link("user32"); compiler.compile(` #include <windows.h> void msgbox(char const *text) {   MessageBoxA(NULL, text, "from js", 0); } `); const obj = compiler.relocate({   msgbox: { arguments: ["string"] } }); obj.msgbox(`from ${import.meta.url}`); 

大佬有話說 (7)

  • 資深大佬 : azh7138m

  • 資深大佬 : charten

    刚开始没看清以为 windows api 指的是浏览器内的那一套,后面才发现是微软的 windows.h….流批啊,一起黑子下发恶意代码是通常是 vb,现在可以直接下发 c 代码搞破坏了 hhhhhhh

  • 主 資深大佬 : codehz

    @charten #2 类似想法的恶意软件多了去了,不过不会这么 naive 直接下发 c 代码,通常是直接下发 shellcode,最多加上点重定位的操作,就可以跑了。

  • 資深大佬 : Themyth

    我想问。。。
    是不是把这个代码改成.js 放到 html 里面 然后访问就可以弹窗?

  • 主 資深大佬 : codehz

    @Themyth #4 你在 peach,这是独立的运行时

  • 資深大佬 : sologgfun

    这是个啥阿?在 node 里面写 c 语言-编译-调用系统 api ?

  • 主 資深大佬 : codehz

    @sologgfun #6 不是 node,用 quickjs 做的一个很小的 js 运行时,压缩后<4MB,node 请直接用 node-ffi (

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具