Jai-Hoon Kim

67 papers A 3B 2C 2Misc 11Journal 30Unranked 19
YearRankTypeTitle / Venue / Authors
2022 J jnl
J. Ambient Intell. Humaniz. Comput.
Temesgen Seyoum Alemayehu, Jai-Hoon Kim, We-Duke Cho
2021 J jnl
Intell. Serv. Robotics
Kwanghoon Choi, Jai-Hoon Kim
2020 J jnl
Wirel. Pers. Commun.
Temesgen Seyoum Alemayehu, Jai-Hoon Kim, Wonsik Yoon
2020 conf
ICOIN
Yonghyun Kim, Ki-Hyung Kim, Jai-Hoon Kim
2020 conf
ICOIN
Hyowon Im, Ki-Hyung Kim, Jai-Hoon Kim
2020 J jnl
Intell. Autom. Soft Comput.
Sun-Taag Choe, We-Duke Cho, Jai-Hoon Kim, Ki-Hyung Kim
2018 conf
ICOIN
Jin Hyeong Jeon, Ki-Hyung Kim, Jai-Hoon Kim
2018 J jnl
Bioinform.
Minjeong Kim, Jai-Hoon Kim, Kangseok Kim, Sunshin Kim
2018 J jnl
J. Supercomput.
Kwanghoon Choi, Sung-Hwa Lim, Jai-Hoon Kim
2017 J jnl
IET Comput. Digit. Tech.
Temesgen Seyoum Alemayehu, Jai-Hoon Kim
2017 J jnl
Wirel. Pers. Commun.
Temesgen Seyoum Alemayehu, Jai-Hoon Kim
2016 J jnl
KSII Trans. Internet Inf. Syst.
Sung-Hwa Lim, Byoung-Hoon Lee, Jai-Hoon Kim
2015 conf
ICOIN
Yoona Kim, Ki-Hyung Kim, Taeshik Shon, Jai-Hoon Kim
2015 J jnl
Multim. Tools Appl.
Kangseok Kim, Wonjeong Ha, Okkyung Choi, Hongjin Yeh, Jai-Hoon Kim, Manpyo Hong, Taeshik Shon
2015 J jnl
Multim. Tools Appl.
Minkyung Kim, Dong-Wook Lee, Kangseok Kim, Jai-Hoon Kim
2014 conf
ICITCS
Sung-Hwa Lim, Jai-Hoon Kim
2014 J jnl
Future Gener. Comput. Syst.
Sanghyuk Park, Jai-Hoon Kim, Geoffrey C. Fox
2013 J jnl
Int. J. Comput. Math.
Yunlim Ku, Okkyung Choi, Kangseok Kim, Taeshik Shon, Manpyo Hong, Hongjin Yeh, Jai-Hoon Kim
2013 J jnl
Intell. Autom. Soft Comput.
Sung-Hwa Lim, Byoung-Hoon Lee, Jai-Hoon Kim
2010 J jnl
Wirel. Pers. Commun.
Dong-Wook Lee, Jai-Hoon Kim
2010 J jnl
Future Gener. Comput. Syst.
Sangyoon Oh, Jai-Hoon Kim, Geoffrey C. Fox
2010 J jnl
Inf. Process. Lett.
Byoung-Hoon Lee, Sung-Hwa Lim, Jai-Hoon Kim
2009 J jnl
KSII Trans. Internet Inf. Syst.
Dong-Wook Lee, Jai-Hoon Kim
2009 J jnl
Future Gener. Comput. Syst.
Byoung-Hoon Lee, Sung-Hwa Lim, Jai-Hoon Kim, Geoffrey C. Fox
2009 J jnl
IEEE Trans. Consumer Electron.
Hyo-nam Lee, Sung-Hwa Lim, Jai-Hoon Kim
2008 J jnl
Inf. Process. Lett.
Sung-Hwa Lim, Byoung-Hoon Lee, Jai-Hoon Kim
2008 J jnl
Concurr. Comput. Pract. Exp.
Byoung-Hoon Lee, Sung-Hwa Lim, Jai-Hoon Kim, We-Duke Cho
2007 conf
ICIC (1)
Jeong-Ah Lee, Dong-Wook Lee, Jai-Hoon Kim, We-Duke Cho, Jan Pajak
2007 J jnl
Int. J. Inf. Acquis.
Jeong-Ah Lee, Dong-Wook Lee, Jai-Hoon Kim, We-Duke Cho, Jan Pajak
2007 C conf
UIC
Muhammad Ali Malik, Byoung-Hoon Lee, Young-Bae Ko, Jai-Hoon Kim
2007 conf
ICIC (1)
Eun-Mi Lee, Jai-Hoon Kim, Won-Sik Yoon
2006 conf
WASA
Jung-Ho Kwon, Byoung-Hoon Lee, Jai-Hoon Kim, We-Duke Cho
2006 J jnl
IEICE Trans. Commun.
Sung-Hwa Lim, Jai-Hoon Kim
2006 conf
APWeb Workshops
Young-Mi Song, Kyung-chul Ko, Byoung-Hoon Lee, Jai-Hoon Kim
2005 Misc conf
International Conference on Computational Science (3)
Sangyoon Oh, Sangmi Lee Pallickara, Sung Hoon Ko, Jai-Hoon Kim, Geoffrey C. Fox
2005 conf
MSN
Changsu Suh, Young-Bae Ko, Jai-Hoon Kim
2005 Misc conf
International Conference on Computational Science (2)
Sangyoon Oh, Sangmi Lee Pallickara, Sung Hoon Ko, Jai-Hoon Kim, Geoffrey C. Fox
2005 conf
IMSA
Chang-ho Cha, Jai-Hoon Kim, Young-Bae Ko
2005 C conf
Communication Systems and Applications
Byoung-Hoon Lee, Jai-Hoon Kim
2004 conf
ICOIN
Young-Bae Ko, Jong-Mu Choi, Jai-Hoon Kim
2004 Misc conf
PDPTA
Hyo-Sung Kang, Jong-Mu Choi, Jai-Hoon Kim, Young-Bae Ko
2004 Misc conf
International Conference on Computational Science
Kook-Hee Han, Jai-Hoon Kim, Young-Bae Ko, Won-Sik Yoon
2004 J jnl
Bioinform.
Soojin Lee, Min-Kyu Cho, Jin-Won Jung, Jai-Hoon Kim, Weontae Lee
2004 Misc conf
PDPTA
Min-Ji Lee, Jai-Hoon Kim
2004 J jnl
J. Syst. Softw.
Sung-Hwa Lim, Jai-Hoon Kim
2004 conf
WSTFEUS
Junaid Ahsenali Chaudhry, Won-Sik Yoon, Jai-Hoon Kim, We-Duke Cho
2003 B conf
CCGRID
Sang-Min Park, Jai-Hoon Kim
2003 Misc conf
International Conference on Computational Science
Minjun Kim, Jai-Hoon Kim, Jin-Won Jung, Weontae Lee
2003 A conf
ICSOC
Sang-Min Park, Young-Bae Ko, Jai-Hoon Kim
2003 conf
GCC (2)
Sang-Min Park, Jai-Hoon Kim, Young-Bae Ko, Won-Sik Yoon
2003 conf
APPT
Seungbum Lim, Jai-Hoon Kim, Young-Bae Ko
2003 conf
Euro-Par
Jong-Mu Choi, Jin-Seok Choi, Jai-Hoon Kim, Young-Bae Ko
2003 conf
PWC
Jong-Mu Choi, Young-Bae Ko, Jai-Hoon Kim
2003 conf
GCC (2)
Min-Ji Lee, Wonil Kim, Jai-Hoon Kim
2002 Misc conf
PDPTA
Jin-Ho Ka, Jai-Hoon Kim
2002 Misc conf
PDPTA
Jooyong Park, Jai-Hoon Kim
2002 Misc conf
PDPTA
Chanwoo Kim, Jai-Hoon Kim
2000 J jnl
IEEE Trans. Consumer Electron.
Yuyong Oh, Sungsoo Kim, Jai-Hoon Kim
2000 J jnl
IEEE Trans. Consumer Electron.
Dongil Shin, Dongkyoo Shin, Eui-Jong Jeong, Jai-Hoon Kim, Sungsoo Kim
2000 Misc conf
PDPTA
Jong-Kwang Jeong, Jai-Hoon Kim
1999 J jnl
IEEE Trans. Consumer Electron.
Jai-Hoon Kim, Sungsoo Kim, Fabrizio Lombardi
1998 B conf
RTCSA
Jai-Hoon Kim, Kihyun Song, Kyunghee Choi, Gihyun Jung, Seunhun Jung
1997 Misc conf
HiPC
Jai-Hoon Kim, Nitin H. Vaidya
1997 A conf
International Conference on Supercomputing
Jai-Hoon Kim, Nitin H. Vaidya
1997 J jnl
Microprocess. Microsystems
Jai-Hoon Kim, Nitin H. Vaidya
1996 A conf
International Conference on Supercomputing
Jai-Hoon Kim, Nitin H. Vaidya
1995 conf
DFT
Jai-Hoon Kim, Fabrizio Lombardi, Nitin H. Vaidya
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)));