RL78_sleigh:用于Ghidra SRE的RL78 ISA的实现

  • S5_644813
    了解作者
  • 2MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-03 07:56
    上传日期
吉德拉RL78 Ghidra SRE的WIP RL78实现。 现在,此回购应至少在某种程度上可用于反转RL78。 拉取请求和问题提交将不胜感激。 设置 按照说明的设置说明进行,如果您打算修改任何文件,我建议您进入$(ghidra_root)/ Ghidra / Extensions / rl78_sleigh / data并删除“ languages”文件夹,然后符号链接到data /将此存储库下载到的任何位置的languages文件夹。 这样一来,您就可以在Ghidra中进行迭代和测试,而不必在每次要测试更改时都经历一个卸载->重新启动->重新安装->重新启动->重新打开项目的循环。 地位 什么有效: 在某种程度上可以反汇编测试二进制文件中的所有代码。 已知错误,但大多数情况下都起作用。 示例项目包含在ghidra_work文件夹中。 反编译器可以正确处理基本流程(但还有很长的路要
RL78_sleigh-master.zip
  • RL78_sleigh-master
  • ghidra_work
  • testfirm.gzf
    82.7KB
  • testfirm_load.gzf
    167.9KB
  • images
  • skz.png
    22KB
  • ghidra_ss.png
    76KB
  • rl78_state.png
    215.6KB
  • test_bins
  • mcu-firm.bin
    16KB
  • gradle
  • wrapper
  • gradle-wrapper.properties
    202B
  • gradle-wrapper.jar
    53.9KB
  • data
  • languages
  • rl78.slaspec
    46.4KB
  • rl78.ldefs
    449B
  • rl78.cspec
    1.3KB
  • rl78.pspec
    357B
  • build.xml
    2.7KB
  • docs
  • ISA_programmer_manual.pdf
    1.4MB
  • gradlew
    5.2KB
  • Module.manifest
    0B
  • LICENSE
    1KB
  • README.md
    2.7KB
  • gradlew.bat
    2.2KB
  • extension.properties
    95B
  • .gitignore
    49B
  • build.gradle
    1.9KB
内容介绍
GHIDRA RL78 =========== WIP RL78 implementation for Ghidra SRE. This repo should now be at the point of being at least somewhat usable for reversing RL78. Pull requests and issue submissions would be appreciated. ![Screenshot of current disassembly](https://raw.githubusercontent.com/hedgeberg/RL78_sleigh/master/images/rl78_state.png) Setup ----- Follow the setup instructions as explained in [Ghidra_Falcon](https://github.com/Thog/ghidra_falcon), and if you plan to modify any of the files I recommend you go into $(ghidra_root)/Ghidra/Extensions/rl78_sleigh/data and delete the "languages" folder, then symlink to the data/languages folder of whereever you download this repo to. That will allow you to iterate and test in Ghidra without having to go through a loop of uninstall->restart->reinstall->restart->reopen project every time you want to test changes. Status ------ What works: + Disassembles all code in the test binary, to some degree of accuracy. Has known bugs, but it mostly functions. Sample project is included in the ghidra_work folder. + Decompiler handles basic flow correctly (but still has a looooooong way to go, switch idioms in particular are messy) + A lot of auto-discovered memory offsets are good as-is, but some leave a lot to be desired. What doesn't work yet: + Large body of instructions still unimplemented, but none of the most common ones. + Decompiler output is full of nastiness, as no work has been done on refining this + Stack and RAM had to be separated, as Ghidra gets confused by the fact that the stack pointer doesn't actually line up with the area being referenced. This may be a more fundamental ghidra issue that needs some modifications to the codebase before a cleaner, more unified memory map can be designed. What's on the docket: + Adding context register functionality to enable register banking. + Implementing the remainder of the ISA + Huge amount of cleanup work in the .slaspec file, it's super messy + Experimenting with a basic loader + Default memory mappings and register locations FYI --- For those interested in extending this (or just learning about RL78), I've included the Renesas ISA programmer's manual in the "docs" folder. Credits ------- Thanks to [hthh](https://github.com/hthh/), [thog](https://github.com/thog), and [roblabla](https://github.com/roblabla) for their work on [Ghidra_Falcon](https://github.com/Thog/ghidra_falcon), which served as the base workflow for this project (i.e. I stole their repo and build system and just edited a couple files with the exception of the rl78 defintion files). Definitely check through their repo, their debugging workflow that they highlighted there is how I've been debugging this.
评论
    相关推荐