archive: add 5 repo prompt(s) [skip ci]

This commit is contained in:
github-actions[bot]
2026-02-24 13:41:29 +00:00
parent bc5f9a0b29
commit 8206111cd9
6 changed files with 44795 additions and 0 deletions
+401
View File
@@ -0,0 +1,401 @@
Project Path: arc_EliseZeroTwo_SEH-Helper_1pv2r8ov
Source Tree:
```txt
arc_EliseZeroTwo_SEH-Helper_1pv2r8ov
├── LICENSE
├── README.md
├── __init__.py
├── images
│ └── demo.png
├── plugin.json
└── requirements.txt
```
`LICENSE`:
```
Copyright (c) 2022 EliseZeroTwo
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
```
`README.md`:
```md
# SEH Helper
Author: **EliseZeroTwo**
_A Binary Ninja helper for exploring structured exception handlers in PEs_
## Side-Note
I dislike GitHub, this plugin is only here as Binary Ninja relies on GitHub for it's plugin manager which I feel is bad. GitHub requires an account for more and more basic features with every passing day. It will not be long until GitHub accounts will be merged with Microsoft account similarly to what is going on with Mojang accounts at the moment. I do not want to log in with a Microsoft account to clone a repo, nor do you. GitHub also accepts a large, but unknown, sum of money every year for their contract with the United States Immigration and Customs Enforcement agency which is even more reason to not buy into their closed-wall garden.
## Description:
This plugin provides a UI helper for exploring structured exception handlers in PEs. It provides a feature to view all entries, view the entry at the cursor, or follow the cursor displaying the entry at the cursor constantly.
## License
This plugin is released under an [MIT license](./license).
![SEH Demo Image](./images/demo.png)
```
`__init__.py`:
```py
from binaryninja import *
from binaryninjaui import WidgetPane, UIActionHandler, UIActionHandler, UIAction, Menu, UIContext, UIContextNotification
from pefile import ExceptionsDirEntryData, PE, PEFormatError
from PySide6 import QtCore
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QHBoxLayout, QVBoxLayout, QLabel, QWidget, QListWidget, QListWidgetItem, QTextEdit, QCheckBox, QPushButton
from PySide6.QtGui import QMouseEvent
class SEHListItem(QListWidgetItem):
def __init__(self, base: int, entry: ExceptionsDirEntryData):
self.entry = entry
QListWidgetItem.__init__(self, hex(
base + entry.struct.BeginAddress) + "-" + hex(base + entry.struct.EndAddress))
class AddrLabel(QLabel):
def __init__(self, address, bv: BinaryView, opt_text = None):
self.bv = bv
self.addr = address
self.opt_text = opt_text
if self.addr != None:
if opt_text != None:
QLabel.__init__(self, opt_text + hex(self.addr))
else:
QLabel.__init__(self, hex(self.addr))
else:
QLabel.__init__(self, "")
def mouseReleaseEvent(self, event: QMouseEvent) -> None:
button = event.button()
modifiers = event.modifiers()
if modifiers == Qt.NoModifier and button == Qt.LeftButton:
if self.addr != None:
self.bv.offset = self.addr
return super().mouseReleaseEvent(event)
def setAddr(self, addr):
self.addr = addr
if self.addr != None and self.opt_text != None:
self.setText(self.opt_text + hex(self.addr))
elif self.addr != None:
self.setText(hex(self.addr))
elif self.opt_text != None:
self.setText(self.opt_text)
else:
self.clear()
def setOptText(self, text):
self.opt_text = text
self.setAddr(self.addr)
class SEHNotifications(UIContextNotification):
def __init__(self, widget):
UIContextNotification.__init__(self)
self.widget = widget
self.widget.destroyed.connect(self.destroyed)
UIContext.registerNotification(self)
def destroyed(self):
UIContext.unregisterNotification(self)
def OnAddressChange(self, context, frame, view, location):
if self.widget.follow_cb.isChecked():
self.widget.gotoAddr(location.getOffset())
class SEHWidget(QWidget, UIContextNotification):
def gotoAddr(self, addr):
for x in self.dict:
if x[0] <= addr < x[1]:
row = self.dict[x]
self.list.setCurrentRow(row)
self.listItemClicked(self.list.item(row))
return
self.list.clearSelection()
self.listItemClicked(None)
def gotoButtonClicked(self):
self.gotoAddr(self.bv.offset)
def __init__(self, bv: BinaryView, file: PE):
QWidget.__init__(self)
layout = QVBoxLayout()
header_layout = QHBoxLayout()
self.follow_cb = QCheckBox()
follow_layout = QHBoxLayout()
follow_layout.addWidget(QLabel("Follow Cursor: "))
follow_layout.addWidget(self.follow_cb)
goto_button = QPushButton()
goto_button.setText("Goto Cursor")
goto_button.clicked.connect(self.gotoButtonClicked)
header_layout.addWidget(goto_button)
header_layout.addStretch()
header_layout.addLayout(follow_layout)
self.begin_addr = AddrLabel(None, bv)
begin_addr_layout = QHBoxLayout()
begin_addr_layout.addWidget(QLabel("Begin Address: "))
begin_addr_layout.addWidget(self.begin_addr)
self.end_addr = AddrLabel(None, bv)
end_addr_layout = QHBoxLayout()
end_addr_layout.addWidget(QLabel("End Address: "))
end_addr_layout.addWidget(self.end_addr)
self.unwind_addr = AddrLabel(None, bv)
unwind_addr_layout = QHBoxLayout()
unwind_addr_layout.addWidget(QLabel("Unwind Address: "))
unwind_addr_layout.addWidget(self.unwind_addr)
unwind_layout = QVBoxLayout()
self.unwind_version = QLabel("")
self.unwind_prolog_size = AddrLabel(None, bv, "")
self.unwind_code_count = QLabel("")
self.unwind_frame_register = QLabel("")
self.unwind_frame_offset = QLabel("")
self.unwind_flags = QLabel("")
self.unwind_codes = QTextEdit()
self.unwind_codes.setReadOnly(True)
self.unwind_exception_handler = AddrLabel(None, bv)
title = QLabel("Unwind Info")
title.setAlignment(QtCore.Qt.AlignCenter)
unwind_layout.addWidget(title)
unwind_verison_layout = QHBoxLayout()
unwind_verison_layout.addWidget(QLabel("Version: "))
unwind_verison_layout.addWidget(self.unwind_version)
unwind_layout.addLayout(unwind_verison_layout)
unwind_flags_layout = QHBoxLayout()
unwind_flags_layout.addWidget(QLabel("Flags: "))
unwind_flags_layout.addWidget(self.unwind_flags)
unwind_layout.addLayout(unwind_flags_layout)
unwind_exception_handler_layout = QHBoxLayout()
unwind_exception_handler_layout.addWidget(
QLabel("Exception Handler: "))
unwind_exception_handler_layout.addWidget(
self.unwind_exception_handler)
unwind_layout.addLayout(unwind_exception_handler_layout)
unwind_prolog_size_layout = QHBoxLayout()
unwind_prolog_size_layout.addWidget(QLabel("Prolog Size: "))
unwind_prolog_size_layout.addWidget(self.unwind_prolog_size)
unwind_layout.addLayout(unwind_prolog_size_layout)
unwind_code_count_layout = QHBoxLayout()
unwind_code_count_layout.addWidget(QLabel("Code Count: "))
unwind_code_count_layout.addWidget(self.unwind_code_count)
unwind_layout.addLayout(unwind_code_count_layout)
unwind_frame_register_layout = QHBoxLayout()
unwind_frame_register_layout.addWidget(QLabel("Frame Register: "))
unwind_frame_register_layout.addWidget(self.unwind_frame_register)
unwind_layout.addLayout(unwind_frame_register_layout)
unwind_frame_offset_layout = QHBoxLayout()
unwind_frame_offset_layout.addWidget(QLabel("Frame Offset: "))
unwind_frame_offset_layout.addWidget(self.unwind_frame_offset)
unwind_layout.addLayout(unwind_frame_offset_layout)
unwind_codes_layout = QHBoxLayout()
unwind_codes_layout.addWidget(QLabel("Codes: "))
unwind_codes_layout.addWidget(self.unwind_codes)
unwind_layout.addLayout(unwind_codes_layout)
self.dict = {}
self.list = QListWidget()
self.list.currentItemChanged.connect(self.listItemClicked)
ctr = 0
for entry in file.DIRECTORY_ENTRY_EXCEPTION:
item = SEHListItem(file.OPTIONAL_HEADER.ImageBase, entry)
self.list.addItem(item)
self.dict[(file.OPTIONAL_HEADER.ImageBase + entry.struct.BeginAddress,
file.OPTIONAL_HEADER.ImageBase + entry.struct.EndAddress)] = ctr
ctr += 1
list_layout = QHBoxLayout()
list_layout.addWidget(QLabel("Entries: "))
list_layout.addWidget(self.list)
layout.addLayout(header_layout)
layout.addLayout(list_layout)
layout.addLayout(begin_addr_layout)
layout.addLayout(end_addr_layout)
layout.addLayout(unwind_addr_layout)
layout.addLayout(unwind_layout)
self.setLayout(layout)
self.file = file
self.bv = bv
self.notifications = SEHNotifications(self)
def listItemClicked(self, clickedItem):
if clickedItem == None:
self.begin_addr.setAddr(None)
self.end_addr.setAddr(None)
self.unwind_addr.setAddr(None)
self.unwind_version.clear()
self.unwind_flags.clear()
self.unwind_prolog_size.clear()
self.unwind_code_count.clear()
self.unwind_frame_register.clear()
self.unwind_frame_offset.clear()
self.unwind_codes.clear()
self.unwind_exception_handler.clear()
else:
self.begin_addr.setAddr(
self.file.OPTIONAL_HEADER.ImageBase + clickedItem.entry.struct.BeginAddress)
self.end_addr.setAddr(
self.file.OPTIONAL_HEADER.ImageBase + clickedItem.entry.struct.EndAddress)
self.unwind_addr.setAddr(
self.file.OPTIONAL_HEADER.ImageBase + clickedItem.entry.struct.UnwindData)
self.unwind_version.setText(str(clickedItem.entry.unwindinfo.Version))
unwind_flags = []
if clickedItem.entry.unwindinfo.Flags == 0:
unwind_flags.append("UNW_FLAG_NHANDLER")
if clickedItem.entry.unwindinfo.Flags & 1:
unwind_flags.append("UNW_FLAG_EHANDLER")
if clickedItem.entry.unwindinfo.Flags & 2:
unwind_flags.append("UNW_FLAG_UHANDLER")
if clickedItem.entry.unwindinfo.Flags & 4:
unwind_flags.append("UNW_FLAG_CHAININFO")
self.unwind_flags.setText(str(clickedItem.entry.unwindinfo.Flags) + " (" + (", ".join(unwind_flags)) + ")")
if clickedItem.entry.unwindinfo.SizeOfProlog != 0:
self.unwind_prolog_size.setOptText(
str(clickedItem.entry.unwindinfo.SizeOfProlog) + " bytes, ends at: ")
self.unwind_prolog_size.setAddr(self.file.OPTIONAL_HEADER.ImageBase + clickedItem.entry.struct.BeginAddress + clickedItem.entry.unwindinfo.SizeOfProlog)
else:
self.unwind_prolog_size.setOptText(
str(clickedItem.entry.unwindinfo.SizeOfProlog) + " bytes")
self.unwind_prolog_size.setAddr(None)
self.unwind_code_count.setText(
str(clickedItem.entry.unwindinfo.CountOfCodes))
self.unwind_frame_register.setText(
str(clickedItem.entry.unwindinfo.FrameRegister))
self.unwind_frame_offset.setText(
str(clickedItem.entry.unwindinfo.FrameOffset))
codes = ""
for x in clickedItem.entry.unwindinfo.UnwindCodes:
codes += str(x) + '\n'
self.unwind_codes.setText(codes)
if hasattr(clickedItem.entry.unwindinfo, 'ExceptionHandler'):
self.unwind_exception_handler.setAddr(
self.file.OPTIONAL_HEADER.ImageBase + clickedItem.entry.unwindinfo.ExceptionHandler)
else:
self.unwind_exception_handler.clear()
@staticmethod
def createPane(context):
if context.context and context.binaryView and context.binaryView.parent_view:
data = context.binaryView.parent_view.read(
0, context.binaryView.parent_view.length)
widget = SEHWidget(context.binaryView, PE(data=data))
pane = WidgetPane(widget, "Structured Exception Handlers")
context.context.openPane(pane)
@staticmethod
def canCreatePane(context):
if context.context and context.binaryView and context.binaryView.parent_view:
try:
data = context.binaryView.parent_view.read(
0, context.binaryView.parent_view.length)
PE(data=data, fast_load=True)
return True
except PEFormatError:
return False
except:
raise
return False
UIAction.registerAction("SEH Helper")
UIActionHandler.globalActions().bindAction(
"SEH Helper", UIAction(SEHWidget.createPane, SEHWidget.canCreatePane)
)
Menu.mainMenu("Tools").addAction("SEH Helper", "SEH Helper")
```
`plugin.json`:
```json
{
"pluginmetadataversion": 2,
"name": "SEH Helper",
"type": [
"helper",
"ui"
],
"api": [
"python3"
],
"description": "Helper for exploring structured exception handlers in PEs",
"longdescription": "",
"license": {
"name": "MIT",
"text": "Copyright (c) 2022 EliseZeroTwo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
},
"platforms": [
"Darwin",
"Linux",
"Windows"
],
"installinstructions": {
"Darwin": "Install the following pip packages: pefile",
"Linux": "Install the following pip packages: pefile",
"Windows": "Install the following pip packages: pefile"
},
"dependencies": {
"pip": [
"pefile",
"pyside6"
],
"apt": [],
"installers": [],
"other": []
},
"version": "0.2.3",
"author": "EliseZeroTwo",
"minimumbinaryninjaversion": 3164
}
```
`requirements.txt`:
```txt
pefile
```
@@ -0,0 +1,363 @@
Project Path: arc_FuzzySecurity_BinaryNinja-Themes_sfhgioal
Source Tree:
```txt
arc_FuzzySecurity_BinaryNinja-Themes_sfhgioal
├── Images
│ ├── castleton.png
│ ├── light.png
│ └── standard.png
├── README.md
├── gruvbox-b33f-castleton.bntheme
├── gruvbox-b33f-light.bntheme
└── gruvbox-b33f.bntheme
```
`README.md`:
```md
# Binary Ninja Themes
I wanted to briefly share some themes I put together for `Binary Ninja`. This started because I like the `Gruvbox Material` community theme but I had some minor issues with it and I ended up making three themes:
- **gruvbox-b33f**: This one is mostly identical to `Gruvbox Material` but with some small tweaks.
- **gruvbox-b33f-light**: Fully custom light theme.
- **gruvbox-b33f-castleton**: Fully custom green theme.
To install these themes, simply download the bntheme files into the `themes/` subfolder of your [user folder](https://docs.binary.ninja/guide/index.html#user-folder) (you might need to make the folder).
## Demo
### gruvbox b33f
![b33f](Images/standard.png)
### gruvbox b33f light
![b33f-light](Images/light.png)
### gruvbox b33f castleton
![b33f-castleton](Images/castleton.png)
```
`gruvbox-b33f-castleton.bntheme`:
```bntheme
{
"name": "Gruvbox b33f Castleton",
"style": "Fusion",
"colors": {
"CastletonGreen": "#00563f",
"ForestSlate": "#587c72",
"LightCoral": "#ffc6b1",
"Goldenrod": "#daa520",
"LightSeaGreen": "#20b2aa",
"CornflowerBlue": "#6495ed",
"Thistle": "#d8bfd8",
"NeonGold": "#FFD700",
"NeonBlue": "#00FFFF",
"SteelBlue": "#4682b4",
"Tan": "#d2b48c",
"OliveDrab": "#6b8e23",
"Rose": "#ff637f",
"Cerulean": "#007ba7",
"Amber": "#ffbf00",
"Emerald": "#50c878"
},
"palette": {
"Window": ["~", "CastletonGreen", "ForestSlate", 240],
"WindowText": "LightCoral",
"Base": "CastletonGreen",
"AlternateBase": "NeonBlue",
"ToolTipBase": "CastletonGreen",
"ToolTipText": "LightCoral",
"Text": "LightCoral",
"Button": "CastletonGreen",
"ButtonText": "LightCoral",
"BrightText": "Rose",
"Link": "LightSeaGreen",
"Highlight": "Amber",
"HighlightedText": "ForestSlate",
"Light": "CornflowerBlue"
},
"theme-colors": {
"addressColor": "Emerald",
"modifiedColor": "Rose",
"insertedColor": "CornflowerBlue",
"notPresentColor": "Thistle",
"selectionColor": ["~", "Amber", "CastletonGreen", 110],
"outlineColor": "Amber",
"backgroundHighlightDarkColor": "CastletonGreen",
"backgroundHighlightLightColor": "CastletonGreen",
"boldBackgroundHighlightDarkColor": "NeonGold",
"boldBackgroundHighlightLightColor": "Tan",
"alphanumericHighlightColor": "CornflowerBlue",
"printableHighlightColor": "Goldenrod",
"graphBackgroundDarkColor": "CastletonGreen",
"graphBackgroundLightColor": "CastletonGreen",
"graphNodeDarkColor": "CastletonGreen",
"graphNodeLightColor": "CastletonGreen",
"graphNodeOutlineColor": "CornflowerBlue",
"trueBranchColor": "Emerald",
"falseBranchColor": "Rose",
"unconditionalBranchColor": "CornflowerBlue",
"altTrueBranchColor": "LightSeaGreen",
"altFalseBranchColor": "Rose",
"altUnconditionalBranchColor": "CornflowerBlue",
"registerColor": "Rose",
"numberColor": "Goldenrod",
"codeSymbolColor": "Emerald",
"dataSymbolColor": "Thistle",
"stackVariableColor": "NeonBlue",
"importColor": "Tan",
"instructionHighlightColor": ["~", "NeonBlue", "CastletonGreen", 50],
"tokenHighlightColor": "Thistle",
"annotationColor": "ForestSlate",
"opcodeColor": "CornflowerBlue",
"linearDisassemblyFunctionHeaderColor": "CastletonGreen",
"linearDisassemblyBlockColor": "CastletonGreen",
"linearDisassemblyNoteColor": "CastletonGreen",
"linearDisassemblySeparatorColor": "Cerulean",
"stringColor": "Amber",
"typeNameColor": "LightSeaGreen",
"fieldNameColor": "SteelBlue",
"keywordColor": "Emerald",
"uncertainColor": "CornflowerBlue",
"scriptConsoleOutputColor": "ForestSlate",
"scriptConsoleErrorColor": "Rose",
"scriptConsoleEchoColor": "LightSeaGreen",
"blueStandardHighlightColor": "CornflowerBlue",
"greenStandardHighlightColor": "Emerald",
"cyanStandardHighlightColor": "LightSeaGreen",
"redStandardHighlightColor": "Rose",
"magentaStandardHighlightColor": "Thistle",
"yellowStandardHighlightColor": "Goldenrod",
"orangeStandardHighlightColor": "Tan",
"whiteStandardHighlightColor": "ForestSlate",
"blackStandardHighlightColor": "NeonBlue"
}
}
```
`gruvbox-b33f-light.bntheme`:
```bntheme
{
"name": "Gruvbox b33f Light",
"style": "Fusion",
"colors": {
"MediumGrey": "#757575",
"Cream": "#e5dbca",
"Salmon": "#ffaaa5",
"Peach": "#ffb07c",
"Yellow": "#ffcc7a",
"Lime": "#dfec9d",
"Seafoam": "#97d28d",
"Sky": "#7eb9df",
"Lavender": "#f989a8",
"PaleSkyBlue": "#d9f9ff",
"Taupe": "#c1a07f",
"Moss": "#9aa36d"
},
"palette": {
"Window": [
"~",
"Cream",
"MediumGrey",
240
],
"WindowText": "Cream",
"Base": "MediumGrey",
"AlternateBase": "Taupe",
"ToolTipBase": "MediumGrey",
"ToolTipText": "Sky",
"Text": "Cream",
"Button": "MediumGrey",
"ButtonText": "Sky",
"BrightText": "Taupe",
"Link": "Lime",
"Highlight": "Sky",
"HighlightedText": "MediumGrey",
"Light": "Sky"
},
"theme-colors": {
"addressColor": "Lime",
"modifiedColor": "Salmon",
"insertedColor": "Sky",
"notPresentColor": "Sky",
"selectionColor": "Moss",
"outlineColor": "Lime",
"backgroundHighlightDarkColor": "MediumGrey",
"backgroundHighlightLightColor": "MediumGrey",
"boldBackgroundHighlightDarkColor": "PaleSkyBlue",
"boldBackgroundHighlightLightColor": "Salmon",
"alphanumericHighlightColor": "Sky",
"printableHighlightColor": "Yellow",
"graphBackgroundDarkColor": "MediumGrey",
"graphBackgroundLightColor": "MediumGrey",
"graphNodeDarkColor": "MediumGrey",
"graphNodeLightColor": "MediumGrey",
"graphNodeOutlineColor": "Sky",
"trueBranchColor": "Lime",
"falseBranchColor": "Salmon",
"unconditionalBranchColor": "Sky",
"altTrueBranchColor": "Sky",
"altFalseBranchColor": "Salmon",
"altUnconditionalBranchColor": "Sky",
"registerColor": "Salmon",
"numberColor": "Yellow",
"codeSymbolColor": "Lime",
"dataSymbolColor": "Lavender",
"stackVariableColor": [
"+",
"Cream",
"Sky"
],
"importColor": "Peach",
"instructionHighlightColor": [
"~",
"Taupe",
"MediumGrey",
50
],
"tokenHighlightColor": "Lavender",
"annotationColor": "Cream",
"opcodeColor": "Sky",
"linearDisassemblyFunctionHeaderColor": "MediumGrey",
"linearDisassemblyBlockColor": "MediumGrey",
"linearDisassemblyNoteColor": "MediumGrey",
"linearDisassemblySeparatorColor": "Sky",
"stringColor": "Yellow",
"typeNameColor": "Peach",
"fieldNameColor": "PaleSkyBlue",
"keywordColor": "Lime",
"uncertainColor": "Sky",
"scriptConsoleOutputColor": "Cream",
"scriptConsoleErrorColor": "Salmon",
"scriptConsoleEchoColor": "Lime",
"blueStandardHighlightColor": "PaleSkyBlue",
"greenStandardHighlightColor": "Lime",
"cyanStandardHighlightColor": "Sky",
"redStandardHighlightColor": "Salmon",
"magentaStandardHighlightColor": "Lavender",
"yellowStandardHighlightColor": "Yellow",
"orangeStandardHighlightColor": "Peach",
"whiteStandardHighlightColor": "Cream",
"blackStandardHighlightColor": "MediumGrey"
}
}
```
`gruvbox-b33f.bntheme`:
```bntheme
{
"name": "Gruvbox b33f",
"style": "Fusion",
"colors": {
"Charcoal": "#32302f",
"Wheat": "#d4be98",
"CoralRed": "#ea6962",
"BurntSienna": "#e78a4e",
"OldGold": "#d8a657",
"SageGreen": "#a9b665",
"MintCream": "#89b482",
"PowderBlue": "#7daea3",
"OldRose": "#d3869b",
"SeashellPink": "#ffe3d0",
"TaupeGrey": "#928374",
"OliveDrab": "#59572b"
},
"palette": {
"Window": [
"~",
"Wheat",
"Charcoal",
240
],
"WindowText": "Wheat",
"Base": "Charcoal",
"AlternateBase": "TaupeGrey",
"ToolTipBase": "Charcoal",
"ToolTipText": "PowderBlue",
"Text": "Wheat",
"Button": "Charcoal",
"ButtonText": "PowderBlue",
"BrightText": "TaupeGrey",
"Link": "SageGreen",
"Highlight": "PowderBlue",
"HighlightedText": "Charcoal",
"Light": "PowderBlue"
},
"theme-colors": {
"addressColor": "SageGreen",
"modifiedColor": "CoralRed",
"insertedColor": "PowderBlue",
"notPresentColor": "PowderBlue",
"selectionColor": "OliveDrab",
"outlineColor": "SageGreen",
"backgroundHighlightDarkColor": "Charcoal",
"backgroundHighlightLightColor": "Charcoal",
"boldBackgroundHighlightDarkColor": "SeashellPink",
"boldBackgroundHighlightLightColor": "CoralRed",
"alphanumericHighlightColor": "PowderBlue",
"printableHighlightColor": "OldGold",
"graphBackgroundDarkColor": "Charcoal",
"graphBackgroundLightColor": "Charcoal",
"graphNodeDarkColor": "Charcoal",
"graphNodeLightColor": "Charcoal",
"graphNodeOutlineColor": "PowderBlue",
"trueBranchColor": "SageGreen",
"falseBranchColor": "CoralRed",
"unconditionalBranchColor": "PowderBlue",
"altTrueBranchColor": "PowderBlue",
"altFalseBranchColor": "CoralRed",
"altUnconditionalBranchColor": "PowderBlue",
"registerColor": "CoralRed",
"numberColor": "OldGold",
"codeSymbolColor": "SageGreen",
"dataSymbolColor": "OldRose",
"stackVariableColor": [
"+",
"Wheat",
"PowderBlue"
],
"importColor": "BurntSienna",
"instructionHighlightColor": [
"~",
"TaupeGrey",
"Charcoal",
50
],
"tokenHighlightColor": "OldRose",
"annotationColor": "Wheat",
"opcodeColor": "PowderBlue",
"linearDisassemblyFunctionHeaderColor": "Charcoal",
"linearDisassemblyBlockColor": "Charcoal",
"linearDisassemblyNoteColor": "Charcoal",
"linearDisassemblySeparatorColor": "PowderBlue",
"stringColor": "OldGold",
"typeNameColor": "BurntSienna",
"fieldNameColor": "SeashellPink",
"keywordColor": "SageGreen",
"uncertainColor": "PowderBlue",
"scriptConsoleOutputColor": "Wheat",
"scriptConsoleErrorColor": "CoralRed",
"scriptConsoleEchoColor": "SageGreen",
"blueStandardHighlightColor": "SeashellPink",
"greenStandardHighlightColor": "SageGreen",
"cyanStandardHighlightColor": "PowderBlue",
"redStandardHighlightColor": "CoralRed",
"magentaStandardHighlightColor": "OldRose",
"yellowStandardHighlightColor": "OldGold",
"orangeStandardHighlightColor": "BurntSienna",
"whiteStandardHighlightColor": "Wheat",
"blackStandardHighlightColor": "Charcoal"
}
}
```
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff