Weiling Liu

47 papers Journal 39Unranked 8
YearRankTypeTitle / Venue / Authors
2025 J jnl
Manag. Sci.
Huaizhi Chen, Lauren Cohen, Weiling Liu
2025 J jnl
Appl. Intell.
Weiling Liu, Changqing Huang, Yonghua Jiang, Jingyin Wang, Guo Zhang, Huaibo Song, Xinghua Li
2025 J jnl
Knowl. Based Syst.
Xiao Huang, Jiwei Hu, Quan Liu, Guangpeng Zhao, Wupeng Deng, Weiling Liu
2024 J jnl
Eng. Appl. Artif. Intell.
Weiling Liu, Yonghua Jiang, Fangting Li, Guo Zhang, Huaibo Song, Chengjun Wang, Xinghua Li
2024 J jnl
CoRR
Zijian Hei, Weiling Liu, Wenjie Ou, Juyi Qiao, Junming Jiao, Guowen Song, Ting Tian, Yi Lin
2024 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Rui Li, Yue Zhao, Xiaoliang Wang, Weiling Liu, Kai Peng, Feng Wan
2024 J jnl
IEEE Geosci. Remote. Sens. Lett.
Weiling Liu, Yonghua Jiang, Jingyin Wang, Guo Zhang, Da Li, Huaibo Song, Jun Yang, Xiao Huang, Xinghua Li
2024 J jnl
Manag. Sci.
Chris Anderson, Weiling Liu
2024 J jnl
Wirel. Pers. Commun.
Yanjun Xiao, Yingjia Li, Yu Tian, Weiling Liu
2024 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Eryue Pei, Linhan Shi, Kai Peng, Weiling Liu
2024 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Shanshan Yin, Guoqing Ren, Weiling Liu
2023 conf
Agro-Geoinformatics
Shuai Zhang, Yonghua Jiang, Chengjun Wang, Weiling Liu, Da Li, Kaiwen Wu
2023 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Weiling Liu, Hao Cui, Yonghua Jiang, Guo Zhang, Xinghua Li, Haifeng Li, Yujia Chen, Jun Yang
2023 conf
Agro-Geoinformatics
Yingshan Xue, Yonghua Jiang, Chengjun Wang, Kaiwen Wu, Xiaoxiao Zhang, Weiling Liu
2023 J jnl
J. Intell. Fuzzy Syst.
Weiling Liu, Ping Liu, Furong Han, Yanjun Xiao
2023 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Churui Zhao, Hao Qi, Weiling Liu, Zhaozong Meng, Kai Peng
2022 J jnl
IEEE Access
Weiling Liu, Ping Liu, Xiaoliang Wang, Zhaozong Meng, Yunfeng Jiang, Yanjun Xiao
2022 J jnl
IEEE Access
Yanjun Xiao, Furong Han, Weiling Liu, Feng Wan, Kai Peng
2022 J jnl
IEEE Access
Yanjun Xiao, Lun Xiong, Kuan Wang, Furong Han, Wei Zhou, Weiling Liu, Nan Gao
2022 J jnl
IEEE Access
Yanjun Xiao, Linhan Shi, Ping Liu, Furong Han, Weiling Liu
2022 J jnl
IEEE Access
Yanjun Xiao, Xiaoliang Wang, Yue Zhao, Weiling Liu
2021 J jnl
IEEE Access
Yanjun Xiao, Linhan Shi, Weiling Liu, Wei Zhou, Bin Li
2021 J jnl
Remote. Sens.
Weiling Liu, Guo Zhang, Yonghua Jiang, Jingyin Wang
2021 J jnl
IEEE Access
Jiantao Qiu, Chao Yu, Weiling Liu, Tianxiang Yang, Jincheng Yu, Yu Wang, Huazhong Yang
2021 J jnl
IEEE Access
Yanjun Xiao, Yameng Zhang, Wei Zhou, Weiling Liu, Feng Wan
2021 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Furong Han, Yvheng Ding, Weiling Liu
2021 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Zhenpeng Zhang, Zhenhao Liu, Zonghua Zhang, Wei Zhou, Weiling Liu
2021 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Yameng Zhang, Nan Gao, Kai Peng, Wei Zhou, Weiling Liu
2021 J jnl
IEEE Access
Yanjun Xiao, Yameng Zhang, Jing Wang, Weiling Liu, Feng Wan
2021 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Anqi Yu, Hao Qi, Yunfeng Jiang, Wei Zhou, Nan Gao, Weiling Liu
2021 J jnl
J. Intell. Fuzzy Syst.
Yanjun Xiao, Shitong Liang, Xiaolei Wang, Yunfeng Jiang, Weiling Liu, Lingyu Sun
2020 J jnl
Electron. Libr.
Weiling Liu
2018 J jnl
Int. J. Distributed Sens. Networks
Shi Yan, Weiling Liu, Gangbing Song, Putian Zhao, Shuai Zhang
2018 J jnl
IEEE Trans. Instrum. Meas.
Weiling Liu, Chao Tan, Xiaoxiao Dong, Feng Dong, Yuichi Murai
2018 J jnl
Trans. Inst. Meas. Control
Weiling Liu, Chao Tan, Feng Dong
2018 J jnl
Complex.
Jun Yang, Weiling Liu, Yonghua Li, Xueming Li, Quansheng Ge
2017 J jnl
Int. J. Digit. Earth
Jiaqiang Du, Ping He, Shifeng Fang, Weiling Liu, Xinjie Yuan, Junqi Yin
2017 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Yongbo Li, Xiandong Yin, Weiling Liu, Yafeng Liu, Weihan Gou, Kuan Cheng
2015 conf
I2MTC
Weiling Liu, Chao Tan, Feng Dong
2015 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Jiaqiang Du, Jianmin Shu, Junqi Yin, Xinjie Yuan, Jiaerheng Ahati, Shanshan Xiong, Ping He, Weiling Liu
2013 J jnl
OCLC Syst. Serv.
Weiling Liu, Huibin (Heather) Cai
2010 conf
ROBIO
Weiling Liu, Jingling Bao, Kehua Zou, Changjian Li, Yan Xu, Liyuan Wang
2008 conf
ICIC (1)
Weidong Yang, Weiling Liu, Libing Liu, Anping Xu
2008 conf
ICIC (1)
Zeqing Yang, Libing Liu, Weiling Liu, Weidong Yang
2008 conf
CSSE (5)
Zhihong Tan, Weiling Liu, Libing Liu, Zeqing Yang
2008 conf
ICIC (1)
Weiling Liu, Weidong Yang, Libing Liu, Qilian Yu
2002 J jnl
OCLC Syst. Serv.
Weiling Liu, Fannie M. Cox
redb/extractors/js_extractors/scripts/js-xray-runner.js
← Index redb/extractors/js_extractors/scripts/js-xray-runner.js javascript
#!/usr/bin/env node
// Bridge between the Python JS pipeline and @nodesecure/js-x-ray.
//
// Usage: node js-xray-runner.js <path-to-js-file>
//   stdout  one JSON object: {"obfuscator": <name|null>, "warnings": [...]}
//   stderr  human-readable error on failure
//   exit 0  analysis ran (the file may still be benign — see "obfuscator")
//   exit 1  the file could not be read or analysed
//
// Each warning is emitted as {kind, value} so the Python side can tag
// supporting signals (encoded-literal, short-identifiers, suspicious-literal,
// unsafe-stmt) without having to mirror js-x-ray's whole schema.
//
// js-x-ray ≥7 ships as an ES module, which CommonJS `require()` cannot load
// from a `.js` script — the dynamic `import()` below is what makes the
// bridge work without renaming the file to `.mjs` or adding `"type":
// "module"` to package.json (which would break tools that still
// `require()` from this directory).

