Jai-Ming Lin

63 papers A* 5A 18C 2Journal 23Unranked 15
YearRankTypeTitle / Venue / Authors
2026 J jnl
ACM Trans. Design Autom. Electr. Syst.
Jai-Ming Lin, Jia-Ting Tsai, Hsin-Lin Chen
2025 conf
ACM Great Lakes Symposium on VLSI
Jai-Ming Lin, Pin-Yu Chen, Min-Chia Tsai, Chen-Fa Tsai, De-Shiun Fu, Che-Li Lin
2025 A conf
DATE
Jai-Ming Lin, Zong-Ze Lee, Nan-Chu Lin
2025 A conf
ICCAD
Jai-Ming Lin, Hung-Wei Hsu, Tan Huang, Chen-Fa Tsai, De-Shiun Fu, Shih-Cheng Huang
2025 conf
ACM Great Lakes Symposium on VLSI
Jai-Ming Lin, Hsin-Lin Chen
2024 A conf
ICCAD
Jai-Ming Lin, Wei-Yuan Lin, Yung-Chen Chen, Pin-Yu Chen, Chen-Fa Tsai, De-Shiun Fu, Che-Li Lin
2024 conf
ISPD
Jai-Ming Lin, You-Yu Chang, Wei-Lun Huang
2023 A conf
ICCAD
Jai-Ming Lin, Yu-Chien Lin, Hsuan Kung, Wei-Yuan Lin
2023 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, Tsung-Lin Tsai, Tsung-Chun Tsai
2023 A conf
ICCAD
Jai-Ming Lin, Tsung-Chun Tsai, Rui-Ting Shen
2023 conf
ISPD
Jai-Ming Lin, Yu-Tien Chen, Yang-Tai Kung, Hao-Jia Lin
2022 A conf
ICCAD
Jai-Ming Lin, Po-Chen Lu, Heng-Yu Lin, Jia-Ting Tsai
2022 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, Liang-Chi Zane, Min-Chia Tsai, Yung-Chen Chen, Che-Li Lin, Chen-Fa Tsai
2022 A conf
ICCAD
Jai-Ming Lin, Hao-Yuan Hsieh, Hsuan Kung, Hao-Jia Lin
2021 conf
ISPD
Jai-Ming Lin, Yang-Tai Kung, Zheng-Yu Huang, I-Ru Chen
2021 A conf
ICCAD
Jai-Ming Lin, Wei-Fan Huang, Yao-Chieh Chen, Yi-Ting Wang, Po-Wen Wang
2021 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, You-Lun Deng, Ya-Chu Yang, Jia-Jian Chen, Po-Chen Lu
2021 A conf
ICCAD
Jai-Ming Lin, Chung-Wei Huang, Liang-Chi Zane, Min-Chia Tsai, Che-Li Lin, Chen-Fa Tsai
2021 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, Tai-Ting Chen, Hao-Yuan Hsieh, Ya-Ting Shyu, Yeong-Jar Chang, Juin-Ming Lu
2021 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, Wei-Yi Chang, Hao-Yuan Hsieh, Ya-Ting Shyu, Yeong-Jar Chang, Juin-Ming Lu
2019 A conf
ICCAD
Jai-Ming Lin, You-Lun Deng, Ya-Chu Yang, Jia-Jian Chen, Yao-Chieh Chen
2019 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, You-Lun Deng, Szu-Ting Li, Bo-Heng Yu, Li-Yen Chang, Te-Wei Peng
2019 A* conf
DAC
Jai-Ming Lin, Szu-Ting Li, Yi-Ting Wang
2018 A conf
ICCAD
Jai-Ming Lin, Tai-Ting Chen, Yen-Fu Chang, Wei-Yi Chang, Ya-Ting Shyu, Yeong-Jar Chang, Juin-Ming Lu
2018 A conf
DATE
Jai-Ming Lin, Chien-yu Huang, Jhih-Ying Yang
2018 A conf
DATE
Jai-Ming Lin, Chien-yu Huang
2018 A conf
ICCAD
Jai-Ming Lin, Jhih-Sheng Syu, I-Ru Chen
2017 conf
ASP-DAC
Jai-Ming Lin, Bo-Heng Yu, Li-Yen Chang
2017 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Jai-Ming Lin, Jung-An Yang
2016 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Chun-Po Huang, Jai-Ming Lin, Ya-Ting Shyu, Soon-Jyh Chang
2016 conf
ASP-DAC
Liang-Ying Lu, Ching-Yao Chang, Zhao-Hong Chen, Bo-Ting Yeh, Tai-Hua Lu, Peng-Yu Chen, Pin-Hao Tang, Kuen-Jong Lee, Lih-Yih Chiou, Soon-Jyh Chang, Chien-Hung Tsai, Chung-Ho Chen, Jai-Ming Lin
2016 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Ya-Ting Shyu, Jai-Ming Lin, Che-Chun Lin, Chun-Po Huang, Soon-Jyh Chang
2016 A conf
ICCAD
Jai-Ming Lin, Po-Yang Chiu, Yen-Fu Chang
2015 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Jai-Ming Lin, Che-Chun Lin
2015 conf
VLSI-DAT
Jai-Ming Lin, Chih-Yao Hu, Kai-Chung Chan
2014 conf
ISPD
Jai-Ming Lin, Che-Chun Lin, Zong-Wei Syu, Chih-Chung Tsai, Kevin Huang
2014 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Jai-Ming Lin, Ji-Heng Wu
2013 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Ya-Ting Shyu, Jai-Ming Lin, Chun-Po Huang, Cheng-Wu Lin, Ying-Zu Lin, Soon-Jyh Chang
2012 A conf
ICCAD
Cheng-Wu Lin, Chung-Lin Lee, Jai-Ming Lin, Soon-Jyh Chang
2012 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Cheng-Wu Lin, Jai-Ming Lin, Yen-Chih Chiu, Chun-Po Huang, Soon-Jyh Chang
2012 conf
ISPD
Cheng-Wu Lin, Cheng-Chung Lu, Jai-Ming Lin, Soon-Jyh Chang
2012 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, Zhi-Xiong Hung
2012 conf
ASP-DAC
Jai-Ming Lin, Wei-Yi Cheng, Chung-Lin Lee, Richard C. Hsu
2011 A* conf
DAC
Cheng-Wu Lin, Jai-Ming Lin, Yen-Chih Chiu, Chun-Po Huang, Soon-Jyh Chang
2011 conf
ASP-DAC
Jia-Ru Chuang, Jai-Ming Lin
2011 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Jai-Ming Lin, Zhi-Xiong Hung
2010 A* conf
DAC
Cheng-Wu Lin, Jai-Ming Lin, Chun-Po Huang, Soon-Jyh Chang
2010 conf
ASP-DAC
Jai-Ming Lin, Hsi Hung
2005 conf
ASP-DAC
Jai-Ming Lin, Guang-Ming Wu, Yao-Wen Chang, Jen-Hui Chuang
2005 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, Yao-Wen Chang
2004 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Jai-Ming Lin, Yao-Wen Chang
2003 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, Yao-Wen Chang, Shih-Ping Lin
2003 conf
ASP-DAC
Jai-Ming Lin, Song-Ra Pan, Yao-Wen Chang
2002 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jai-Ming Lin, Hsin-Lung Chen, Yao-Wen Chang
2002 A conf
DATE
Jai-Ming Lin, Hsin-Lung Chen, Yao-Wen Chang
2002 J jnl
ACM Trans. Design Autom. Electr. Syst.
Guang-Ming Wu, Jai-Ming Lin, Yao-Wen Chang
2002 A* conf
DAC
Jai-Ming Lin, Yao-Wen Chang
2001 C conf
ICCD
Guang-Ming Wu, Jai-Ming Lin, Yao-Wen Chang
2001 C conf
ICCD
Guang-Ming Wu, Jai-Ming Lin, Mango Chia-Tso Chao, Yao-Wen Chang
2001 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Guang-Ming Wu, Jai-Ming Lin, Yao-Wen Chang
2001 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Yao-Wen Chang, Jai-Ming Lin, Martin D. F. Wong
2001 A* conf
DAC
Jai-Ming Lin, Yao-Wen Chang
1998 A conf
ICCAD
Yao-Wen Chang, Jai-Ming Lin, D. F. Wong
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)));