# 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: |
# 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) ] |
# SEE: https://github.com/Vector35/binaryninja-api/blob/dev/python/examples/make_code.py |
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 */ | |
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" |
############################################################################# | |
## | |
## Copyright (C) 2017 The Qt Company Ltd. | |
## Contact: http://www.qt.io/licensing/ | |
## | |
## This file is part of the Qt for Python examples of the Qt Toolkit. | |
## | |
## $QT_BEGIN_LICENSE:BSD$ | |
## You may use this file under the terms of the BSD license as follows: |
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)]: |