| # Untested, but could be used to generate a script to annotate a binary for GDB | |
| # Run this script inside of the snippet editor to create a shell script | |
| output = "#!/bin/bash\n" | |
| for sym in bv.get_symbols(): | |
| flags = ",global" | |
| if sym.type == SymbolType.FunctionSymbol: | |
| flags += ",function" | |
| output += f"objcopy input --add-symbol {sym.name}=.text:{hex(sym.address)}{flags} output; mv output input;\n" | |
| outputfile = get_save_filename_input("script command") | |
| if outputfile: |
| # SEE: https://github.com/Vector35/binaryninja-api/blob/dev/python/examples/make_code.py |
| # Copyright (c) 2022 Vector 35 Inc | |
| # | |
| # 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 |
| #copy types -- cannot be run as a snippet. Copy into console switch tabs, run again | |
| if 'saved_types' in globals() or 'saved_types' in locals(): | |
| log_info("Adding types...") | |
| for t in saved_types: | |
| bv.define_user_type(t[0], t[1]) | |
| del saved_types | |
| else: | |
| log_info("Copying types...") | |
| saved_types = [ (x, bv.types[x]) for x in bv.type_names if not bv.is_type_auto_defined(x) ] |
| from binaryninja import Transform | |
| from binaryninja.enums import TransformType | |
| class HASHA(Transform): | |
| name = 'HASHA' | |
| long_name = 'ALWAYS RETURN A' | |
| transform_type = TransformType.HashTransform | |
| def perform_decode(self, data, params): | |
| return b"AAAAA" |
| function processResumes() | |
| { | |
| /* Configuration */ | |
| var labelToSave = 'Resumes'; | |
| var labelToMarkSaved = 'Resumes/Saved'; | |
| var labelBroken = 'Resumes/Saved/Broken'; | |
| var resumeFolderID = 'INSERTYOURFOLDERIDHERE'; | |
| // Folder ID can be found just by browsing to the folder in google drive | |
| /* Configuration Goes Here */ | |
My recommended settings for setting up a slack that you plan to allow public access to. Methods for adding public users include third-party utilities like slackin (https://github.com/emedvedev/slackin-extended) which enable active user badges, or simpler methods such as using the Share Invite Link from slack itself.
If you only do two things, make it these two: Make sure to disable all app integrations. There's a bunch that aren't secure for public slacks. Either deny all, or require review by an admin: https://YOURSLACK.slack.com/apps/manage/permissions Second, disable email in the profile view: https://binaryninja.slack.com/admin/settings#display_email_addresses
The reset are optional settings that may or may not be required depending on the slack:
| #!/usr/bin/env python3 | |
| from binaryninja import * | |
| import glob, sys, os | |
| if len(sys.argv) > 1: | |
| path = sys.argv[1:] | |
| else: | |
| path = ["/bin/ls"] | |
| for arg in path: | |
| for f in [x for x in glob.glob(arg) if os.path.isfile(x) and os.access(x, os.R_OK)]: |
| # Quick and dirty BN script for part of the whooo-r-u challenge during DEFCON Quals 2020. | |
| # Used to identify likely environment variables and library names that were | |
| # fed to other fuzzing sripts for SUID abuse | |
| from binaryninja import * | |
| import os | |
| from pprint import pprint | |
| import json | |
| libname = "getenv" #re-ran the script with different arguments, not elegant, but it's CTF and both take a string in the first parameter... |