X. Jessie Yang

103 papers A* 4A 2B 2C 1Journal 73Unranked 21
YearRankTypeTitle / Venue / Authors
2026 A* conf
CHI
Hyesun Chung, X. Jessie Yang
2026 J jnl
Hum. Factors
Hyesun Chung, Timothy Holder, Julie A. Shah, X. Jessie Yang
2026 J jnl
Int. J. Hum. Comput. Interact.
Doo Won Han, Hyesun Chung, Yining Cao, Feng Zhou, Lisa J. Molnar, Lionel P. Robert, Dawn M. Tilbury, X. Jessie Yang
2026 J jnl
Int. J. Hum. Comput. Interact.
Hyesun Chung, Ruiwei Jiang, Siqian Shen, X. Jessie Yang
2026 J jnl
IEEE Trans. Hum. Mach. Syst.
Hyesun Chung, X. Jessie Yang
2026 J jnl
Int. J. Hum. Comput. Interact.
Lilit Avetisyan, X. Jessie Yang, Feng Zhou
2025 conf
HHAI
Ruben S. Verhagen, Mark A. Neerincx, X. Jessie Yang, Myrthe L. Tielman
2025 J jnl
Hum. Factors
Jin Yong Kim, Corey A. Lester, X. Jessie Yang
2025 conf
ICHMS
Hyesun Chung, X. Jessie Yang
2025 A conf
IUI
Tong Zhang, Mengao Zhang, Wei Yan Low, X. Jessie Yang, Boyang "Albert" Li
2025 J jnl
CoRR
Tong Zhang, Mengao Zhang, Wei Yan Low, X. Jessie Yang, Boyang Li
2025 conf
ICHMS
Hyesun Chung, Ruiwei Jiang, Siqian Shen, X. Jessie Yang
2025 conf
ICHMS
Shreyas Bhat, Joseph B. Lyons, Cong Shi, X. Jessie Yang
2025 J jnl
IEEE Trans. Hum. Mach. Syst.
Lilit Avetisyan, Aditya Deshmukh, X. Jessie Yang, Feng Zhou
2025 J jnl
IEEE Robotics Autom. Lett.
Tribhi Kathuria, Ke Liu, Junwoo Jang, X. Jessie Yang, Maani Ghaffari
2025 J jnl
CoRR
Tribhi Kathuria, Ke Liu, Junwoo Jang, X. Jessie Yang, Maani Ghaffari
2025 J jnl
Int. J. Hum. Comput. Interact.
Tong Zhang, X. Jessie Yang, Boyang Li
2025 J jnl
CoRR
Lilit Avetisyan, Emmanuel Abolarin, Vanik Zakarian, X. Jessie Yang, Feng Zhou
2025 J jnl
Int. J. Hum. Comput. Stud.
Lilit Avetisyan, Emmanuel Abolarin, Vanik Zakarian, X. Jessie Yang, Feng Zhou
2024 conf
ICHMS
Hyesun Chung, X. Jessie Yang
2024 J jnl
IEEE Trans. Hum. Mach. Syst.
Lilit Avetisyan, Jackie Ayoub, X. Jessie Yang, Feng Zhou
2024 conf
HRI (Companion)
Qiaoning Zhang, Feng Zhou, Lionel P. Robert Jr., X. Jessie Yang
2024 A* conf
HRI
Shreyas Bhat, Joseph B. Lyons, Cong Shi, X. Jessie Yang
2024 B conf
RO-MAN
Shaoze Yang, Shreyas Bhat, Yutong Ren, Paul Pridham, X. Jessie Yang, Terra Stroup, Al Salour
2024 J jnl
Int. J. Hum. Comput. Interact.
Ruikun Luo, Yifan Weng, Paramsothy Jayakumar, Mark J. Brudnak, Victor Paul, Vishnu R. Desaraju, Jeffrey L. Stein, Tulga Ersal, X. Jessie Yang
2024 J jnl
Auton. Robots
Yaohui Guo, X. Jessie Yang, Cong Shi
2024 J jnl
CoRR
Lilit Avetisyan, X. Jessie Yang, Feng Zhou
2024 J jnl
CoRR
Hyesun Chung, X. Jessie Yang
2024 J jnl
CoRR
Shreyas Bhat, Joseph B. Lyons, Cong Shi, X. Jessie Yang
2023 J jnl
CoRR
Lilit Avetisyan, Jackie Ayoub, X. Jessie Yang, Feng Zhou
2023 J jnl
CoRR
Shreyas Bhat, Joseph B. Lyons, Cong Shi, X. Jessie Yang
2023 conf
Robotics: Science and Systems
Yaohui Guo, X. Jessie Yang, Cong Shi
2023 J jnl
CoRR
Yaohui Guo, X. Jessie Yang, Cong Shi
2023 J jnl
CoRR
Shreyas Bhat, Joseph B. Lyons, Cong Shi, X. Jessie Yang
2023 J jnl
CoRR
Bo Fu, Tribhi Kathuria, Denise M. Rizzo, Matthew P. Castanier, X. Jessie Yang, Maani Ghaffari, Kira Barton
2023 J jnl
CoRR
Lilit Avetisyan, Aditya Deshmukh, X. Jessie Yang, Feng Zhou
2023 J jnl
CoRR
Tong Zhang, X. Jessie Yang, Boyang Li
2023 J jnl
IEEE Trans. Intell. Transp. Syst.
Jackie Ayoub, Lilit Avetisian, X. Jessie Yang, Feng Zhou
2023 A conf
IROS
Yaohui Guo, X. Jessie Yang, Cong Shi
2023 J jnl
CoRR
Yaohui Guo, X. Jessie Yang, Cong Shi
2023 conf
HRI (Companion)
Yaohui Guo, X. Jessie Yang, Cong Shi
2023 J jnl
CoRR
Yaohui Guo, X. Jessie Yang, Cong Shi
2023 J jnl
IEEE Access
Qiaoning Zhang, Connor Esterwood, Anuj K. Pradhan, Dawn M. Tilbury, X. Jessie Yang, Lionel P. Robert
2023 J jnl
Hum. Factors
X. Jessie Yang, Christopher Schemanske, Christine Searle
2022 J jnl
CoRR
Shreyas Bhat, Joseph B. Lyons, Cong Shi, X. Jessie Yang
2022 J jnl
IEEE Robotics Autom. Lett.
Shreyas Bhat, Joseph B. Lyons, Cong Shi, X. Jessie Yang
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Yangtao Zhang, X. Jessie Yang, Feng Zhou
2022 J jnl
Int. J. Hum. Comput. Interact.
Ruikun Luo, Na Du, X. Jessie Yang
2022 J jnl
Int. J. Hum. Comput. Interact.
Qiaoning Zhang, X. Jessie Yang, Lionel P. Robert
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Jackie Ayoub, Na Du, X. Jessie Yang, Feng Zhou
2022 B conf
RO-MAN
Tribhi Kathuria, Yifan Xu, Theodor Chakhachiro, X. Jessie Yang, Maani Ghaffari
2022 J jnl
CoRR
Tribhi Kathuria, Yifan Xu, Theodor Chakhachiro, X. Jessie Yang, Maani Ghaffari
2022 J jnl
CoRR
Jackie Ayoub, Lilit Avetisian, X. Jessie Yang, Feng Zhou
2022 J jnl
CoRR
Bo Fu, Tribhi Kathuria, Denise M. Rizzo, Matthew P. Castanier, X. Jessie Yang, Maani Ghaffari, Kira Barton
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Feng Zhou, X. Jessie Yang, Joost C. F. de Winter
2021 J jnl
IEEE Robotics Autom. Lett.
Hebert Azevedo-Sa, X. Jessie Yang, Lionel P. Robert, Dawn M. Tilbury
2021 J jnl
CoRR
Hebert Azevedo-Sa, X. Jessie Yang, Lionel P. Robert Jr., Dawn M. Tilbury
2021 J jnl
Int. J. Hum. Comput. Interact.
Connor Esterwood, X. Jessie Yang, Lionel P. Robert
2021 J jnl
CoRR
Jackie Ayoub, X. Jessie Yang, Feng Zhou
2021 J jnl
Inf. Process. Manag.
Jackie Ayoub, X. Jessie Yang, Feng Zhou
2021 conf
AutomotiveUI
Na Du, Feng Zhou, Dawn M. Tilbury, Lionel Peter Robert, X. Jessie Yang
2021 J jnl
CoRR
Yangtao Zhang, X. Jessie Yang, Feng Zhou
2021 J jnl
CoRR
Qiaoning Zhang, X. Jessie Yang, Lionel P. Robert Jr.
2021 conf
HRI (Companion)
Hebert Azevedo-Sa, X. Jessie Yang, Lionel P. Robert, Dawn M. Tilbury
2021 J jnl
Int. J. Soc. Robotics
Yaohui Guo, X. Jessie Yang
2021 J jnl
IEEE Access
Suresh Kumaar Jayaraman, Lionel P. Robert, X. Jessie Yang, Dawn M. Tilbury
2021 J jnl
CoRR
Jackie Ayoub, Na Du, X. Jessie Yang, Feng Zhou
2021 J jnl
Int. J. Soc. Robotics
Hebert Azevedo-Sa, Suresh Kumaar Jayaraman, Connor T. Esterwood, X. Jessie Yang, Lionel P. Robert, Dawn M. Tilbury
2021 J jnl
CoRR
Yaohui Guo, Cong Shi, X. Jessie Yang
2021 J jnl
CoRR
X. Jessie Yang, Christopher Schemanske, Christine Searle
2021 J jnl
CoRR
Feng Zhou, X. Jessie Yang, Joost C. F. de Winter
2021 J jnl
CoRR
Hebert Azevedo-Sa, X. Jessie Yang, Lionel P. Robert Jr., Dawn M. Tilbury
2021 J jnl
IEEE Access
Qiaoning Zhang, X. Jessie Yang, Lionel P. Robert
2020 J jnl
CoRR
Ruikun Luo, Yifan Weng, Yifan Wang, Paramsothy Jayakumar, Mark J. Brudnak, Victor Paul, Vishnu R. Desaraju, Jeffrey L. Stein, Tulga Ersal, X. Jessie Yang
2020 A* conf
ICRA
Suresh Kumaar Jayaraman, Dawn M. Tilbury, X. Jessie Yang, Anuj K. Pradhan, Lionel P. Robert
2020 J jnl
CoRR
Suresh Kumaar Jayaraman, Dawn M. Tilbury, X. Jessie Yang, Anuj K. Pradhan, Lionel P. Robert Jr.
2020 conf
HRI (Companion)
Hebert Azevedo-Sa, Suresh Kumaar Jayaraman, Connor T. Esterwood, X. Jessie Yang, Lionel P. Robert, Dawn M. Tilbury
2020 J jnl
IEEE Robotics Autom. Lett.
Hebert Azevedo-Sa, Suresh Kumaar Jayaraman, X. Jessie Yang, Lionel P. Robert, Dawn M. Tilbury
2020 C conf
ACC
Yifan Weng, Ruikun Luo, Paramsothy Jayakumar, Mark J. Brudnak, Victor Paul, Vishnu R. Desaraju, Jeffrey L. Stein, X. Jessie Yang, Tulga Ersal
2020 J jnl
CoRR
Ruikun Luo, Na Du, X. Jessie Yang
2020 conf
AutomotiveUI
Na Du, Jinyong Kim, Feng Zhou, Elizabeth Pulver, Dawn M. Tilbury, Lionel P. Robert, Anuj K. Pradhan, X. Jessie Yang
2020 J jnl
CoRR
Na Du, Feng Zhou, Elizabeth Pulver, Dawn M. Tilbury, Lionel P. Robert, Anuj K. Pradhan, X. Jessie Yang
2020 conf
CHI Extended Abstracts
Qiaoning Zhang, X. Jessie Yang, Lionel Peter Robert
2020 J jnl
CoRR
Jackie Ayoub, X. Jessie Yang, Feng Zhou
2020 conf
CHI Extended Abstracts
Yaohui Guo, Chongjie Zhang, X. Jessie Yang
2020 J jnl
CoRR
Yaohui Guo, X. Jessie Yang
2020 J jnl
Hum. Factors
Na Du, Kevin Y. Huang, X. Jessie Yang
2020 conf
CHI Extended Abstracts
Na Du, Feng Zhou, Elizabeth Pulver, Dawn M. Tilbury, Lionel P. Robert, Anuj K. Pradhan, X. Jessie Yang
2020 J jnl
CoRR
Na Du, X. Jessie Yang, Feng Zhou
2020 J jnl
Int. J. Hum. Comput. Interact.
Feng Zhou, X. Jessie Yang, Xin Zhang
2020 conf
CHI Extended Abstracts
Ruikun Luo, Jian Chu, X. Jessie Yang
2019 J jnl
CoRR
Qiaoning Zhang, Connor Esterwood, X. Jessie Yang, Lionel P. Robert Jr.
2019 conf
AutomotiveUI
Jackie Ayoub, Feng Zhou, Shan Bao, X. Jessie Yang
2019 J jnl
CoRR
Na Du, Jacob Haspiel, Qiaoning Zhang, Dawn M. Tilbury, Anuj K. Pradhan, X. Jessie Yang, Lionel P. Robert Jr.
2019 J jnl
Frontiers Robotics AI
Suresh Kumaar Jayaraman, Chandler Creech, Dawn M. Tilbury, X. Jessie Yang, Anuj K. Pradhan, Katherine M. Tsui, Lionel P. Robert
2019 J jnl
CoRR
Luke Petersen, Lionel Robert, X. Jessie Yang, Dawn M. Tilbury
2019 J jnl
Int. J. Hum. Comput. Interact.
Shihan Lu, Meng Yuan Zhang, Tulga Ersal, X. Jessie Yang
2018 conf
HRI (Companion)
Shihan Lu, Meng Yuan Zhang, Tulga Ersal, X. Jessie Yang
2018 conf
HRI (Companion)
Jacob Haspiel, Na Du, Jill Meyerson, Lionel P. Robert Jr., Dawn M. Tilbury, X. Jessie Yang, Anuj K. Pradhan
2018 conf
CHI Extended Abstracts
Xuejiao Zhao, Qiong Wu, X. Jessie Yang, Yang Qiu, Huiguo Zhang, Chunyan Miao
2018 conf
HRI (Companion)
Suresh Kumaar Jayaraman, Chandler Creech, Lionel P. Robert Jr., Dawn M. Tilbury, X. Jessie Yang, Anuj K. Pradhan, Katherine M. Tsui
2017 A* conf
HRI
X. Jessie Yang, Vaibhav V. Unhelkar, Kevin Li, Julie A. Shah
2015 J jnl
Hum. Factors
X. Jessie Yang, Christopher D. Wickens, Taezoon Park, Liesel Fong, Kewin T. H. Siah
redb/extractors/decompiler/_archive/GhidraDecompilerScript-latest.java
← Index redb/extractors/decompiler/_archive/GhidraDecompilerScript-latest.java java
import ghidra.app.script.GhidraScript;
import ghidra.program.model.listing.*;
import ghidra.app.decompiler.*;
import ghidra.program.model.block.*;
import ghidra.program.model.symbol.*;
import ghidra.program.model.pcode.*;
import ghidra.program.model.address.*;
import org.json.JSONObject;
import org.json.JSONArray;
import java.security.MessageDigest;
import java.nio.charset.StandardCharsets;