const fs = require("fs");
const path = require("path");

function fail(msg) {
  process.stderr.write(msg + "\n");
  process.exit(1);
}

async function main() {
  const target = process.argv[2];
  if (!target) fail("usage: js-xray-runner.js <file>");

  let source;
  try {
    source = fs.readFileSync(target, "utf8");
  } catch (e) {
    fail(`read failed: ${e.message}`);
  }

  // The legacy `runASTAnalysis` function is deprecated (removed in v8); the
  // current API is the `AstAnalyser` class. Both produce a result with the
  // same `warnings` shape, so the rest of the bridge is unchanged.
  let AstAnalyser;
  try {
    ({ AstAnalyser } = await import("@nodesecure/js-x-ray"));
  } catch (e) {
    fail(`@nodesecure/js-x-ray not installed (run \`npm install\` in ${path.dirname(__filename)}): ${e.message}`);
  }

  // js-x-ray defaults to module-mode parsing, which rejects scripts that
  // (legally) use reserved words as identifiers, top-level `return`, etc.
  // A lot of real-world JS malware is script-style (WScript/HTA bodies,
  // pasted snippets) — retrying in script mode catches those without
  // pulling in a more lenient parser. Both attempts share the same
  // analyser; only the parse mode flips. If both fail, the original error
  // (module-mode) is reported because that's the more informative one for
  // genuinely broken sources.
  let result;
  const analyser = new AstAnalyser();
  let firstErr;
  try {
    result = await analyser.analyse(source, { module: true });
  } catch (e) {
    firstErr = e;
    try {
      result = await analyser.analyse(source, { module: false });
    } catch (e2) {
      fail(`js-x-ray analysis failed: ${firstErr.message}`);
    }
  }

  const warnings = (result.warnings || []).map((w) => ({
    kind: w.kind,
    value: w.value !== undefined ? w.value : null,
  }));

  // js-x-ray flags the obfuscator family in a warning whose kind is
  // "obfuscated-code" and whose value names the family (jsfuck, obfuscator.io,
  // freejsobfuscator, morse, jjencode, ...). Absent => not detected.
  const obfWarning = warnings.find((w) => w.kind === "obfuscated-code");
  const obfuscator = obfWarning ? obfWarning.value : null;

  // js-x-ray runs its own AST internally with a modern parser, so its
  // identifier-length average is the only path the Python pipeline has to
  // that signal on ES2015+ sources — pyjsparser is ES5.1-only and silently
  // drops to 0 the moment it hits destructuring, classes, optional chaining,
  // etc. Surfacing this lets the heuristic's `avg_identifier_length<2`
  // strong signal fire on real obfuscator.io output. `null` when the value
  // is missing or non-numeric (defensive — older js-x-ray builds may differ).
  const idsLengthAvg =
    typeof result.idsLengthAvg === "number" && !Number.isNaN(result.idsLengthAvg)
      ? result.idsLengthAvg
      : null;

  process.stdout.write(JSON.stringify({ obfuscator, warnings, idsLengthAvg }));
}

main().catch((e) => fail(e.message || String(e)));