Han Zhong

36 papers A* 3C 1Journal 26Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Ruiqing Han, Tianxian Zhang, Baozhu Hu, Han Zhong, Inkyu Lee, Caipin Li
2026 J jnl
CoRR
Shunxing Yan, Han Zhong
2026 J jnl
CoRR
Se Yan, Han Zhong, Zemin Zhong, Wenyu Zhou
2025 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Ruiqing Han, Tianxian Zhang, Han Zhong, Yuanhang Wang
2025 J jnl
CoRR
Ruiqing Han, Tianxian Zhang, Han Zhong, Yuanhang Wang
2025 J jnl
CoRR
Xun Deng, Han Zhong, Rui Ai, Fuli Feng, Zheng Wang, Xiangnan He
2025 J jnl
Comput. Mater. Continua
Youwei Huang, Han Zhong, Cheng Cheng, Yijie Peng
2025 J jnl
J. Imaging
Han Zhong, Jiatian Zhang, Lingxiao Zhao
2025 J jnl
Signal Image Video Process.
Lingguang Kong, Han Zhong
2024 A* conf
ICML
Xun Deng, Junlong Liu, Han Zhong, Fuli Feng, Chen Shen, Xiangnan He, Jieping Ye, Zheng Wang
2024 J jnl
CoRR
Xun Deng, Junlong Liu, Han Zhong, Fuli Feng, Chen Shen, Xiangnan He, Jieping Ye, Zheng Wang
2024 A* conf
ICML
Xutong Liu, Siwei Wang, Jinhang Zuo, Han Zhong, Xuchuang Wang, Zhiyong Wang, Shuai Li, Mohammad Hajiesmaili, John C. S. Lui, Wei Chen
2024 J jnl
CoRR
Xutong Liu, Siwei Wang, Jinhang Zuo, Han Zhong, Xuchuang Wang, Zhiyong Wang, Shuai Li, Mohammad Hajiesmaili, John C. S. Lui, Wei Chen
2024 J jnl
Comput. Graph.
Xiaozhong Luo, Han Zhong, Junjie Lu, Chen Meng, Xu Han
2024 A* conf
ICLR
Jianliang He, Han Zhong, Zhuoran Yang
2024 J jnl
CoRR
Jianliang He, Han Zhong, Zhuoran Yang
2023 J jnl
CoRR
Guhao Feng, Han Zhong
2022 J jnl
Concurr. Comput. Pract. Exp.
Han Zhong, Zhenhu Ning, Guijun Li, Zheng Li
2022 conf
ICCSIE
Han Zhong, Jin Wu
2022 J jnl
Concurr. Comput. Pract. Exp.
Han Zhong, Zheng Li, Peng Chen, Hao Lu, Yijia Xu
2022 J jnl
Sensors
Zhenci Sun, Xiaoguang Zhao, Lingyun Zhang, Ziqi Mei, Han Zhong, Rui You, Wenshuai Lu, Zheng You, Jiahao Zhao
2021 J jnl
Int. J. Wirel. Mob. Comput.
Han Zhong, Shiqiang Zhang, Jianli Liu
2021 J jnl
IEEE Access
Han Zhong, Hong Liu, Geqi Qi
2021 J jnl
Secur. Commun. Networks
Han Zhong, Ruize Sun, Fengcheng Mei, Yong Chen, Fan Jin, Lei Ning
2021 J jnl
Wirel. Commun. Mob. Comput.
Runzhou Zhang, Han Zhong, Tongyi Zheng, Lei Ning
2020 J jnl
BMC Medical Imaging
Kaixin Chen, Xiao Lin, Xing Hu, Jiayao Wang, Han Zhong, Linhua Jiang
2020 J jnl
IEEE Trans. Cloud Comput.
Jianhui Chen, Ningning Wang, Yue Deng, Han Zhong, Jian Han, Youjun Li, Zhijiang Wan, Taihei Kotake, Dongsheng Wang, Ning Zhong
2019 J jnl
IEEE Access
Han Zhong, Geqi Qi, Wei Guan, Xiaochen Hua
2019 C conf
HIS
Han Zhong, Zhisheng Huang
2019 J jnl
Health Inf. Sci. Syst.
Han Zhong, Zhisheng Huang
2017 J jnl
KSII Trans. Internet Inf. Syst.
Haiyang Yu, Yongquan Cai, Shanshan Kong, Zhenhu Ning, Fei Xue, Han Zhong
2016 ch.
Semantic Web Technologies for Intelligent Engineering Applications
Jianhui Chen, Jian Han, Yue Deng, Han Zhong, Ningning Wang, Youjun Li, Zhijiang Wan, Taihei Kotake, Dongsheng Wang, Xiaohui Tao, Ning Zhong
2015 conf
BIH
Ningning Wang, Ning Zhong, Jian Han, Jianhui Chen, Han Zhong, Taihei Kotake, Dongsheng Wang, Jianzhuo Yan
2014 conf
Brain Informatics and Health
Jian Han, Jianhui Chen, Han Zhong, Ning Zhong
2014 conf
Brain Informatics and Health
Han Zhong, Jianhui Chen, Jian Han, Ning Zhong
2013 conf
Brain and Health Informatics
Han Zhong, Jianhui Chen, Taihei Kotake, Jian Han, Ning Zhong, Zhisheng Huang
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)));