public class GhidraDecompilerScript extends GhidraScript {
    private DecompInterface decompInterface;
    private BasicBlockModel basicBlockModel;
    
    @Override
    public void run() throws Exception {
        // Get binary hash and filepath from arguments
        String[] args = getScriptArgs();
        if (args.length < 2) {
            System.err.println("{\"error\": \"Both SHA256 and filepath arguments are required\"}");
            return;
        }
        String sha256 = args[0];
        String filepath = args[1];

        // Initialize analysis components
        setupDecompiler();
        basicBlockModel = new BasicBlockModel(currentProgram);

        // Create the main JSON object for output
        JSONObject output = new JSONObject();
        output.put("sha256", sha256);
        output.put("decompiled", new JSONArray());
        output.put("disassembled", new JSONArray());
        output.put("cfg", new JSONArray());

        // Process all functions
        FunctionIterator functions = currentProgram.getFunctionManager().getFunctions(true);
        for (Function function : functions) {
            processFunction(function, output);
        }

        // Output the final JSON to stdout
        System.out.println(output.toString());
    }

    private void setupDecompiler() {
        decompInterface = new DecompInterface();
        DecompileOptions options = new DecompileOptions();
        decompInterface.setOptions(options);
        decompInterface.openProgram(currentProgram);
    }

    private void processFunction(Function function, JSONObject output) {
        Address entry = function.getEntryPoint();
        String functionName = function.getName();
        String functionAddress = entry.toString();

        // Process decompiled code
        processDecompiledCode(function, output.getJSONArray("decompiled"), 
                            functionName, functionAddress);

        // Process disassembled code
        processDisassembledCode(function, output.getJSONArray("disassembled"), 
                              functionName, functionAddress);

        // Process CFG
        processCFG(function, output.getJSONArray("cfg"), functionAddress);
    }

    private void processDecompiledCode(Function function, JSONArray decompArray, 
                                     String functionName, String functionAddress) {
        DecompileResults results = decompInterface.decompileFunction(function, 30, monitor);
        if (results.decompileCompleted()) {
            String decompiledCode = results.getDecompiledFunction().getC();
            String contentHash = calculateHash(decompiledCode);

            JSONObject functionObj = new JSONObject();
            functionObj.put("decompiled_content_hash", contentHash);
            functionObj.put("decompiled_function_name", functionName);
            functionObj.put("decompiled_function_address", functionAddress);
            functionObj.put("decompiled_function", decompiledCode);
            
            decompArray.put(functionObj);
        }
    }

    private void processDisassembledCode(Function function, JSONArray disasmArray, 
                                       String functionName, String functionAddress) {
        try {
            StringBuilder disassembly = new StringBuilder();
            StringBuilder normalized = new StringBuilder();
            int instructionCount = 0;

            Listing listing = currentProgram.getListing();
            AddressSetView functionBody = function.getBody();
            InstructionIterator instructions = listing.getInstructions(functionBody, true);

            while (instructions.hasNext()) {
                try {
                    Instruction instr = instructions.next();
                    String disasmLine = instr.toString();
                    disassembly.append(disasmLine).append("\n");
                    normalized.append(normalizeInstruction(disasmLine)).append("\n");
                    instructionCount++;
                } catch (Exception e) {
                    System.err.println("Error processing instruction in " + functionName + ": " + e.getMessage());
                }
            }

            String disassembledCode = disassembly.toString();
            String contentHash = calculateHash(disassembledCode);

            JSONObject functionObj = new JSONObject();
            functionObj.put("disassembled_content_hash", contentHash);
            functionObj.put("disassembled_function_name", functionName);
            functionObj.put("disassembled_function_address", functionAddress);
            functionObj.put("disassembled_function", disassembledCode);
            functionObj.put("normalized_disassembly", normalized.toString());
            functionObj.put("instruction_count", instructionCount);

            // Set similarity-related fields to null for now
            functionObj.put("minhash_signature", JSONObject.NULL);
            functionObj.put("opcode_frequency_vector", JSONObject.NULL);
            functionObj.put("api_calls_vector", JSONObject.NULL);
            functionObj.put("instruction_embedding", JSONObject.NULL);

            disasmArray.put(functionObj);
        } catch (Exception e) {
            System.err.println("Error processing disassembly for " + functionName + ": " + e.getMessage());
        }
    }

    private void processCFG(Function function, JSONArray cfgArray, String functionAddress) {
        try {
            CodeBlockIterator blocks = basicBlockModel.getCodeBlocksContaining(
                function.getBody(), monitor);

            while (blocks.hasNext()) {
                CodeBlock block = blocks.next();
                String blockInstructions = getBlockInstructions(block);
                String blockId = calculateHash(blockInstructions);

                JSONObject blockObj = new JSONObject();
                blockObj.put("block_id", blockId);
                blockObj.put("function_address", functionAddress);
                blockObj.put("block_instructions", blockInstructions);

                // Get successor blocks
                CodeBlockReferenceIterator successors = block.getDestinations(monitor);
                JSONArray successorAddresses = new JSONArray();
                while (successors.hasNext()) {
                    CodeBlockReference ref = successors.next();
                    successorAddresses.put(ref.getDestinationAddress().toString());
                }
                blockObj.put("successor_blocks", successorAddresses);

                cfgArray.put(blockObj);
            }
        } catch (Exception e) {
            System.err.println("{\"error\": \"Error processing CFG: " + 
                             e.getMessage().replace("\"", "'") + "\"}");
        }
    }

    private String normalizeInstruction(String instruction) {
        return instruction.replaceAll("0x[0-9a-fA-F]+", "IMM")
                        .replaceAll("\\b\\d+\\b", "NUM");
    }

    private String getBlockInstructions(CodeBlock block) {
        StringBuilder instructions = new StringBuilder();
        AddressIterator addresses = block.getAddresses(true);
        while (addresses.hasNext()) {
            Address addr = addresses.next();
            Instruction instr = currentProgram.getListing().getInstructionAt(addr);
            if (instr != null) {
                instructions.append(instr.toString()).append("\n");
            }
        }
        return instructions.toString();
    }

    private String calculateHash(String content) {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] hash = digest.digest(content.getBytes(StandardCharsets.UTF_8));
            StringBuilder hexString = new StringBuilder();
            for (byte b : hash) {
                hexString.append(String.format("%02x", b));
            }
            return hexString.toString();
        } catch (Exception e) {
            System.err.println("{\"error\": \"Error calculating hash\"}");
            return "";
        }
    }
}